aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/command-rebase.yml7
-rw-r--r--.github/workflows/node.yml7
-rw-r--r--.github/workflows/s3-external.yml2
m---------3rdparty0
-rw-r--r--apps/dashboard/css/dashboard.scss52
-rw-r--r--apps/dashboard/l10n/es.js1
-rw-r--r--apps/dashboard/l10n/es.json1
-rw-r--r--apps/dashboard/lib/Service/BackgroundService.php1
-rw-r--r--apps/dashboard/src/DashboardApp.vue (renamed from apps/dashboard/src/App.vue)116
-rw-r--r--apps/dashboard/src/components/BackgroundSettings.vue4
-rw-r--r--apps/dashboard/src/main.js4
-rw-r--r--apps/dav/l10n/de.js1
-rw-r--r--apps/dav/l10n/de.json1
-rw-r--r--apps/encryption/l10n/de_DE.js2
-rw-r--r--apps/encryption/l10n/de_DE.json2
-rw-r--r--apps/federatedfilesharing/css/settings-personal.scss7
-rw-r--r--apps/federatedfilesharing/templates/settings-personal.php6
-rw-r--r--apps/files/l10n/de_DE.js2
-rw-r--r--apps/files/l10n/de_DE.json2
-rw-r--r--apps/files_external/l10n/it.js2
-rw-r--r--apps/files_external/l10n/it.json2
-rw-r--r--apps/files_sharing/l10n/it.js2
-rw-r--r--apps/files_sharing/l10n/it.json2
-rw-r--r--apps/settings/l10n/ar.js2
-rw-r--r--apps/settings/l10n/ar.json2
-rw-r--r--apps/settings/l10n/ast.js1
-rw-r--r--apps/settings/l10n/ast.json1
-rw-r--r--apps/settings/l10n/bg.js11
-rw-r--r--apps/settings/l10n/bg.json11
-rw-r--r--apps/settings/l10n/br.js8
-rw-r--r--apps/settings/l10n/br.json8
-rw-r--r--apps/settings/l10n/ca.js11
-rw-r--r--apps/settings/l10n/ca.json11
-rw-r--r--apps/settings/l10n/cs.js14
-rw-r--r--apps/settings/l10n/cs.json14
-rw-r--r--apps/settings/l10n/da.js11
-rw-r--r--apps/settings/l10n/da.json11
-rw-r--r--apps/settings/l10n/de.js16
-rw-r--r--apps/settings/l10n/de.json16
-rw-r--r--apps/settings/l10n/de_DE.js27
-rw-r--r--apps/settings/l10n/de_DE.json27
-rw-r--r--apps/settings/l10n/el.js11
-rw-r--r--apps/settings/l10n/el.json11
-rw-r--r--apps/settings/l10n/en_GB.js3
-rw-r--r--apps/settings/l10n/en_GB.json3
-rw-r--r--apps/settings/l10n/eo.js7
-rw-r--r--apps/settings/l10n/eo.json7
-rw-r--r--apps/settings/l10n/es.js11
-rw-r--r--apps/settings/l10n/es.json11
-rw-r--r--apps/settings/l10n/es_419.js2
-rw-r--r--apps/settings/l10n/es_419.json2
-rw-r--r--apps/settings/l10n/es_AR.js2
-rw-r--r--apps/settings/l10n/es_AR.json2
-rw-r--r--apps/settings/l10n/es_CL.js2
-rw-r--r--apps/settings/l10n/es_CL.json2
-rw-r--r--apps/settings/l10n/es_CO.js2
-rw-r--r--apps/settings/l10n/es_CO.json2
-rw-r--r--apps/settings/l10n/es_CR.js2
-rw-r--r--apps/settings/l10n/es_CR.json2
-rw-r--r--apps/settings/l10n/es_DO.js2
-rw-r--r--apps/settings/l10n/es_DO.json2
-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_GT.js2
-rw-r--r--apps/settings/l10n/es_GT.json2
-rw-r--r--apps/settings/l10n/es_HN.js2
-rw-r--r--apps/settings/l10n/es_HN.json2
-rw-r--r--apps/settings/l10n/es_MX.js2
-rw-r--r--apps/settings/l10n/es_MX.json2
-rw-r--r--apps/settings/l10n/es_NI.js2
-rw-r--r--apps/settings/l10n/es_NI.json2
-rw-r--r--apps/settings/l10n/es_PA.js2
-rw-r--r--apps/settings/l10n/es_PA.json2
-rw-r--r--apps/settings/l10n/es_PE.js2
-rw-r--r--apps/settings/l10n/es_PE.json2
-rw-r--r--apps/settings/l10n/es_PR.js2
-rw-r--r--apps/settings/l10n/es_PR.json2
-rw-r--r--apps/settings/l10n/es_PY.js2
-rw-r--r--apps/settings/l10n/es_PY.json2
-rw-r--r--apps/settings/l10n/es_SV.js2
-rw-r--r--apps/settings/l10n/es_SV.json2
-rw-r--r--apps/settings/l10n/es_UY.js2
-rw-r--r--apps/settings/l10n/es_UY.json2
-rw-r--r--apps/settings/l10n/et_EE.js1
-rw-r--r--apps/settings/l10n/et_EE.json1
-rw-r--r--apps/settings/l10n/eu.js11
-rw-r--r--apps/settings/l10n/eu.json11
-rw-r--r--apps/settings/l10n/fa.js9
-rw-r--r--apps/settings/l10n/fa.json9
-rw-r--r--apps/settings/l10n/fi.js11
-rw-r--r--apps/settings/l10n/fi.json11
-rw-r--r--apps/settings/l10n/fr.js11
-rw-r--r--apps/settings/l10n/fr.json11
-rw-r--r--apps/settings/l10n/gl.js11
-rw-r--r--apps/settings/l10n/gl.json11
-rw-r--r--apps/settings/l10n/he.js11
-rw-r--r--apps/settings/l10n/he.json11
-rw-r--r--apps/settings/l10n/hr.js11
-rw-r--r--apps/settings/l10n/hr.json11
-rw-r--r--apps/settings/l10n/hu.js14
-rw-r--r--apps/settings/l10n/hu.json14
-rw-r--r--apps/settings/l10n/id.js1
-rw-r--r--apps/settings/l10n/id.json1
-rw-r--r--apps/settings/l10n/is.js9
-rw-r--r--apps/settings/l10n/is.json9
-rw-r--r--apps/settings/l10n/it.js11
-rw-r--r--apps/settings/l10n/it.json11
-rw-r--r--apps/settings/l10n/ja.js11
-rw-r--r--apps/settings/l10n/ja.json11
-rw-r--r--apps/settings/l10n/ka_GE.js2
-rw-r--r--apps/settings/l10n/ka_GE.json2
-rw-r--r--apps/settings/l10n/ko.js3
-rw-r--r--apps/settings/l10n/ko.json3
-rw-r--r--apps/settings/l10n/lt_LT.js11
-rw-r--r--apps/settings/l10n/lt_LT.json11
-rw-r--r--apps/settings/l10n/lv.js1
-rw-r--r--apps/settings/l10n/lv.json1
-rw-r--r--apps/settings/l10n/mk.js10
-rw-r--r--apps/settings/l10n/mk.json10
-rw-r--r--apps/settings/l10n/nb.js5
-rw-r--r--apps/settings/l10n/nb.json5
-rw-r--r--apps/settings/l10n/nl.js11
-rw-r--r--apps/settings/l10n/nl.json11
-rw-r--r--apps/settings/l10n/oc.js2
-rw-r--r--apps/settings/l10n/oc.json2
-rw-r--r--apps/settings/l10n/pl.js15
-rw-r--r--apps/settings/l10n/pl.json15
-rw-r--r--apps/settings/l10n/pt_BR.js11
-rw-r--r--apps/settings/l10n/pt_BR.json11
-rw-r--r--apps/settings/l10n/pt_PT.js3
-rw-r--r--apps/settings/l10n/pt_PT.json3
-rw-r--r--apps/settings/l10n/ro.js1
-rw-r--r--apps/settings/l10n/ro.json1
-rw-r--r--apps/settings/l10n/ru.js11
-rw-r--r--apps/settings/l10n/ru.json11
-rw-r--r--apps/settings/l10n/sc.js10
-rw-r--r--apps/settings/l10n/sc.json10
-rw-r--r--apps/settings/l10n/sk.js11
-rw-r--r--apps/settings/l10n/sk.json11
-rw-r--r--apps/settings/l10n/sl.js11
-rw-r--r--apps/settings/l10n/sl.json11
-rw-r--r--apps/settings/l10n/sq.js3
-rw-r--r--apps/settings/l10n/sq.json3
-rw-r--r--apps/settings/l10n/sr.js11
-rw-r--r--apps/settings/l10n/sr.json11
-rw-r--r--apps/settings/l10n/sv.js11
-rw-r--r--apps/settings/l10n/sv.json11
-rw-r--r--apps/settings/l10n/th.js3
-rw-r--r--apps/settings/l10n/th.json3
-rw-r--r--apps/settings/l10n/tr.js15
-rw-r--r--apps/settings/l10n/tr.json15
-rw-r--r--apps/settings/l10n/uk.js3
-rw-r--r--apps/settings/l10n/uk.json3
-rw-r--r--apps/settings/l10n/zh_CN.js11
-rw-r--r--apps/settings/l10n/zh_CN.json11
-rw-r--r--apps/settings/l10n/zh_HK.js15
-rw-r--r--apps/settings/l10n/zh_HK.json15
-rw-r--r--apps/settings/l10n/zh_TW.js15
-rw-r--r--apps/settings/l10n/zh_TW.json15
-rw-r--r--apps/settings/lib/Controller/CheckSetupController.php2
-rw-r--r--apps/settings/src/components/AppList.vue6
-rw-r--r--apps/settings/templates/settings/admin/server.php10
-rw-r--r--apps/theming/css/default.css16
-rw-r--r--apps/theming/img/default-source.svg13
-rw-r--r--apps/theming/img/default.jpgbin391078 -> 57394 bytes
-rw-r--r--apps/theming/img/light.jpgbin0 -> 391078 bytes
-rw-r--r--apps/theming/l10n/bg.js7
-rw-r--r--apps/theming/l10n/bg.json7
-rw-r--r--apps/theming/l10n/de_DE.js2
-rw-r--r--apps/theming/l10n/de_DE.json2
-rw-r--r--apps/theming/l10n/fi.js7
-rw-r--r--apps/theming/l10n/fi.json7
-rw-r--r--apps/theming/l10n/hu.js7
-rw-r--r--apps/theming/l10n/hu.json7
-rw-r--r--apps/theming/l10n/it.js7
-rw-r--r--apps/theming/l10n/it.json7
-rw-r--r--apps/theming/l10n/pl.js7
-rw-r--r--apps/theming/l10n/pl.json7
-rw-r--r--apps/theming/l10n/zh_TW.js7
-rw-r--r--apps/theming/l10n/zh_TW.json7
-rw-r--r--apps/theming/lib/Service/ThemesService.php3
-rw-r--r--apps/theming/lib/Themes/DarkTheme.php5
-rw-r--r--apps/theming/lib/Themes/DefaultTheme.php20
-rw-r--r--apps/theming/lib/Themes/LightTheme.php61
-rw-r--r--apps/theming/tests/Controller/UserThemeControllerTest.php3
-rw-r--r--apps/theming/tests/Service/ThemesServiceTest.php11
-rw-r--r--apps/theming/tests/Themes/DefaultThemeTest.php8
-rw-r--r--apps/updatenotification/l10n/bg.js4
-rw-r--r--apps/updatenotification/l10n/bg.json4
-rw-r--r--apps/updatenotification/l10n/de.js2
-rw-r--r--apps/updatenotification/l10n/de.json2
-rw-r--r--apps/updatenotification/l10n/it.js1
-rw-r--r--apps/updatenotification/l10n/it.json1
-rw-r--r--apps/user_status/css/user-status-menu.scss8
-rw-r--r--apps/user_status/src/views/Dashboard.vue14
-rw-r--r--apps/weather_status/l10n/bg.js26
-rw-r--r--apps/weather_status/l10n/bg.json26
-rw-r--r--apps/weather_status/l10n/de.js2
-rw-r--r--apps/weather_status/l10n/de.json2
-rw-r--r--apps/weather_status/src/App.vue3
-rw-r--r--build/integration/sharing_features/sharing-v1-video-verification.feature2
-rw-r--r--composer.json3
-rw-r--r--composer.lock60
-rw-r--r--config/config.sample.php2
-rw-r--r--core/Command/Db/Migrations/GenerateCommand.php32
-rw-r--r--core/Migrations/Version24000Date20220202150027.php (renamed from core/Migrations/Version240000Date20220202150027.php)2
-rw-r--r--core/Migrations/Version24000Date20220404230027.php (renamed from core/Migrations/Version240000Date20220404230027.php)4
-rw-r--r--core/Migrations/Version24000Date20220425072957.php53
-rw-r--r--core/css/apps.scss1
-rw-r--r--core/l10n/bg.js2
-rw-r--r--core/l10n/bg.json2
-rw-r--r--core/l10n/de.js2
-rw-r--r--core/l10n/de.json2
-rw-r--r--core/l10n/de_DE.js16
-rw-r--r--core/l10n/de_DE.json16
-rw-r--r--core/l10n/it.js7
-rw-r--r--core/l10n/it.json7
-rw-r--r--core/l10n/vi.js1
-rw-r--r--core/l10n/vi.json1
-rw-r--r--core/src/profile.js5
-rw-r--r--cron.php2
-rw-r--r--dist/core-profile.js4
-rw-r--r--dist/core-profile.js.map2
-rw-r--r--dist/dashboard-main.js4
-rw-r--r--dist/dashboard-main.js.map2
-rw-r--r--dist/settings-apps-view-418.js4
-rw-r--r--dist/settings-apps-view-418.js.map2
-rw-r--r--dist/settings-vue-settings-apps-users-management.js4
-rw-r--r--dist/settings-vue-settings-apps-users-management.js.map2
-rw-r--r--dist/user_status-dashboard.js4
-rw-r--r--dist/user_status-dashboard.js.map2
-rw-r--r--dist/weather_status-weather-status.js4
-rw-r--r--dist/weather_status-weather-status.js.map2
-rw-r--r--lib/composer/autoload.php5
-rw-r--r--lib/composer/composer/autoload_classmap.php7
-rw-r--r--lib/composer/composer/autoload_real.php4
-rw-r--r--lib/composer/composer/autoload_static.php7
-rw-r--r--lib/composer/composer/installed.json59
-rw-r--r--lib/composer/composer/installed.php13
-rw-r--r--lib/composer/composer/platform_check.php26
-rw-r--r--lib/composer/mexitek/phpcolors/.editorconfig17
-rw-r--r--lib/composer/mexitek/phpcolors/.gitignore5
-rw-r--r--lib/composer/mexitek/phpcolors/.phpcs.xml10
-rw-r--r--lib/composer/mexitek/phpcolors/.travis.yml11
-rw-r--r--lib/composer/mexitek/phpcolors/LICENSE21
-rw-r--r--lib/composer/mexitek/phpcolors/README.md173
-rw-r--r--lib/composer/mexitek/phpcolors/composer.json37
-rw-r--r--lib/composer/mexitek/phpcolors/demo/demo.php94
-rw-r--r--lib/composer/mexitek/phpcolors/demo/phpColor-demo.pngbin27634 -> 0 bytes
-rw-r--r--lib/composer/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php801
-rw-r--r--lib/composer/mexitek/phpcolors/tests/bootstrap.php11
-rw-r--r--lib/composer/mexitek/phpcolors/tests/colorAnalyze.phpt35
-rw-r--r--lib/composer/mexitek/phpcolors/tests/colorChange.phpt28
-rw-r--r--lib/composer/mexitek/phpcolors/tests/colorComplementary.phpt28
-rw-r--r--lib/composer/mexitek/phpcolors/tests/colorConvertHslToHex.phpt72
-rw-r--r--lib/composer/mexitek/phpcolors/tests/colorConvertNameToHex.phpt170
-rw-r--r--lib/composer/mexitek/phpcolors/tests/colorConvertRgbToHex.phpt72
-rw-r--r--lib/composer/mexitek/phpcolors/tests/colorInput.phpt19
-rw-r--r--lib/composer/mexitek/phpcolors/tests/colorMix.phpt24
-rw-r--r--lib/l10n/de_DE.js9
-rw-r--r--lib/l10n/de_DE.json9
-rw-r--r--lib/l10n/nn_NO.js7
-rw-r--r--lib/l10n/nn_NO.json7
-rw-r--r--lib/l10n/pl.js1
-rw-r--r--lib/l10n/pl.json1
-rw-r--r--lib/l10n/tr.js1
-rw-r--r--lib/l10n/tr.json1
-rw-r--r--lib/l10n/zh_HK.js1
-rw-r--r--lib/l10n/zh_HK.json1
-rw-r--r--lib/l10n/zh_TW.js1
-rw-r--r--lib/l10n/zh_TW.json1
-rw-r--r--lib/private/AllConfig.php133
-rw-r--r--lib/private/BackgroundJob/JobList.php2
-rw-r--r--lib/private/DB/QueryBuilder/QueryBuilder.php2
-rw-r--r--lib/private/Files/Cache/SearchBuilder.php11
-rw-r--r--lib/private/Files/Config/UserMountCache.php2
-rw-r--r--lib/private/Files/SetupManager.php4
-rw-r--r--lib/private/Files/View.php22
-rw-r--r--lib/private/L10N/L10NString.php8
-rw-r--r--lib/private/Metadata/FileEventListener.php23
-rw-r--r--lib/private/Metadata/FileMetadata.php2
-rw-r--r--lib/private/TemplateLayout.php4
-rw-r--r--lib/private/User/LazyUser.php149
-rw-r--r--lib/private/legacy/OC_Util.php9
-rw-r--r--lib/public/DB/QueryBuilder/IQueryBuilder.php2
-rw-r--r--tests/lib/AllConfigTest.php9
-rw-r--r--tests/lib/BackgroundJob/DummyJobList.php2
-rw-r--r--tests/lib/L10N/L10nTest.php7
-rw-r--r--version.php2
289 files changed, 1463 insertions, 2532 deletions
diff --git a/.github/workflows/command-rebase.yml b/.github/workflows/command-rebase.yml
index 80037056f8d..a99b3d6336f 100644
--- a/.github/workflows/command-rebase.yml
+++ b/.github/workflows/command-rebase.yml
@@ -18,7 +18,7 @@ jobs:
steps:
- name: Add reaction on start
- uses: peter-evans/create-or-update-comment@v1
+ uses: peter-evans/create-or-update-comment@v2
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }}
@@ -31,13 +31,16 @@ jobs:
fetch-depth: 0
token: ${{ secrets.COMMAND_BOT_PAT }}
+ - name: Fix permissions
+ run: git config --global --add safe.directory /github/workspace
+
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.5
env:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
- name: Add reaction on failure
- uses: peter-evans/create-or-update-comment@v1
+ uses: peter-evans/create-or-update-comment@v2
if: failure()
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml
index 4b20eb5ed02..bb3bbf5209b 100644
--- a/.github/workflows/node.yml
+++ b/.github/workflows/node.yml
@@ -9,6 +9,7 @@ on:
pull_request:
push:
branches:
+ - main
- master
- stable*
@@ -19,17 +20,17 @@ jobs:
name: node
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Read package.json node and npm engines version
- uses: skjnldsv/read-package-engines-version-actions@v1.1
+ uses: skjnldsv/read-package-engines-version-actions@v1.2
id: versions
with:
fallbackNode: '^12'
fallbackNpm: '^6'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
diff --git a/.github/workflows/s3-external.yml b/.github/workflows/s3-external.yml
index dedab6b0c16..8c2cdd7cfd1 100644
--- a/.github/workflows/s3-external.yml
+++ b/.github/workflows/s3-external.yml
@@ -55,7 +55,7 @@ jobs:
php -S localhost:8080 &
- name: PHPUnit
run: |
- echo "<?php return ['run' => true,'hostname' => 'localhost','key' => 'minio','secret' => 'minio123', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php
+ echo "<?php return ['run' => true, 'secret' => 'actually-not-secret', 'passwordsalt' => 'actually-not-secret', 'hostname' => 'localhost','key' => 'minio','secret' => 'minio123', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/Amazons3Test.php
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/VersionedAmazonS3Test.php
- name: S3 logs
diff --git a/3rdparty b/3rdparty
-Subproject 6176112be9428026897d958dc2b558d1bde4fec
+Subproject 178ffea6b4c68f951e31df600f8929ee5466fd6
diff --git a/apps/dashboard/css/dashboard.scss b/apps/dashboard/css/dashboard.scss
index aade857464b..f8b8ec24037 100644
--- a/apps/dashboard/css/dashboard.scss
+++ b/apps/dashboard/css/dashboard.scss
@@ -54,55 +54,3 @@
#appmenu li a:focus::before {
display: none !important;
}
-
-$has-custom-logo: variable_exists('theming-logo-mime') and $theming-logo-mime != '';
-
-body.dashboard--inverted:not(.dashboard--dark) {
- // Do not invert the default logo
- @if ($has-custom-logo == false) {
- $image-logo: url(icon-color-path('logo', 'logo', #ffffff, 1, true));
- #header .logo {
- background-image: $image-logo !important;
- opacity: 1;
- }
- }
-
- #app-dashboard > h2 {
- color: #fff;
- }
- #appmenu li span {
- color: #fff;
- }
- #appmenu svg image {
- filter: invert(0);
- }
- #appmenu .icon-more-white,
- .header-right > div:not(#settings) > *:first-child {
- filter: invert(1) hue-rotate(180deg);
- }
-}
-
-body.dashboard--dark:not(.dashboard--inverted) {
- // invert the default logo
- @if ($has-custom-logo == false) {
- $image-logo: url(icon-color-path('logo', 'logo', #000000, 1, true));
- #header .logo {
- background-image: $image-logo !important;
- opacity: 1;
- }
- }
-
- #app-dashboard > h2 {
- color: #000;
- }
- #appmenu li span {
- color: #000;
- }
- #appmenu svg {
- filter: invert(1) hue-rotate(180deg) !important;
- }
- #appmenu .icon-more-white,
- .header-right > div:not(#settings) > *:first-child {
- filter: invert(1) hue-rotate(180deg) !important;
- }
-}
diff --git a/apps/dashboard/l10n/es.js b/apps/dashboard/l10n/es.js
index 07296a9fe0e..672006818f3 100644
--- a/apps/dashboard/l10n/es.js
+++ b/apps/dashboard/l10n/es.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Dashboard" : "Dashboard",
"Dashboard app" : "App Dashboard",
+ "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Comienza tu día informado\n\nEl Dashboard de Nextcloud es tu punto de partida del día, dándote un\nresumen de tus próximas citas, emails urgentes, mensajes de chat,\npróximos tickets, últimos tweets y mucho más! Los usuarios pueden agregr widgets\nque le gusten y cambiar el fondo a su gusto.",
"Customize" : "Personalizar",
"Edit widgets" : "Editar widgets",
"Get more widgets from the App Store" : "Conseguir más widgets desde la tienda de Apps",
diff --git a/apps/dashboard/l10n/es.json b/apps/dashboard/l10n/es.json
index ca48f4825aa..6d947c71e0b 100644
--- a/apps/dashboard/l10n/es.json
+++ b/apps/dashboard/l10n/es.json
@@ -1,6 +1,7 @@
{ "translations": {
"Dashboard" : "Dashboard",
"Dashboard app" : "App Dashboard",
+ "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Comienza tu día informado\n\nEl Dashboard de Nextcloud es tu punto de partida del día, dándote un\nresumen de tus próximas citas, emails urgentes, mensajes de chat,\npróximos tickets, últimos tweets y mucho más! Los usuarios pueden agregr widgets\nque le gusten y cambiar el fondo a su gusto.",
"Customize" : "Personalizar",
"Edit widgets" : "Editar widgets",
"Get more widgets from the App Store" : "Conseguir más widgets desde la tienda de Apps",
diff --git a/apps/dashboard/lib/Service/BackgroundService.php b/apps/dashboard/lib/Service/BackgroundService.php
index f9bd987bdca..13ad03cf860 100644
--- a/apps/dashboard/lib/Service/BackgroundService.php
+++ b/apps/dashboard/lib/Service/BackgroundService.php
@@ -40,6 +40,7 @@ use OCP\Lock\LockedException;
use OCP\PreConditionNotMetException;
class BackgroundService {
+ // true when the background is bright and need dark icons
public const THEMING_MODE_DARK = 'dark';
public const SHIPPED_BACKGROUNDS = [
diff --git a/apps/dashboard/src/App.vue b/apps/dashboard/src/DashboardApp.vue
index e8a1933287a..46de7b58827 100644
--- a/apps/dashboard/src/App.vue
+++ b/apps/dashboard/src/DashboardApp.vue
@@ -16,7 +16,8 @@
@end="saveLayout">
<div v-for="panelId in layout" :key="panels[panelId].id" class="panel">
<div class="panel--header">
- <h2 :class="panels[panelId].iconClass">
+ <h2>
+ <div :class="panels[panelId].iconClass" role="img" />
{{ panels[panelId].title }}
</h2>
</div>
@@ -27,24 +28,26 @@
</Draggable>
<div class="footer">
- <a class="edit-panels icon-rename"
- tabindex="0"
- @click="showModal"
- @keyup.enter="showModal"
- @keyup.space="showModal">{{ t('dashboard', 'Customize') }}</a>
+ <Button @click="showModal">
+ <template #icon>
+ <Pencil :size="20" />
+ </template>
+ {{ t('dashboard', 'Customize') }}
+ </Button>
</div>
<Modal v-if="modal" size="large" @close="closeModal">
<div class="modal__content">
<h3>{{ t('dashboard', 'Edit widgets') }}</h3>
<ol class="panels">
- <li v-for="status in sortedAllStatuses" :key="status">
+ <li v-for="status in sortedAllStatuses" :key="status" :class="'panel-' + status">
<input :id="'status-checkbox-' + status"
type="checkbox"
class="checkbox"
:checked="isStatusActive(status)"
@input="updateStatusCheckbox(status, $event.target.checked)">
- <label :for="'status-checkbox-' + status" :class="statusInfo[status].icon">
+ <label :for="'status-checkbox-' + status">
+ <div :class="statusInfo[status].icon" role="img" />
{{ statusInfo[status].text }}
</label>
</li>
@@ -55,13 +58,14 @@
v-bind="{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}"
handle=".draggable"
@end="saveLayout">
- <li v-for="panel in sortedPanels" :key="panel.id">
+ <li v-for="panel in sortedPanels" :key="panel.id" :class="'panel-' + panel.id">
<input :id="'panel-checkbox-' + panel.id"
type="checkbox"
class="checkbox"
:checked="isActive(panel)"
@input="updateCheckbox(panel, $event.target.checked)">
- <label :for="'panel-checkbox-' + panel.id" :class="isActive(panel) ? 'draggable ' + panel.iconClass : panel.iconClass">
+ <label :for="'panel-checkbox-' + panel.id" :class="{ draggable: isActive(panel) }">
+ <div :class="panel.iconClass" role="img" />
{{ panel.title }}
</label>
</li>
@@ -89,13 +93,16 @@
</template>
<script>
-import Vue from 'vue'
-import { loadState } from '@nextcloud/initial-state'
+import { generateUrl } from '@nextcloud/router'
import { getCurrentUser } from '@nextcloud/auth'
-import Modal from '@nextcloud/vue/dist/Components/Modal'
-import Draggable from 'vuedraggable'
+import { loadState } from '@nextcloud/initial-state'
import axios from '@nextcloud/axios'
-import { generateUrl } from '@nextcloud/router'
+import Button from '@nextcloud/vue/dist/Components/Button'
+import Draggable from 'vuedraggable'
+import Modal from '@nextcloud/vue/dist/Components/Modal'
+import Pencil from 'vue-material-design-icons/Pencil.vue'
+import Vue from 'vue'
+
import isMobile from './mixins/isMobile'
import BackgroundSettings from './components/BackgroundSettings'
import getBackgroundUrl from './helpers/getBackgroundUrl'
@@ -106,6 +113,7 @@ const background = loadState('dashboard', 'background')
const themingDefaultBackground = loadState('dashboard', 'themingDefaultBackground')
const version = loadState('dashboard', 'version')
const shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')
+
const statusInfo = {
weather: {
text: t('dashboard', 'Weather'),
@@ -118,15 +126,18 @@ const statusInfo = {
}
export default {
- name: 'App',
+ name: 'DashboardApp',
components: {
- Modal,
- Draggable,
BackgroundSettings,
+ Button,
+ Draggable,
+ Modal,
+ Pencil,
},
mixins: [
isMobile,
],
+
data() {
return {
isAdmin: getCurrentUser().isAdmin,
@@ -163,6 +174,7 @@ export default {
backgroundImage: `url(${this.backgroundImage})`,
}
},
+
greeting() {
const time = this.timer.getHours()
@@ -203,12 +215,14 @@ export default {
const shouldShowName = this.displayName && this.uid !== this.displayName
return { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }
},
+
isActive() {
return (panel) => this.layout.indexOf(panel.id) > -1
},
isStatusActive() {
return (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]
},
+
sortedAllStatuses() {
return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)
},
@@ -226,6 +240,7 @@ export default {
return this.registeredStatus.slice().sort(this.sortStatuses)
},
},
+
watch: {
callbacks() {
this.rerenderPanels()
@@ -245,6 +260,7 @@ export default {
}
},
},
+
mounted() {
this.updateGlobalStyles()
this.updateSkipLink()
@@ -261,6 +277,7 @@ export default {
destroyed() {
window.removeEventListener('scroll', this.handleScroll)
},
+
methods: {
/**
* Method to register panels that will be called by the integrating apps
@@ -342,16 +359,14 @@ export default {
this.updateGlobalStyles()
},
updateGlobalStyles() {
- document.body.setAttribute('data-dashboard-background', this.background)
- if (window.OCA.Theming.inverted) {
- document.body.classList.add('dashboard--inverted')
- }
-
- const shippedBackgroundTheme = shippedBackgroundList[this.background] ? shippedBackgroundList[this.background].theming : 'light'
- if (shippedBackgroundTheme === 'dark') {
- document.body.classList.add('dashboard--dark')
+ // Override primary-invert-if-bright and color-primary-text if background is set
+ const isBackgroundBright = shippedBackgroundList[this.background]?.theming === 'dark'
+ if (isBackgroundBright) {
+ document.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'invert(100%)')
+ document.querySelector('#header').style.setProperty('--color-primary-text', '#000000')
} else {
- document.body.classList.remove('dashboard--dark')
+ document.querySelector('#header').style.removeProperty('--primary-invert-if-bright')
+ document.querySelector('#header').style.removeProperty('--color-primary-text')
}
},
updateSkipLink() {
@@ -411,19 +426,9 @@ export default {
background-repeat: no-repeat;
background-attachment: fixed;
background-color: var(--color-primary);
- --color-background-translucent: rgba(255, 255, 255, 0.8);
+ --color-background-translucent: rgba(var(--color-main-background-rgb), 0.8);
--background-blur: blur(10px);
- #body-user.theme--dark & {
- background-color: var(--color-main-background);
- --color-background-translucent: rgba(24, 24, 24, 0.8);
- }
-
- #body-user.theme--highcontrast & {
- background-color: var(--color-main-background);
- --color-background-translucent: var(--color-main-background);
- }
-
> h2 {
color: var(--color-primary-text);
text-align: center;
@@ -486,20 +491,27 @@ export default {
}
> h2 {
- display: block;
+ display: flex;
+ align-items: center;
flex-grow: 1;
margin: 0;
font-size: 20px;
line-height: 24px;
font-weight: bold;
- background-size: 32px;
- background-position: 14px 12px;
- padding: 16px 8px 16px 60px;
+ padding: 16px 8px;
height: 56px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
cursor: grab;
+ div {
+ background-size: 32px;
+ width: 32px;
+ height: 32px;
+ margin-right: 16px;
+ background-position: center;
+ filter: var(--background-invert-if-dark);
+ }
}
}
@@ -519,7 +531,8 @@ export default {
}
.footer {
- text-align: center;
+ display: flex;
+ justify-content: center;
transition: bottom var(--animation-slow) ease-in-out;
bottom: 0;
padding: 44px 0;
@@ -537,6 +550,8 @@ export default {
text-align: center;
}
+.button,
+.button-vue
.edit-panels,
.statuses ::v-deep .action-item .action-item__menutoggle,
.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {
@@ -576,18 +591,29 @@ export default {
background-color: var(--color-background-hover);
border: 2px solid var(--color-main-background);
border-radius: var(--border-radius-large);
- background-size: 24px;
- background-position: 16px 16px;
text-align: left;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
+ div {
+ position: absolute;
+ top: 16px;
+ width: 24px;
+ height: 24px;
+ background-size: 24px;
+ }
+
&:hover {
border-color: var(--color-primary);
}
}
+ // Do not invert status icons
+ &:not(.panel-status) label div {
+ filter: var(--background-invert-if-dark);
+ }
+
input[type='checkbox'].checkbox + label:before {
position: absolute;
right: 12px;
diff --git a/apps/dashboard/src/components/BackgroundSettings.vue b/apps/dashboard/src/components/BackgroundSettings.vue
index 691ce12cfd3..bd2154e89a7 100644
--- a/apps/dashboard/src/components/BackgroundSettings.vue
+++ b/apps/dashboard/src/components/BackgroundSettings.vue
@@ -181,10 +181,6 @@ export default {
content: '';
display: block;
height: 100%;
-
- body.theme--dark & {
- background-image: var(--icon-checkmark-000);
- }
}
}
}
diff --git a/apps/dashboard/src/main.js b/apps/dashboard/src/main.js
index 0640691b283..dc276959b11 100644
--- a/apps/dashboard/src/main.js
+++ b/apps/dashboard/src/main.js
@@ -21,7 +21,7 @@
*/
import Vue from 'vue'
-import App from './App.vue'
+import DashboardApp from './DashboardApp.vue'
import { translate as t } from '@nextcloud/l10n'
import VTooltip from '@nextcloud/vue/dist/Directives/Tooltip'
import { getRequestToken } from '@nextcloud/auth'
@@ -40,7 +40,7 @@ if (!window.OCA.Files) {
Object.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files)
-const Dashboard = Vue.extend(App)
+const Dashboard = Vue.extend(DashboardApp)
const Instance = new Dashboard({}).$mount('#app-content-vue')
window.OCA.Dashboard = {
diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js
index 2dae8d9e50a..10380d482d4 100644
--- a/apps/dav/l10n/de.js
+++ b/apps/dav/l10n/de.js
@@ -137,6 +137,7 @@ OC.L10N.register(
"Due on %s by %s" : "Fällig am %s von %s",
"Due on %s" : "Fällig am %s",
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
+ "Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
"Contacts and groups" : "Kontakte und Gruppen",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json
index 3e21bb7af63..9f3f97e0c81 100644
--- a/apps/dav/l10n/de.json
+++ b/apps/dav/l10n/de.json
@@ -135,6 +135,7 @@
"Due on %s by %s" : "Fällig am %s von %s",
"Due on %s" : "Fällig am %s",
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
+ "Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
"Contacts and groups" : "Kontakte und Gruppen",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
diff --git a/apps/encryption/l10n/de_DE.js b/apps/encryption/l10n/de_DE.js
index 09cc8014409..fc89ef928c9 100644
--- a/apps/encryption/l10n/de_DE.js
+++ b/apps/encryption/l10n/de_DE.js
@@ -16,7 +16,7 @@ OC.L10N.register(
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.",
"Recovery Key disabled" : "Wiederherstellungsschlüssel deaktiviert",
"Recovery Key enabled" : "Wiederherstellungsschlüssel aktiviert",
- "Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihren Administrator",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihre Administration",
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
"The old password was not correct, please try again." : "Das alte Passwort war falsch, bitte versuchen Sie es erneut.",
"The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuchen Sie es noch einmal.",
diff --git a/apps/encryption/l10n/de_DE.json b/apps/encryption/l10n/de_DE.json
index 0e5730130f3..3e40dc917d5 100644
--- a/apps/encryption/l10n/de_DE.json
+++ b/apps/encryption/l10n/de_DE.json
@@ -14,7 +14,7 @@
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.",
"Recovery Key disabled" : "Wiederherstellungsschlüssel deaktiviert",
"Recovery Key enabled" : "Wiederherstellungsschlüssel aktiviert",
- "Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihren Administrator",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihre Administration",
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
"The old password was not correct, please try again." : "Das alte Passwort war falsch, bitte versuchen Sie es erneut.",
"The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuchen Sie es noch einmal.",
diff --git a/apps/federatedfilesharing/css/settings-personal.scss b/apps/federatedfilesharing/css/settings-personal.scss
index 2da86fe996d..d94e06f943d 100644
--- a/apps/federatedfilesharing/css/settings-personal.scss
+++ b/apps/federatedfilesharing/css/settings-personal.scss
@@ -30,13 +30,14 @@
.social-diaspora {
@include icon-color('social-diaspora', 'federatedfilesharing', $color-black);
- padding-left: 26px;
}
.social-twitter {
@include icon-color('social-twitter', 'federatedfilesharing', $color-black);
- padding-left: 26px;
}
.social-facebook {
@include icon-color('social-facebook', 'federatedfilesharing', $color-black);
- padding-left: 26px;
+}
+
+.social_sharing_buttons {
+ padding-left: 30px !important;
}
diff --git a/apps/federatedfilesharing/templates/settings-personal.php b/apps/federatedfilesharing/templates/settings-personal.php
index 1804921aa1b..2e81ccf6497 100644
--- a/apps/federatedfilesharing/templates/settings-personal.php
+++ b/apps/federatedfilesharing/templates/settings-personal.php
@@ -22,15 +22,15 @@ style('federatedfilesharing', 'settings-personal');
<p>
<?php p($l->t('Share it so your friends can share files with you:')); ?><br>
- <button class="social-facebook pop-up"
+ <button class="social-facebook pop-up social_sharing_buttons"
data-url='https://www.facebook.com/sharer/sharer.php?u=<?php p(urlencode($_['reference'])); ?>'>
Facebook
</button>
- <button class="social-twitter pop-up"
+ <button class="social-twitter pop-up social_sharing_buttons"
data-url='https://twitter.com/intent/tweet?text=<?php p(urlencode($_['message_with_URL'])); ?>'>
Twitter
</button>
- <button class="social-diaspora pop-up"
+ <button class="social-diaspora pop-up social_sharing_buttons"
data-url='https://share.diasporafoundation.org/?title=<?php p($_['message_without_URL']); ?>&url=<?php p(urlencode($_['reference'])); ?>'>
Diaspora
</button>
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index 01edb061fd6..e26a8210fbb 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -45,7 +45,7 @@ OC.L10N.register(
"Pending" : "Ausstehend",
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
"This operation is forbidden" : "Diese Operation ist nicht erlaubt",
- "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Protokolldateien oder kontaktieren Sie die Administration",
"Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits",
"Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden",
"copy" : "Kopie",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 44b26dc0e7b..872107968f4 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -43,7 +43,7 @@
"Pending" : "Ausstehend",
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
"This operation is forbidden" : "Diese Operation ist nicht erlaubt",
- "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Protokolldateien oder kontaktieren Sie die Administration",
"Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits",
"Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden",
"copy" : "Kopie",
diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js
index b11299f9bb2..2d9c813012b 100644
--- a/apps/files_external/l10n/it.js
+++ b/apps/files_external/l10n/it.js
@@ -22,6 +22,8 @@ OC.L10N.register(
"Read only" : "Sola lettura",
"Disconnect" : "Disconnetti",
"Admin defined" : "Definito dall'amministratore",
+ "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Il controllo automatico dello stato è disabilitato a causa del numero elevato di archivi configurati, fare clic per controllare lo stato",
+ "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Sei sicuro di voler disconnettere questo spazio di archiviazione esterno? Ciò renderà lo spazio di archiviazione non disponibile in Nextcloud e comporterà l'eliminazione di questi file e cartelle su qualsiasi client di sincronizzazione attualmente connesso, ma non cancellerà alcun file e cartella sullo spazio di archiviazione esterno stesso.",
"Delete storage?" : "Vuoi eliminare l'archiviazione?",
"Saved" : "Salvato",
"Saving …" : "Salvataggio…",
diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json
index 41a6c53c598..01eb8eb3179 100644
--- a/apps/files_external/l10n/it.json
+++ b/apps/files_external/l10n/it.json
@@ -20,6 +20,8 @@
"Read only" : "Sola lettura",
"Disconnect" : "Disconnetti",
"Admin defined" : "Definito dall'amministratore",
+ "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Il controllo automatico dello stato è disabilitato a causa del numero elevato di archivi configurati, fare clic per controllare lo stato",
+ "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Sei sicuro di voler disconnettere questo spazio di archiviazione esterno? Ciò renderà lo spazio di archiviazione non disponibile in Nextcloud e comporterà l'eliminazione di questi file e cartelle su qualsiasi client di sincronizzazione attualmente connesso, ma non cancellerà alcun file e cartella sullo spazio di archiviazione esterno stesso.",
"Delete storage?" : "Vuoi eliminare l'archiviazione?",
"Saved" : "Salvato",
"Saving …" : "Salvataggio…",
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index 7912a08ec42..d6bcac2d63c 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -101,6 +101,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "ID di condivisione errato, la condivisione non esiste",
"Could not delete share" : "impossibile eliminare la condivisione",
"Please specify a file or folder path" : "Specifica un percorso di un file o di una cartella",
+ "Wrong path, file/folder does not exist" : "Percorso errato, file/cartella inesistente",
"Could not create share" : "Impossibile creare la condivisione",
"Invalid permissions" : "Permessi non validi",
"Please specify a valid user" : "Specifica un utente valido",
@@ -123,6 +124,7 @@ OC.L10N.register(
"Could not lock path" : "Impossibile bloccare il percorso",
"Wrong or no update parameter given" : "Parametro fornito non valido o non di aggiornamento",
"Share must at least have READ or CREATE permissions" : "La condivisione deve disporre almeno delle autorizzazioni READ o CREATE",
+ "Share must have READ permission if UPDATE or DELETE permission is set" : "La condivisione deve disporre dell'autorizzazione READ se l'autorizzazione è impostata su UPDATE o DELETE.",
"\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Invio della password da Nextcloud Talk\" per condividere un file o una cartella non è riuscito poiché Nextcloud Talk non è attivato.",
"shared by %s" : "condiviso da %s",
"Download all files" : "Scarica tutti i file",
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index a854a69ea99..6c688bafeaa 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -99,6 +99,7 @@
"Wrong share ID, share doesn't exist" : "ID di condivisione errato, la condivisione non esiste",
"Could not delete share" : "impossibile eliminare la condivisione",
"Please specify a file or folder path" : "Specifica un percorso di un file o di una cartella",
+ "Wrong path, file/folder does not exist" : "Percorso errato, file/cartella inesistente",
"Could not create share" : "Impossibile creare la condivisione",
"Invalid permissions" : "Permessi non validi",
"Please specify a valid user" : "Specifica un utente valido",
@@ -121,6 +122,7 @@
"Could not lock path" : "Impossibile bloccare il percorso",
"Wrong or no update parameter given" : "Parametro fornito non valido o non di aggiornamento",
"Share must at least have READ or CREATE permissions" : "La condivisione deve disporre almeno delle autorizzazioni READ o CREATE",
+ "Share must have READ permission if UPDATE or DELETE permission is set" : "La condivisione deve disporre dell'autorizzazione READ se l'autorizzazione è impostata su UPDATE o DELETE.",
"\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Invio della password da Nextcloud Talk\" per condividere un file o una cartella non è riuscito poiché Nextcloud Talk non è attivato.",
"shared by %s" : "condiviso da %s",
"Download all files" : "Scarica tutti i file",
diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js
index a329bb01663..c9bd91230bb 100644
--- a/apps/settings/l10n/ar.js
+++ b/apps/settings/l10n/ar.js
@@ -92,7 +92,6 @@ OC.L10N.register(
"Admin documentation" : "دليل المدير",
"Developer documentation" : "دليل المُطوّر",
"Featured" : "مميزة",
- "Update all" : "تحديث الكل",
"Results from other categories" : "نتائج عبر الفئات الأخرى",
"No apps found for your version" : "لا يمكن العثور على تطبيقات للإصدار الخاص بك.",
"Disable all" : "تعطيل الكل",
@@ -245,6 +244,7 @@ OC.L10N.register(
"New password" : "كلمات سر جديدة",
"Change password" : "عدل كلمة السر",
"installing and updating apps via the app store or Federated Cloud Sharing" : "التثبيت والتحديث من متجر التطبيقات أو Federated Cloud Sharing",
+ "Update all" : "تحديث الكل",
"Nextcloud Android app" : "تطبيق Nextcloud للأندرويد",
"Nextcloud Talk for iOS" : "نيكست كلاود التحدث للايفون",
"Nextcloud Talk for Android" : "نيكست كلاود التحدث للاندرويد",
diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json
index 461715a3af1..7532901315f 100644
--- a/apps/settings/l10n/ar.json
+++ b/apps/settings/l10n/ar.json
@@ -90,7 +90,6 @@
"Admin documentation" : "دليل المدير",
"Developer documentation" : "دليل المُطوّر",
"Featured" : "مميزة",
- "Update all" : "تحديث الكل",
"Results from other categories" : "نتائج عبر الفئات الأخرى",
"No apps found for your version" : "لا يمكن العثور على تطبيقات للإصدار الخاص بك.",
"Disable all" : "تعطيل الكل",
@@ -243,6 +242,7 @@
"New password" : "كلمات سر جديدة",
"Change password" : "عدل كلمة السر",
"installing and updating apps via the app store or Federated Cloud Sharing" : "التثبيت والتحديث من متجر التطبيقات أو Federated Cloud Sharing",
+ "Update all" : "تحديث الكل",
"Nextcloud Android app" : "تطبيق Nextcloud للأندرويد",
"Nextcloud Talk for iOS" : "نيكست كلاود التحدث للايفون",
"Nextcloud Talk for Android" : "نيكست كلاود التحدث للاندرويد",
diff --git a/apps/settings/l10n/ast.js b/apps/settings/l10n/ast.js
index e3fa0891ad6..0e2e22cdaf7 100644
--- a/apps/settings/l10n/ast.js
+++ b/apps/settings/l10n/ast.js
@@ -191,6 +191,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Precises migrar les claves de cifráu d'un cifráu vieyu (ownCloud <= 8.0) a unu nuevu.",
"Start migration" : "Aniciar migración",
"Background job didn’t run yet!" : "¡Entá nun s'executó'l trabayu de fondu!",
+ "Recommended" : "Recomendáu",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php precisa executalu l'usuariu del sistema «%s».",
"Allow apps to use the Share API" : "Permitir a les aplicaciones usar la API de Compartición",
"Enforce expiration date" : "Facer cumplir la data de caducidá",
diff --git a/apps/settings/l10n/ast.json b/apps/settings/l10n/ast.json
index 422ea32d1d8..202cd43943e 100644
--- a/apps/settings/l10n/ast.json
+++ b/apps/settings/l10n/ast.json
@@ -189,6 +189,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Precises migrar les claves de cifráu d'un cifráu vieyu (ownCloud <= 8.0) a unu nuevu.",
"Start migration" : "Aniciar migración",
"Background job didn’t run yet!" : "¡Entá nun s'executó'l trabayu de fondu!",
+ "Recommended" : "Recomendáu",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php precisa executalu l'usuariu del sistema «%s».",
"Allow apps to use the Share API" : "Permitir a les aplicaciones usar la API de Compartición",
"Enforce expiration date" : "Facer cumplir la data de caducidá",
diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js
index 5513fdcc3e5..4fe7d5f383d 100644
--- a/apps/settings/l10n/bg.js
+++ b/apps/settings/l10n/bg.js
@@ -178,7 +178,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Представените приложения са разработени от и в рамките на общността. Те предлагат централна функционалност и са готови за производствена употреба.",
"Featured" : "Препоръчани",
"Update to {update}" : "Актуализирай до {update}",
- "Update all" : "Актуализирай всички",
"All apps are up-to-date." : "Всички приложения са актуални.",
"Results from other categories" : "Резултати от други категории",
"No apps found for your version" : "Няма намерени приложения за версията, която ползвате",
@@ -434,11 +433,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Някои задачи не са изпълнени след %s. Моля, помислете за преминаване към система cron.",
"Last job ran %s." : "За последно cron задача е стартирала %s.",
"Background job didn’t run yet!" : "Фоновата задача все още не е стартирана!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимална производителност е важно да конфигурирате правилно фоновите задания. За по-големи екземпляри препоръчителната настройка е „Cron“. Моля, вижте документацията за повече информация.",
"Pick background job setting" : "Изберете настройка за фонова работа",
- "Execute one task with each page loaded." : "Изпълняване на една задача с всяка заредена страница.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php е регистриран в услуга на webcron за извикване на cron.php на всеки 5 минути през HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Използвайте системната услуга cron, за да извикате файла cron.php на всеки 5 минути.",
+ "Recommended" : "Препоръчано",
"The cron.php needs to be executed by the system user \"%s\"." : "Необходимо е cron.php да се стартира от системния потребител \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "За да стартирате това, имате нужда от разширението PHP POSIX. Вижте {linkstart}документацията на PHP{linkend} за повече подробности.",
"You need to enable the File sharing App." : "Трябва да активирате приложението за споделяне на файлове.",
@@ -508,6 +504,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." : "Ако използвате приложения на трети страни, за да се свържете с Nextcloud, моля, не забравяйте да създадете и конфигурирате парола за приложение за всяко едно от тях, преди да активирате удостоверяване на втория фактор.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "инсталиране и актуализиране на приложения чрез магазина за приложения или Federated Cloud Sharing/Федерирано споделяне в облак/",
"You need to set your user email before being able to send test emails." : "Трябва да зададете своя имейл за да можете да изпращате тестови имейли.",
+ "Update all" : "Актуализирай всички",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Отмяната на този маркер може да попречи на изтриването на вашето устройство, ако то все още не е започнало изтриването.",
"Nextcloud iOS app" : "Nextcloud iOS приложение",
"Nextcloud Android app" : "Приложение Nextcloud за Android",
@@ -522,6 +519,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Грешка: Това приложение не може да бъде активирано, защото прави сървъра нестабилен",
"mail" : "поща",
"Test email settings" : "Проверка на имейл настройките",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимална производителност е важно да конфигурирате правилно фоновите задания. За по-големи екземпляри препоръчителната настройка е „Cron“. Моля, вижте документацията за повече информация.",
+ "Execute one task with each page loaded." : "Изпълняване на една задача с всяка заредена страница.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php е регистриран в услуга на webcron за извикване на cron.php на всеки 5 минути през HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Използвайте системната услуга cron, за да извикате файла cron.php на всеки 5 минути.",
"Expire after " : "Изтечи след",
"days" : "дена",
"Allow users to share via link" : "Разреши потребителите да споделят с връзка",
diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json
index 6645badc9d0..b1c1f4a548b 100644
--- a/apps/settings/l10n/bg.json
+++ b/apps/settings/l10n/bg.json
@@ -176,7 +176,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Представените приложения са разработени от и в рамките на общността. Те предлагат централна функционалност и са готови за производствена употреба.",
"Featured" : "Препоръчани",
"Update to {update}" : "Актуализирай до {update}",
- "Update all" : "Актуализирай всички",
"All apps are up-to-date." : "Всички приложения са актуални.",
"Results from other categories" : "Резултати от други категории",
"No apps found for your version" : "Няма намерени приложения за версията, която ползвате",
@@ -432,11 +431,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Някои задачи не са изпълнени след %s. Моля, помислете за преминаване към система cron.",
"Last job ran %s." : "За последно cron задача е стартирала %s.",
"Background job didn’t run yet!" : "Фоновата задача все още не е стартирана!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимална производителност е важно да конфигурирате правилно фоновите задания. За по-големи екземпляри препоръчителната настройка е „Cron“. Моля, вижте документацията за повече информация.",
"Pick background job setting" : "Изберете настройка за фонова работа",
- "Execute one task with each page loaded." : "Изпълняване на една задача с всяка заредена страница.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php е регистриран в услуга на webcron за извикване на cron.php на всеки 5 минути през HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Използвайте системната услуга cron, за да извикате файла cron.php на всеки 5 минути.",
+ "Recommended" : "Препоръчано",
"The cron.php needs to be executed by the system user \"%s\"." : "Необходимо е cron.php да се стартира от системния потребител \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "За да стартирате това, имате нужда от разширението PHP POSIX. Вижте {linkstart}документацията на PHP{linkend} за повече подробности.",
"You need to enable the File sharing App." : "Трябва да активирате приложението за споделяне на файлове.",
@@ -506,6 +502,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." : "Ако използвате приложения на трети страни, за да се свържете с Nextcloud, моля, не забравяйте да създадете и конфигурирате парола за приложение за всяко едно от тях, преди да активирате удостоверяване на втория фактор.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "инсталиране и актуализиране на приложения чрез магазина за приложения или Federated Cloud Sharing/Федерирано споделяне в облак/",
"You need to set your user email before being able to send test emails." : "Трябва да зададете своя имейл за да можете да изпращате тестови имейли.",
+ "Update all" : "Актуализирай всички",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Отмяната на този маркер може да попречи на изтриването на вашето устройство, ако то все още не е започнало изтриването.",
"Nextcloud iOS app" : "Nextcloud iOS приложение",
"Nextcloud Android app" : "Приложение Nextcloud за Android",
@@ -520,6 +517,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Грешка: Това приложение не може да бъде активирано, защото прави сървъра нестабилен",
"mail" : "поща",
"Test email settings" : "Проверка на имейл настройките",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимална производителност е важно да конфигурирате правилно фоновите задания. За по-големи екземпляри препоръчителната настройка е „Cron“. Моля, вижте документацията за повече информация.",
+ "Execute one task with each page loaded." : "Изпълняване на една задача с всяка заредена страница.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php е регистриран в услуга на webcron за извикване на cron.php на всеки 5 минути през HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Използвайте системната услуга cron, за да извикате файла cron.php на всеки 5 минути.",
"Expire after " : "Изтечи след",
"days" : "дена",
"Allow users to share via link" : "Разреши потребителите да споделят с връзка",
diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js
index 21fc4728a56..20cd3c36fd4 100644
--- a/apps/settings/l10n/br.js
+++ b/apps/settings/l10n/br.js
@@ -147,7 +147,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Meziantoù perzhiet a vez digeliet gant ha e-vbarzh ar gummuniezh. Perzhioù penna a vez roet gante ha prest int da krouiñ reoù all.",
"Featured" : "Perzhiet",
"Update to {update}" : "Adnevesiñ da {update}",
- "Update all" : "Adnevesañ pep tra",
"Results from other categories" : "Disoc'hoù evit rummadoù all",
"No apps found for your version" : "Meziant ebet kavet evit ar stumm",
"Disable all" : "Difenn pep tra",
@@ -342,10 +341,7 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Oberioù 'zo n'int ket bet graet abaoe %s. Ret vefe cheñch d'ar sistem cron.",
"Last job ran %s." : "An oberenn divezhañ en deus troet %s.",
"Background job didn’t run yet!" : "N'en deus ket labouret c'hoaz an oberen diadreñv.",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Evit kaout ur mon en dro mat eo ret stummañ mat al labourioù diadrñv. evit azgoulennoù brasoc'h eo aliet kaout stumm 'Cron'. Sellit ouzh an diellvadur evit muioc'h a ditouroù.",
"Pick background job setting" : "Choazit stumm al labourioù diadreñv",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php a zo anavezet evel ur webcron da gervel pep 5 munutenn a uz HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Implijit sevichoù ar sistem cron evit gervel restr cron.php pep 5 munutenn.",
"The cron.php needs to be executed by the system user \"%s\"." : "Ret eo da cron.php beza lakaet en dro gant sistem an implijer \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Ezhomm ez eus eus astennenn PHP POSIX evit al lakaat da dreiñ. Sellit ouzh {linkstart}diellvadur PHP{linkend} evit muioc'h a ditouroù.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Evel ar merour eo posupl deoc'h stumañ pizh penaos e vez rannet. Sellit ouz an diellvadur evit muioc'h a ditouroù.",
@@ -391,6 +387,7 @@ OC.L10N.register(
"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.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "stalia ha nevesaat meziantoù dre ar stal meziantoù pe Federation Cloud Sharing",
"You need to set your user email before being able to send test emails." : "Ret eo deoc'h lakaat ho postel implijer a-raok kas ar bostel test.",
+ "Update all" : "Adnevesañ pep tra",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Digargañ ar jedouer a c'hell ampech an dilemel eus an dra ma n'eo ket bet kroget c'hoaz.",
"Nextcloud iOS app" : "Mziant Nextcloud iOS",
"Nextcloud Android app" : "Meziant Nextcloud Android",
@@ -405,6 +402,9 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Fazi : N'eo ket posupl aotreañ ar meziant abalamour e lak ar servijour da vezañ distabil",
"mail" : "postel",
"Test email settings" : "Amprouiñ ar c'has postel",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Evit kaout ur mon en dro mat eo ret stummañ mat al labourioù diadrñv. evit azgoulennoù brasoc'h eo aliet kaout stumm 'Cron'. Sellit ouzh an diellvadur evit muioc'h a ditouroù.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php a zo anavezet evel ur webcron da gervel pep 5 munutenn a uz HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Implijit sevichoù ar sistem cron evit gervel restr cron.php pep 5 munutenn.",
"Expire after " : "Termen goude",
"days" : "devezh",
"Allow users to share via link" : "Aotreañ an implijer da rannan dre liamm",
diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json
index 843dbcae2d0..07e74c88e79 100644
--- a/apps/settings/l10n/br.json
+++ b/apps/settings/l10n/br.json
@@ -145,7 +145,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Meziantoù perzhiet a vez digeliet gant ha e-vbarzh ar gummuniezh. Perzhioù penna a vez roet gante ha prest int da krouiñ reoù all.",
"Featured" : "Perzhiet",
"Update to {update}" : "Adnevesiñ da {update}",
- "Update all" : "Adnevesañ pep tra",
"Results from other categories" : "Disoc'hoù evit rummadoù all",
"No apps found for your version" : "Meziant ebet kavet evit ar stumm",
"Disable all" : "Difenn pep tra",
@@ -340,10 +339,7 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Oberioù 'zo n'int ket bet graet abaoe %s. Ret vefe cheñch d'ar sistem cron.",
"Last job ran %s." : "An oberenn divezhañ en deus troet %s.",
"Background job didn’t run yet!" : "N'en deus ket labouret c'hoaz an oberen diadreñv.",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Evit kaout ur mon en dro mat eo ret stummañ mat al labourioù diadrñv. evit azgoulennoù brasoc'h eo aliet kaout stumm 'Cron'. Sellit ouzh an diellvadur evit muioc'h a ditouroù.",
"Pick background job setting" : "Choazit stumm al labourioù diadreñv",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php a zo anavezet evel ur webcron da gervel pep 5 munutenn a uz HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Implijit sevichoù ar sistem cron evit gervel restr cron.php pep 5 munutenn.",
"The cron.php needs to be executed by the system user \"%s\"." : "Ret eo da cron.php beza lakaet en dro gant sistem an implijer \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Ezhomm ez eus eus astennenn PHP POSIX evit al lakaat da dreiñ. Sellit ouzh {linkstart}diellvadur PHP{linkend} evit muioc'h a ditouroù.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Evel ar merour eo posupl deoc'h stumañ pizh penaos e vez rannet. Sellit ouz an diellvadur evit muioc'h a ditouroù.",
@@ -389,6 +385,7 @@
"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.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "stalia ha nevesaat meziantoù dre ar stal meziantoù pe Federation Cloud Sharing",
"You need to set your user email before being able to send test emails." : "Ret eo deoc'h lakaat ho postel implijer a-raok kas ar bostel test.",
+ "Update all" : "Adnevesañ pep tra",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Digargañ ar jedouer a c'hell ampech an dilemel eus an dra ma n'eo ket bet kroget c'hoaz.",
"Nextcloud iOS app" : "Mziant Nextcloud iOS",
"Nextcloud Android app" : "Meziant Nextcloud Android",
@@ -403,6 +400,9 @@
"Error: This app can not be enabled because it makes the server unstable" : "Fazi : N'eo ket posupl aotreañ ar meziant abalamour e lak ar servijour da vezañ distabil",
"mail" : "postel",
"Test email settings" : "Amprouiñ ar c'has postel",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Evit kaout ur mon en dro mat eo ret stummañ mat al labourioù diadrñv. evit azgoulennoù brasoc'h eo aliet kaout stumm 'Cron'. Sellit ouzh an diellvadur evit muioc'h a ditouroù.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php a zo anavezet evel ur webcron da gervel pep 5 munutenn a uz HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Implijit sevichoù ar sistem cron evit gervel restr cron.php pep 5 munutenn.",
"Expire after " : "Termen goude",
"days" : "devezh",
"Allow users to share via link" : "Aotreañ an implijer da rannan dre liamm",
diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js
index 86eec7aa715..df7c2058851 100644
--- a/apps/settings/l10n/ca.js
+++ b/apps/settings/l10n/ca.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les aplicacions destacades es desenvolupen per i dins de la comunitat. Ofereixen funcionalitats centrals i estan preparades per ser emprades en producció.",
"Featured" : "Destacat",
"Update to {update}" : "Actualitza a {update}",
- "Update all" : "Actualitza tot",
"Results from other categories" : "Resultats d'altres categories",
"No apps found for your version" : "No s'han trobat aplicacions per la vostra versió",
"Disable all" : "Desactiva-ho tot",
@@ -350,11 +349,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Algunes feines no s’han executat des de %s. Considereu canviar al cron del sistema.",
"Last job ran %s." : "La darrera tasca es va executar %s.",
"Background job didn’t run yet!" : "La tasca de fons encara no s'ha executat!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per a un rendiment òptim és important configurar correctament les tasques de fons. Per a instàncies més grans ‘Cron’ és el paràmetre recomanat. Si us plau, per a més informació vegeu la documentació.",
"Pick background job setting" : "Trieu la configuració de la tasca en segon pla",
- "Execute one task with each page loaded." : "Executa una tasca amb cada pàgina carregada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php està registrat en un servei webcron per cridar cron.php cada 15 minuts per HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Utilitza el servei cron del sistema per cridar el fitxer cron.php cada 5 minuts.",
+ "Recommended" : "Recomanat",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per executar això es necessita l'extensió POSIX de PHP. Per més detalls, vegeu {linkstart}documentació de PHP{linkend}.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Com a administrador, podeu afinar els ajustaments per compartir fitxers. Si us plau, per més informació llegiu la documentació.",
@@ -405,6 +401,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." : "Si utilitzeu aplicacions de tercers per a connectar-vos a Nextcloud, assegureu-vos de crear i configurar una contrasenya d'aplicació per a cadascuna abans d'habilitar l'autenticació de segon factor.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "s’està instal·lant i actualitzant aplicacions mitjançant la botiga d'aplicacions o la compartició de núvols federats",
"You need to set your user email before being able to send test emails." : "Heu d'establir un nom d'usuari abans de poder enviar correus de prova.",
+ "Update all" : "Actualitza tot",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Revocant aquest token impedirà la neteja del vostre dispositiu si encara no ha començat.",
"Nextcloud iOS app" : "Aplicació de Nextcloud per a iOS",
"Nextcloud Android app" : "Aplicació de Nextcloud per a Android",
@@ -419,6 +416,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: aquesta aplicació no es pot activar perquè fa que el servidor sigui inestable",
"mail" : "correu electrònic",
"Test email settings" : "Prova els paràmetres de correu electrònic",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per a un rendiment òptim és important configurar correctament les tasques de fons. Per a instàncies més grans ‘Cron’ és el paràmetre recomanat. Si us plau, per a més informació vegeu la documentació.",
+ "Execute one task with each page loaded." : "Executa una tasca amb cada pàgina carregada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php està registrat en un servei webcron per cridar cron.php cada 15 minuts per HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Utilitza el servei cron del sistema per cridar el fitxer cron.php cada 5 minuts.",
"Expire after " : "Caduca després de ",
"days" : "dies",
"Allow users to share via link" : "Permet als usuaris compartir mitjançant enllaços",
diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json
index 83472a45278..fdd6a598177 100644
--- a/apps/settings/l10n/ca.json
+++ b/apps/settings/l10n/ca.json
@@ -148,7 +148,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les aplicacions destacades es desenvolupen per i dins de la comunitat. Ofereixen funcionalitats centrals i estan preparades per ser emprades en producció.",
"Featured" : "Destacat",
"Update to {update}" : "Actualitza a {update}",
- "Update all" : "Actualitza tot",
"Results from other categories" : "Resultats d'altres categories",
"No apps found for your version" : "No s'han trobat aplicacions per la vostra versió",
"Disable all" : "Desactiva-ho tot",
@@ -348,11 +347,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Algunes feines no s’han executat des de %s. Considereu canviar al cron del sistema.",
"Last job ran %s." : "La darrera tasca es va executar %s.",
"Background job didn’t run yet!" : "La tasca de fons encara no s'ha executat!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per a un rendiment òptim és important configurar correctament les tasques de fons. Per a instàncies més grans ‘Cron’ és el paràmetre recomanat. Si us plau, per a més informació vegeu la documentació.",
"Pick background job setting" : "Trieu la configuració de la tasca en segon pla",
- "Execute one task with each page loaded." : "Executa una tasca amb cada pàgina carregada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php està registrat en un servei webcron per cridar cron.php cada 15 minuts per HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Utilitza el servei cron del sistema per cridar el fitxer cron.php cada 5 minuts.",
+ "Recommended" : "Recomanat",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per executar això es necessita l'extensió POSIX de PHP. Per més detalls, vegeu {linkstart}documentació de PHP{linkend}.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Com a administrador, podeu afinar els ajustaments per compartir fitxers. Si us plau, per més informació llegiu la documentació.",
@@ -403,6 +399,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." : "Si utilitzeu aplicacions de tercers per a connectar-vos a Nextcloud, assegureu-vos de crear i configurar una contrasenya d'aplicació per a cadascuna abans d'habilitar l'autenticació de segon factor.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "s’està instal·lant i actualitzant aplicacions mitjançant la botiga d'aplicacions o la compartició de núvols federats",
"You need to set your user email before being able to send test emails." : "Heu d'establir un nom d'usuari abans de poder enviar correus de prova.",
+ "Update all" : "Actualitza tot",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Revocant aquest token impedirà la neteja del vostre dispositiu si encara no ha començat.",
"Nextcloud iOS app" : "Aplicació de Nextcloud per a iOS",
"Nextcloud Android app" : "Aplicació de Nextcloud per a Android",
@@ -417,6 +414,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: aquesta aplicació no es pot activar perquè fa que el servidor sigui inestable",
"mail" : "correu electrònic",
"Test email settings" : "Prova els paràmetres de correu electrònic",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per a un rendiment òptim és important configurar correctament les tasques de fons. Per a instàncies més grans ‘Cron’ és el paràmetre recomanat. Si us plau, per a més informació vegeu la documentació.",
+ "Execute one task with each page loaded." : "Executa una tasca amb cada pàgina carregada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php està registrat en un servei webcron per cridar cron.php cada 15 minuts per HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Utilitza el servei cron del sistema per cridar el fitxer cron.php cada 5 minuts.",
"Expire after " : "Caduca després de ",
"days" : "dies",
"Allow users to share via link" : "Permet als usuaris compartir mitjançant enllaços",
diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js
index 2a6b993164e..c9003b6dba4 100644
--- a/apps/settings/l10n/cs.js
+++ b/apps/settings/l10n/cs.js
@@ -178,7 +178,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Doporučované aplikace jsou vyvíjeny komunitou. Jsou propojeny se zbytkem Nextcloud a připraveny na produkční nasazení.",
"Featured" : "Doporučené",
"Update to {update}" : "Aktualizovat na {update}",
- "Update all" : "Aktualizovat vše",
"All apps are up-to-date." : "Všechny aplikace jsou aktuální",
"Results from other categories" : "Výsledky z ostatních kategorií",
"No apps found for your version" : "Nebyly nalezeny aplikace pro vaši verzi",
@@ -434,11 +433,11 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Některé úlohy nebyly vykonány už od %s. Zvažte přepnutí na plánovač (cron) systému.",
"Last job ran %s." : "Poslední úloha byla vykonána: %s.",
"Background job didn’t run yet!" : "Úloha na pozadí ještě nebyla spuštěná!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro optimální výkon je důležité správně nastavit úlohy spouštěné na pozadí. Pro větší instance je doporučenou metodou použití systémového plánovače (cron). Více informací naleznete v dokumentaci.",
"Pick background job setting" : "Vybrat nastavení úlohy na pozadí",
- "Execute one task with each page loaded." : "Spustit jednu úlohu s načtením každé stránky.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je zaregistrován na službě webcron a bude přes HTTP volán každých 5 minut.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Použít systémový plánovač (cron) pro volání souboru cron.php každých 5 minut.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Vykonat jednu úlohu při každém načtení stránky. Příklad použití: instance pro jednoho uživatele.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php je zaregistrován u služby webcron aby přes HTTP volala cron.php každých 5 minut. Příklad použití: velmi malá instance (1-5 uživatelů, v závislosti na vytížení).",
+ "Recommended" : "Doporučené",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Použít systémový plánovač (cron) pro volání souboru cron.php každých 5 minut. Doporučeno pro všechny instance.",
"The cron.php needs to be executed by the system user \"%s\"." : "Je třeba, aby cron.php bylo spouštěno s právy systémového uživatele „%s“.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pro spuštění je potřeba PHP POSIX rozšíření. Více informací lze nalézt v {linkstart}dokumentaci k PHP{linkend}.",
"You need to enable the File sharing App." : "Je třeba zapnout aplikaci pro sdílení souborů.",
@@ -508,6 +507,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." : "Pokud pro připojování se k Nextcloud používáte aplikace třetích stran, nezapomeňte před zapnutím ověřování druhým faktorem vytvořit pro jednotlivé aplikace jejich hesla.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Instalovat a aktualizovat aplikace prostřednictvím katalogu nebo federované cloudové sdílení",
"You need to set your user email before being able to send test emails." : "Pro možnost odeslání zkušebních e-mailů musíte nejprve nastavit svou e-mailovou adresu.",
+ "Update all" : "Aktualizovat vše",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Odstranění tohoto tokenu může zabránit vymazání obsahu přístroje, pokud nebyl proces vymazání do teď zahájen.",
"Nextcloud iOS app" : "Aplikace Nextcloud pro iOS",
"Nextcloud Android app" : "Aplikace Nextcloud pro Android",
@@ -522,6 +522,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
"mail" : "e-mail",
"Test email settings" : "Vyzkoušet nastavení e-mailu",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro optimální výkon je důležité správně nastavit úlohy spouštěné na pozadí. Pro větší instance je doporučenou metodou použití systémového plánovače (cron). Více informací naleznete v dokumentaci.",
+ "Execute one task with each page loaded." : "Spustit jednu úlohu s načtením každé stránky.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je zaregistrován na službě webcron a bude přes HTTP volán každých 5 minut.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Použít systémový plánovač (cron) pro volání souboru cron.php každých 5 minut.",
"Expire after " : "Platnost skončí po",
"days" : "dnech",
"Allow users to share via link" : "Povolit uživatelům sdílet pomocí odkazů",
diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json
index a1fe381f961..e8e7601d0cf 100644
--- a/apps/settings/l10n/cs.json
+++ b/apps/settings/l10n/cs.json
@@ -176,7 +176,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Doporučované aplikace jsou vyvíjeny komunitou. Jsou propojeny se zbytkem Nextcloud a připraveny na produkční nasazení.",
"Featured" : "Doporučené",
"Update to {update}" : "Aktualizovat na {update}",
- "Update all" : "Aktualizovat vše",
"All apps are up-to-date." : "Všechny aplikace jsou aktuální",
"Results from other categories" : "Výsledky z ostatních kategorií",
"No apps found for your version" : "Nebyly nalezeny aplikace pro vaši verzi",
@@ -432,11 +431,11 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Některé úlohy nebyly vykonány už od %s. Zvažte přepnutí na plánovač (cron) systému.",
"Last job ran %s." : "Poslední úloha byla vykonána: %s.",
"Background job didn’t run yet!" : "Úloha na pozadí ještě nebyla spuštěná!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro optimální výkon je důležité správně nastavit úlohy spouštěné na pozadí. Pro větší instance je doporučenou metodou použití systémového plánovače (cron). Více informací naleznete v dokumentaci.",
"Pick background job setting" : "Vybrat nastavení úlohy na pozadí",
- "Execute one task with each page loaded." : "Spustit jednu úlohu s načtením každé stránky.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je zaregistrován na službě webcron a bude přes HTTP volán každých 5 minut.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Použít systémový plánovač (cron) pro volání souboru cron.php každých 5 minut.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Vykonat jednu úlohu při každém načtení stránky. Příklad použití: instance pro jednoho uživatele.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php je zaregistrován u služby webcron aby přes HTTP volala cron.php každých 5 minut. Příklad použití: velmi malá instance (1-5 uživatelů, v závislosti na vytížení).",
+ "Recommended" : "Doporučené",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Použít systémový plánovač (cron) pro volání souboru cron.php každých 5 minut. Doporučeno pro všechny instance.",
"The cron.php needs to be executed by the system user \"%s\"." : "Je třeba, aby cron.php bylo spouštěno s právy systémového uživatele „%s“.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pro spuštění je potřeba PHP POSIX rozšíření. Více informací lze nalézt v {linkstart}dokumentaci k PHP{linkend}.",
"You need to enable the File sharing App." : "Je třeba zapnout aplikaci pro sdílení souborů.",
@@ -506,6 +505,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." : "Pokud pro připojování se k Nextcloud používáte aplikace třetích stran, nezapomeňte před zapnutím ověřování druhým faktorem vytvořit pro jednotlivé aplikace jejich hesla.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Instalovat a aktualizovat aplikace prostřednictvím katalogu nebo federované cloudové sdílení",
"You need to set your user email before being able to send test emails." : "Pro možnost odeslání zkušebních e-mailů musíte nejprve nastavit svou e-mailovou adresu.",
+ "Update all" : "Aktualizovat vše",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Odstranění tohoto tokenu může zabránit vymazání obsahu přístroje, pokud nebyl proces vymazání do teď zahájen.",
"Nextcloud iOS app" : "Aplikace Nextcloud pro iOS",
"Nextcloud Android app" : "Aplikace Nextcloud pro Android",
@@ -520,6 +520,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
"mail" : "e-mail",
"Test email settings" : "Vyzkoušet nastavení e-mailu",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro optimální výkon je důležité správně nastavit úlohy spouštěné na pozadí. Pro větší instance je doporučenou metodou použití systémového plánovače (cron). Více informací naleznete v dokumentaci.",
+ "Execute one task with each page loaded." : "Spustit jednu úlohu s načtením každé stránky.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je zaregistrován na službě webcron a bude přes HTTP volán každých 5 minut.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Použít systémový plánovač (cron) pro volání souboru cron.php každých 5 minut.",
"Expire after " : "Platnost skončí po",
"days" : "dnech",
"Allow users to share via link" : "Povolit uživatelům sdílet pomocí odkazů",
diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js
index 8c77969ebcc..9b678f90e0f 100644
--- a/apps/settings/l10n/da.js
+++ b/apps/settings/l10n/da.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Udvalgte apps er udviklet af og inden for fællesskabet. De tilbyder central funktionalitet og er klar til produktionsbrug.",
"Featured" : "Fremhævet",
"Update to {update}" : "Opdater til {update}",
- "Update all" : "Opdater alle",
"Results from other categories" : "Resultater fra andre kategorier",
"No apps found for your version" : "Ingen apps fundet til din verion",
"Disable all" : "Slå alt fra",
@@ -414,11 +413,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Nogle opgaver blev ikke udført siden %s. Overvej venligst at skifte til system cron.",
"Last job ran %s." : "Seneste job blev udført: %s.",
"Background job didn’t run yet!" : "Baggrundsjobbet kørte ikke endnu!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ydeevne er det vigtigt at konfigurere baggrundsjob korrekt. For større tilfælde er 'Cron' den anbefalede indstilling. Se venligst dokumentationen for mere information.",
"Pick background job setting" : "Vælg baggrundsjob indstilling",
- "Execute one task with each page loaded." : "Udfør én opgave med hver side indlæst.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php er registreret på en webcron-tjeneste til at ringe til cron.php hvert 5. minut over HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Brug systemets cron-tjeneste til at ringe til cron.php-filen hvert 5. minut.",
+ "Recommended" : "Anbefalet",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php skal udføres af systembrugeren \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "For at køre dette skal du bruge PHP POSIX-udvidelsen. Se {linkstart}PHP-dokumentation{linkend} for flere detaljer.",
"You need to enable the File sharing App." : "Du skal aktivere fildelingsappen.",
@@ -483,6 +479,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." : "Hvis du bruger tredjepartsapplikationer til at oprette forbindelse til Nextcloud, skal du sørge for at oprette og konfigurere en app-adgangskode for hver, før du aktiverer anden faktor-godkendelse.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installation og opdatering af apps via app-butikken eller sammensluttet Cloud deling",
"You need to set your user email before being able to send test emails." : "Du skal angive din bruger-e-mail før der kan sendes test-e-mail.",
+ "Update all" : "Opdater alle",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Tilbagekaldelse af dette token kan muligvis forhindre sletning af din enhed, hvis den ikke har startet sletningen endnu.",
"Nextcloud iOS app" : "Nextcloud iOS app",
"Nextcloud Android app" : "Nextcloud Android app",
@@ -497,6 +494,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Fejl: Denne app kan ikke aktiveres fordi den gør serveren ustabil",
"mail" : "mail",
"Test email settings" : "Test e-mail-indstillinger",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ydeevne er det vigtigt at konfigurere baggrundsjob korrekt. For større tilfælde er 'Cron' den anbefalede indstilling. Se venligst dokumentationen for mere information.",
+ "Execute one task with each page loaded." : "Udfør én opgave med hver side indlæst.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php er registreret på en webcron-tjeneste til at ringe til cron.php hvert 5. minut over HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Brug systemets cron-tjeneste til at ringe til cron.php-filen hvert 5. minut.",
"Expire after " : "Udløber efter",
"days" : "dage",
"Allow users to share via link" : "Tillad brugere at dele via link",
diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json
index d22bc76b52e..c702b95b23c 100644
--- a/apps/settings/l10n/da.json
+++ b/apps/settings/l10n/da.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Udvalgte apps er udviklet af og inden for fællesskabet. De tilbyder central funktionalitet og er klar til produktionsbrug.",
"Featured" : "Fremhævet",
"Update to {update}" : "Opdater til {update}",
- "Update all" : "Opdater alle",
"Results from other categories" : "Resultater fra andre kategorier",
"No apps found for your version" : "Ingen apps fundet til din verion",
"Disable all" : "Slå alt fra",
@@ -412,11 +411,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Nogle opgaver blev ikke udført siden %s. Overvej venligst at skifte til system cron.",
"Last job ran %s." : "Seneste job blev udført: %s.",
"Background job didn’t run yet!" : "Baggrundsjobbet kørte ikke endnu!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ydeevne er det vigtigt at konfigurere baggrundsjob korrekt. For større tilfælde er 'Cron' den anbefalede indstilling. Se venligst dokumentationen for mere information.",
"Pick background job setting" : "Vælg baggrundsjob indstilling",
- "Execute one task with each page loaded." : "Udfør én opgave med hver side indlæst.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php er registreret på en webcron-tjeneste til at ringe til cron.php hvert 5. minut over HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Brug systemets cron-tjeneste til at ringe til cron.php-filen hvert 5. minut.",
+ "Recommended" : "Anbefalet",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php skal udføres af systembrugeren \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "For at køre dette skal du bruge PHP POSIX-udvidelsen. Se {linkstart}PHP-dokumentation{linkend} for flere detaljer.",
"You need to enable the File sharing App." : "Du skal aktivere fildelingsappen.",
@@ -481,6 +477,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." : "Hvis du bruger tredjepartsapplikationer til at oprette forbindelse til Nextcloud, skal du sørge for at oprette og konfigurere en app-adgangskode for hver, før du aktiverer anden faktor-godkendelse.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installation og opdatering af apps via app-butikken eller sammensluttet Cloud deling",
"You need to set your user email before being able to send test emails." : "Du skal angive din bruger-e-mail før der kan sendes test-e-mail.",
+ "Update all" : "Opdater alle",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Tilbagekaldelse af dette token kan muligvis forhindre sletning af din enhed, hvis den ikke har startet sletningen endnu.",
"Nextcloud iOS app" : "Nextcloud iOS app",
"Nextcloud Android app" : "Nextcloud Android app",
@@ -495,6 +492,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Fejl: Denne app kan ikke aktiveres fordi den gør serveren ustabil",
"mail" : "mail",
"Test email settings" : "Test e-mail-indstillinger",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ydeevne er det vigtigt at konfigurere baggrundsjob korrekt. For større tilfælde er 'Cron' den anbefalede indstilling. Se venligst dokumentationen for mere information.",
+ "Execute one task with each page loaded." : "Udfør én opgave med hver side indlæst.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php er registreret på en webcron-tjeneste til at ringe til cron.php hvert 5. minut over HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Brug systemets cron-tjeneste til at ringe til cron.php-filen hvert 5. minut.",
"Expire after " : "Udløber efter",
"days" : "dage",
"Allow users to share via link" : "Tillad brugere at dele via link",
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index 7f3e079aa24..d5b3f225215 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -136,6 +136,7 @@ OC.L10N.register(
"MariaDB version \"%s\" is used. Nextcloud 21 will no longer support this version and requires MariaDB 10.2 or higher." : "Es wird die MariaDB-Version \"%s\" verwendet. Nextcloud 21 wird diese Version nicht mehr unterstützen und benötigt MariaDB 10.2 oder höher.",
"MySQL version \"%s\" is used. Nextcloud 21 will no longer support this version and requires MySQL 8.0 or MariaDB 10.2 or higher." : "Es wird die MySQL-Version \"%s\" verwendet. Nextcloud 21 wird diese Version nicht mehr unterstützen und benötigt MySQL 8.0, MariaDB 10.2 oder höher.",
"PostgreSQL version \"%s\" is used. Nextcloud 21 will no longer support this version and requires PostgreSQL 9.6 or higher." : "Es wird die PostgreSQL-Version \"%s\" verwendet. Nextcloud 21 wird diese Version nicht mehr unterstützen und benötigt PostgreSQL 9.6 oder höher.",
+ "Profile information" : "Profilinformation",
"Nextcloud settings" : "Nextcloud-Einstellungen",
"Administration privileges" : "Administratorrechte",
"Here you can decide which group can access certain sections of the administration settings." : "Hier kannst Du festlegen, welche Gruppe auf bestimmte Bereiche der Administrationseinstellungen zugreifen kann.",
@@ -171,13 +172,13 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Vorgestellte Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.",
"Featured" : "Vorgestellt",
"Update to {update}" : "Aktualisieren auf {update}",
- "Update all" : "Alle aktualisieren",
"All apps are up-to-date." : "Alle Apps sind aktuell.",
"Results from other categories" : "Ergebnisse aus anderen Kategorien",
"No apps found for your version" : "Es wurden keine Apps für Deine Version gefunden",
"Disable all" : "Alle deaktivieren",
"Enable all" : "Alle aktivieren",
"_%n app has an update available_::_%n apps have an update available_" : ["Für %n App ist eine Aktualisierung verfügbar","Für %n Apps sind Aktualisierungen verfügbar"],
+ "_Update_::_Update all_" : ["Aktualisieren","Alle aktualisieren"],
"Marked for remote wipe" : "Für Fernlöschung markiert",
"Device settings" : "Geräteeinstellungen",
"Allow filesystem access" : "Erlaube Dateisystem-Zugriff",
@@ -427,11 +428,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Einige Aufträge wurden seit %s nicht mehr ausgeführt. Bitte erwäge die Umstellung auf System-Cron.",
"Last job ran %s." : "Letzte Aufgabe ausgeführt %s",
"Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen findest Du in der Dokumentation.",
"Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus",
- "Execute one task with each page loaded." : "Eine Aufgabe bei jedem Laden einer Seite ausführen.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.",
+ "Recommended" : "Empfohlen",
"The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Um dies auszuführen, wird die PHP-Posix Erweiterung benötigt. Weitere Informationen in der {linkstart}PHP-Dokumentation{linkend}. ",
"You need to enable the File sharing App." : "Du musst die File sharing App aktivieren.",
@@ -446,6 +444,7 @@ OC.L10N.register(
"Allow public uploads" : "Öffentliches Hochladen erlauben",
"Always ask for a password" : "Immer nach einem Passwort fragen",
"Enforce password protection" : "Passwortschutz erzwingen",
+ "Exclude groups from password requirements:" : "Gruppen von Passwortanforderungen ausschließen:",
"Set default expiration date" : "Standardmäßiges Ablaufdatum setzen",
"Exclude groups from creating link shares:" : "Gruppen von der Erstellung von Link-Freigaben ausschließen:",
"Allow resharing" : "Weiterverteilen erlauben",
@@ -458,6 +457,8 @@ OC.L10N.register(
"Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit)",
+ "Match username when restricting to full match" : "Übereinstimmung mit dem Benutzernamen bei Einschränkung auf vollständige Übereinstimmung",
+ "Ignore second display name in parentheses if any (example: \"First display name (second ignored display name)\")" : "Den zweiten Anzeigenamen in Klammern ignorieren, falls vorhanden (Beispiel: \"Erster Anzeigename (zweiter ignorierter Anzeigename)\")",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite (Wird nur gezeigt wenn die Dateiliste nicht angezeigt wird.) ",
"This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.",
"Default share permissions" : "Standardberechtigungen für das Teilen",
@@ -498,6 +499,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." : "Wenn Du Anwendungen von Drittanbietern verwendest, um sich mit Nextcloud zu verbinden, stelle bitte sicher, dass Du für jede Anwendung ein Anwendungspasswort erstellest und einrichtest, bevor Du die Zwei-Faktor-Authentifizierung aktivierst.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing",
"You need to set your user email before being able to send test emails." : "Du musst Deine Benutzer-E-Mail-Adresse angeben, bevor Du Test-E-Mails versenden kannst.",
+ "Update all" : "Alle aktualisieren",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.",
"Nextcloud iOS app" : "Nextcloud iOS-App",
"Nextcloud Android app" : "Nextcloud Android-App",
@@ -512,6 +514,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
"mail" : "E-Mail",
"Test email settings" : "E-Mail-Einstellungen testen",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen findest Du in der Dokumentation.",
+ "Execute one task with each page loaded." : "Eine Aufgabe bei jedem Laden einer Seite ausführen.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.",
"Expire after " : "Ablauf nach ",
"days" : "Tagen",
"Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index f6e58edabf7..60de5de643d 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -134,6 +134,7 @@
"MariaDB version \"%s\" is used. Nextcloud 21 will no longer support this version and requires MariaDB 10.2 or higher." : "Es wird die MariaDB-Version \"%s\" verwendet. Nextcloud 21 wird diese Version nicht mehr unterstützen und benötigt MariaDB 10.2 oder höher.",
"MySQL version \"%s\" is used. Nextcloud 21 will no longer support this version and requires MySQL 8.0 or MariaDB 10.2 or higher." : "Es wird die MySQL-Version \"%s\" verwendet. Nextcloud 21 wird diese Version nicht mehr unterstützen und benötigt MySQL 8.0, MariaDB 10.2 oder höher.",
"PostgreSQL version \"%s\" is used. Nextcloud 21 will no longer support this version and requires PostgreSQL 9.6 or higher." : "Es wird die PostgreSQL-Version \"%s\" verwendet. Nextcloud 21 wird diese Version nicht mehr unterstützen und benötigt PostgreSQL 9.6 oder höher.",
+ "Profile information" : "Profilinformation",
"Nextcloud settings" : "Nextcloud-Einstellungen",
"Administration privileges" : "Administratorrechte",
"Here you can decide which group can access certain sections of the administration settings." : "Hier kannst Du festlegen, welche Gruppe auf bestimmte Bereiche der Administrationseinstellungen zugreifen kann.",
@@ -169,13 +170,13 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Vorgestellte Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.",
"Featured" : "Vorgestellt",
"Update to {update}" : "Aktualisieren auf {update}",
- "Update all" : "Alle aktualisieren",
"All apps are up-to-date." : "Alle Apps sind aktuell.",
"Results from other categories" : "Ergebnisse aus anderen Kategorien",
"No apps found for your version" : "Es wurden keine Apps für Deine Version gefunden",
"Disable all" : "Alle deaktivieren",
"Enable all" : "Alle aktivieren",
"_%n app has an update available_::_%n apps have an update available_" : ["Für %n App ist eine Aktualisierung verfügbar","Für %n Apps sind Aktualisierungen verfügbar"],
+ "_Update_::_Update all_" : ["Aktualisieren","Alle aktualisieren"],
"Marked for remote wipe" : "Für Fernlöschung markiert",
"Device settings" : "Geräteeinstellungen",
"Allow filesystem access" : "Erlaube Dateisystem-Zugriff",
@@ -425,11 +426,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Einige Aufträge wurden seit %s nicht mehr ausgeführt. Bitte erwäge die Umstellung auf System-Cron.",
"Last job ran %s." : "Letzte Aufgabe ausgeführt %s",
"Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen findest Du in der Dokumentation.",
"Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus",
- "Execute one task with each page loaded." : "Eine Aufgabe bei jedem Laden einer Seite ausführen.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.",
+ "Recommended" : "Empfohlen",
"The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Um dies auszuführen, wird die PHP-Posix Erweiterung benötigt. Weitere Informationen in der {linkstart}PHP-Dokumentation{linkend}. ",
"You need to enable the File sharing App." : "Du musst die File sharing App aktivieren.",
@@ -444,6 +442,7 @@
"Allow public uploads" : "Öffentliches Hochladen erlauben",
"Always ask for a password" : "Immer nach einem Passwort fragen",
"Enforce password protection" : "Passwortschutz erzwingen",
+ "Exclude groups from password requirements:" : "Gruppen von Passwortanforderungen ausschließen:",
"Set default expiration date" : "Standardmäßiges Ablaufdatum setzen",
"Exclude groups from creating link shares:" : "Gruppen von der Erstellung von Link-Freigaben ausschließen:",
"Allow resharing" : "Weiterverteilen erlauben",
@@ -456,6 +455,8 @@
"Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen",
"If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.",
"Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit)",
+ "Match username when restricting to full match" : "Übereinstimmung mit dem Benutzernamen bei Einschränkung auf vollständige Übereinstimmung",
+ "Ignore second display name in parentheses if any (example: \"First display name (second ignored display name)\")" : "Den zweiten Anzeigenamen in Klammern ignorieren, falls vorhanden (Beispiel: \"Erster Anzeigename (zweiter ignorierter Anzeigename)\")",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite (Wird nur gezeigt wenn die Dateiliste nicht angezeigt wird.) ",
"This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.",
"Default share permissions" : "Standardberechtigungen für das Teilen",
@@ -496,6 +497,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." : "Wenn Du Anwendungen von Drittanbietern verwendest, um sich mit Nextcloud zu verbinden, stelle bitte sicher, dass Du für jede Anwendung ein Anwendungspasswort erstellest und einrichtest, bevor Du die Zwei-Faktor-Authentifizierung aktivierst.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing",
"You need to set your user email before being able to send test emails." : "Du musst Deine Benutzer-E-Mail-Adresse angeben, bevor Du Test-E-Mails versenden kannst.",
+ "Update all" : "Alle aktualisieren",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.",
"Nextcloud iOS app" : "Nextcloud iOS-App",
"Nextcloud Android app" : "Nextcloud Android-App",
@@ -510,6 +512,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
"mail" : "E-Mail",
"Test email settings" : "E-Mail-Einstellungen testen",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen findest Du in der Dokumentation.",
+ "Execute one task with each page loaded." : "Eine Aufgabe bei jedem Laden einer Seite ausführen.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.",
"Expire after " : "Ablauf nach ",
"days" : "Tagen",
"Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen",
diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js
index aad06be38e9..ef00702c8be 100644
--- a/apps/settings/l10n/de_DE.js
+++ b/apps/settings/l10n/de_DE.js
@@ -37,7 +37,7 @@ OC.L10N.register(
"Your <strong>group memberships</strong> were modified" : "Ihre <strong>Gruppenmitgliedschaft</strong> wurde geändert",
"{actor} changed your password" : "{actor} hat Ihr Passwort geändert",
"You changed your password" : "Sie haben Ihr Passwort geändert",
- "Your password was reset by an administrator" : "Ihr Passwort wurde vom Administrator zurückgesetzt",
+ "Your password was reset by an administrator" : "Ihr Passwort wurde von der Administration zurückgesetzt",
"Your password was reset" : "Ihr Passwort wurde zurückgesetzt",
"{actor} changed your email address" : "{actor} hat Ihre E-Mail-Adresse geändert",
"You changed your email address" : "Sie haben Ihre E-Mail-Adresse geändert",
@@ -60,7 +60,7 @@ OC.L10N.register(
"Saved" : "Gespeichert",
"No user supplied" : "Kein Benutzer angegeben",
"Authentication error" : "Authentifizierungsfehler",
- "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.",
+ "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administrationskonto an, da sonst alle Benutzerdaten verlorengehen.",
"Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfen Sie das Passwort und versuchen Sie es erneut.",
"Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.",
"installing and updating apps via the App Store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated-Cloud-Sharing",
@@ -100,7 +100,7 @@ OC.L10N.register(
"Password changed for %s" : "Passwort geändert für %s ",
"If you did not request this, please contact an administrator." : "Wenn Sie das nicht angefordert haben sollten, wenden Sie sich bitte an den Administrator.",
"Your email address on %s was changed." : "Ihre E-Mail-Adresse auf %s wurde geändert.",
- "Your email address on %s was changed by an administrator." : "Ihre E-Mail-Adresse auf %s wurde von einem Administrator geändert.",
+ "Your email address on %s was changed by an administrator." : "Ihre E-Mail-Adresse auf %s wurde von der Administration geändert.",
"Email address for %1$s changed on %2$s" : "E-Mail-Adresse für %1$s geändert auf %2$s",
"Email address changed for %s" : "E-Mail-Adresse geändert für %s",
"The new email address is %s" : "Die neue E-Mail-Adresse lautet %s",
@@ -171,20 +171,20 @@ OC.L10N.register(
"Visit website" : "Webseite besuchen",
"Report a bug" : "Einen technischen Fehler melden",
"User documentation" : "Dokumentation für Benutzer",
- "Admin documentation" : "Dokumentation für Administratoren",
+ "Admin documentation" : "Dokumentation für die Administration",
"Developer documentation" : "Dokumentation für Entwickler",
"This app is supported via your current Nextcloud subscription." : "Diese App wird von Ihrem aktuellen Nextcloud-Abonnement unterstützt.",
"Supported" : "Unterstützt",
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Vorgestellte Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.",
"Featured" : "Vorgestellt",
"Update to {update}" : "Aktualisieren auf {update}",
- "Update all" : "Alle aktualisieren",
"All apps are up-to-date." : "Alle Apps sind aktuell.",
"Results from other categories" : "Ergebnisse aus anderen Kategorien",
"No apps found for your version" : "Es wurden keine Apps für Ihre Version gefunden",
"Disable all" : "Alle deaktivieren",
"Enable all" : "Alle aktivieren",
"_%n app has an update available_::_%n apps have an update available_" : ["Für %n App ist eine Aktualisierung verfügbar","Für %n Apps sind Aktualisierungen verfügbar"],
+ "_Update_::_Update all_" : ["Aktualisieren","Alle aktualisieren"],
"Marked for remote wipe" : "Für Fernlöschung markiert",
"Device settings" : "Geräteeinstellungen",
"Allow filesystem access" : "Erlaube Dateisystem-Zugriff",
@@ -342,7 +342,7 @@ OC.L10N.register(
"Enter group name" : "Gruppenname eingeben",
"Add group" : "Gruppe hinzufügen",
"Active users" : "Aktive Benutzer",
- "Admins" : "Administratoren",
+ "Admins" : "Administration",
"Disabled users" : "Deaktivierte Benutzer",
"Default quota:" : "Standardkontingent:",
"Select default quota" : "Standardkontingent auswählen",
@@ -381,7 +381,7 @@ OC.L10N.register(
"An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Sie werden in 5 Sekunden zur Aktualisierungsseite weitergeleitet.",
"Error: This app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
- "Administrator documentation" : "Dokumentation für Administratoren",
+ "Administrator documentation" : "Dokumentation für die Administration",
"Documentation" : "Dokumentation",
"Forum" : "Forum",
"Login" : "Anmelden",
@@ -434,11 +434,11 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Einige Aufträge wurden seit %s nicht mehr ausgeführt. Bitte erwägen Sie die Umstellung auf System-Cron.",
"Last job ran %s." : "Letzte Aufgabe ausgeführt %s",
"Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.",
"Pick background job setting" : "Einstellung für Hintergrund-Aufgaben auswählen",
- "Execute one task with each page loaded." : "Eine Aufgabe bei jedem Laden einer Seite ausführen.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Mit jeder geladenen Seite wird eine Aufgabe ausgeführt. Anwendungsfall: Einzelbenutzer-Installation.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php ist bei einem Webcron-Dienst registriert, um cron.php alle 5 Minuten über HTTP aufzurufen. Anwendungsfall: Sehr kleine Instanz (1–5 Benutzer je nach Nutzung).",
+ "Recommended" : "Empfohlen",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Verwenden Sie den System-Cron-Dienst, um die Datei cron.php alle 5 Minuten aufzurufen. Empfohlen für alle Installationen.",
"The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Um dies auszuführen, wird die PHP-Posix-Erweiterung benötigt. Weitere Informationen finden Sie in der {linkstart}PHP-Dokumentation{linkend}. ",
"You need to enable the File sharing App." : "Sie müssen die App \"File sharing\" aktivieren.",
@@ -508,6 +508,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." : "Wenn Sie Anwendungen von Drittanbietern verwenden, um sich mit Nextcloud zu verbinden, stellen Sie bitte sicher, dass Sie für jede Anwendung ein Anwendungspasswort erstellen und konfigurieren, bevor Sie die Zwei-Faktor-Authentifizierung aktivieren.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing",
"You need to set your user email before being able to send test emails." : "Sie müssen Ihre Benutzer-E-Mail-Adresse angeben, bevor Sie Test-E-Mails versenden können.",
+ "Update all" : "Alle aktualisieren",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Ihrem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.",
"Nextcloud iOS app" : "Nextcloud iOS-App",
"Nextcloud Android app" : "Nextcloud Android-App",
@@ -522,6 +523,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
"mail" : "E-Mail",
"Test email settings" : "E-Mail-Einstellungen testen",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.",
+ "Execute one task with each page loaded." : "Eine Aufgabe bei jedem Laden einer Seite ausführen.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.",
"Expire after " : "Ablauf nach ",
"days" : "Tagen",
"Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen",
diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json
index a3e5f2f3697..9b3f2b0760c 100644
--- a/apps/settings/l10n/de_DE.json
+++ b/apps/settings/l10n/de_DE.json
@@ -35,7 +35,7 @@
"Your <strong>group memberships</strong> were modified" : "Ihre <strong>Gruppenmitgliedschaft</strong> wurde geändert",
"{actor} changed your password" : "{actor} hat Ihr Passwort geändert",
"You changed your password" : "Sie haben Ihr Passwort geändert",
- "Your password was reset by an administrator" : "Ihr Passwort wurde vom Administrator zurückgesetzt",
+ "Your password was reset by an administrator" : "Ihr Passwort wurde von der Administration zurückgesetzt",
"Your password was reset" : "Ihr Passwort wurde zurückgesetzt",
"{actor} changed your email address" : "{actor} hat Ihre E-Mail-Adresse geändert",
"You changed your email address" : "Sie haben Ihre E-Mail-Adresse geändert",
@@ -58,7 +58,7 @@
"Saved" : "Gespeichert",
"No user supplied" : "Kein Benutzer angegeben",
"Authentication error" : "Authentifizierungsfehler",
- "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.",
+ "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administrationskonto an, da sonst alle Benutzerdaten verlorengehen.",
"Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfen Sie das Passwort und versuchen Sie es erneut.",
"Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.",
"installing and updating apps via the App Store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated-Cloud-Sharing",
@@ -98,7 +98,7 @@
"Password changed for %s" : "Passwort geändert für %s ",
"If you did not request this, please contact an administrator." : "Wenn Sie das nicht angefordert haben sollten, wenden Sie sich bitte an den Administrator.",
"Your email address on %s was changed." : "Ihre E-Mail-Adresse auf %s wurde geändert.",
- "Your email address on %s was changed by an administrator." : "Ihre E-Mail-Adresse auf %s wurde von einem Administrator geändert.",
+ "Your email address on %s was changed by an administrator." : "Ihre E-Mail-Adresse auf %s wurde von der Administration geändert.",
"Email address for %1$s changed on %2$s" : "E-Mail-Adresse für %1$s geändert auf %2$s",
"Email address changed for %s" : "E-Mail-Adresse geändert für %s",
"The new email address is %s" : "Die neue E-Mail-Adresse lautet %s",
@@ -169,20 +169,20 @@
"Visit website" : "Webseite besuchen",
"Report a bug" : "Einen technischen Fehler melden",
"User documentation" : "Dokumentation für Benutzer",
- "Admin documentation" : "Dokumentation für Administratoren",
+ "Admin documentation" : "Dokumentation für die Administration",
"Developer documentation" : "Dokumentation für Entwickler",
"This app is supported via your current Nextcloud subscription." : "Diese App wird von Ihrem aktuellen Nextcloud-Abonnement unterstützt.",
"Supported" : "Unterstützt",
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Vorgestellte Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.",
"Featured" : "Vorgestellt",
"Update to {update}" : "Aktualisieren auf {update}",
- "Update all" : "Alle aktualisieren",
"All apps are up-to-date." : "Alle Apps sind aktuell.",
"Results from other categories" : "Ergebnisse aus anderen Kategorien",
"No apps found for your version" : "Es wurden keine Apps für Ihre Version gefunden",
"Disable all" : "Alle deaktivieren",
"Enable all" : "Alle aktivieren",
"_%n app has an update available_::_%n apps have an update available_" : ["Für %n App ist eine Aktualisierung verfügbar","Für %n Apps sind Aktualisierungen verfügbar"],
+ "_Update_::_Update all_" : ["Aktualisieren","Alle aktualisieren"],
"Marked for remote wipe" : "Für Fernlöschung markiert",
"Device settings" : "Geräteeinstellungen",
"Allow filesystem access" : "Erlaube Dateisystem-Zugriff",
@@ -340,7 +340,7 @@
"Enter group name" : "Gruppenname eingeben",
"Add group" : "Gruppe hinzufügen",
"Active users" : "Aktive Benutzer",
- "Admins" : "Administratoren",
+ "Admins" : "Administration",
"Disabled users" : "Deaktivierte Benutzer",
"Default quota:" : "Standardkontingent:",
"Select default quota" : "Standardkontingent auswählen",
@@ -379,7 +379,7 @@
"An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Sie werden in 5 Sekunden zur Aktualisierungsseite weitergeleitet.",
"Error: This app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
- "Administrator documentation" : "Dokumentation für Administratoren",
+ "Administrator documentation" : "Dokumentation für die Administration",
"Documentation" : "Dokumentation",
"Forum" : "Forum",
"Login" : "Anmelden",
@@ -432,11 +432,11 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Einige Aufträge wurden seit %s nicht mehr ausgeführt. Bitte erwägen Sie die Umstellung auf System-Cron.",
"Last job ran %s." : "Letzte Aufgabe ausgeführt %s",
"Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.",
"Pick background job setting" : "Einstellung für Hintergrund-Aufgaben auswählen",
- "Execute one task with each page loaded." : "Eine Aufgabe bei jedem Laden einer Seite ausführen.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Mit jeder geladenen Seite wird eine Aufgabe ausgeführt. Anwendungsfall: Einzelbenutzer-Installation.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php ist bei einem Webcron-Dienst registriert, um cron.php alle 5 Minuten über HTTP aufzurufen. Anwendungsfall: Sehr kleine Instanz (1–5 Benutzer je nach Nutzung).",
+ "Recommended" : "Empfohlen",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Verwenden Sie den System-Cron-Dienst, um die Datei cron.php alle 5 Minuten aufzurufen. Empfohlen für alle Installationen.",
"The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Um dies auszuführen, wird die PHP-Posix-Erweiterung benötigt. Weitere Informationen finden Sie in der {linkstart}PHP-Dokumentation{linkend}. ",
"You need to enable the File sharing App." : "Sie müssen die App \"File sharing\" aktivieren.",
@@ -506,6 +506,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." : "Wenn Sie Anwendungen von Drittanbietern verwenden, um sich mit Nextcloud zu verbinden, stellen Sie bitte sicher, dass Sie für jede Anwendung ein Anwendungspasswort erstellen und konfigurieren, bevor Sie die Zwei-Faktor-Authentifizierung aktivieren.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing",
"You need to set your user email before being able to send test emails." : "Sie müssen Ihre Benutzer-E-Mail-Adresse angeben, bevor Sie Test-E-Mails versenden können.",
+ "Update all" : "Alle aktualisieren",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Ihrem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.",
"Nextcloud iOS app" : "Nextcloud iOS-App",
"Nextcloud Android app" : "Nextcloud Android-App",
@@ -520,6 +521,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
"mail" : "E-Mail",
"Test email settings" : "E-Mail-Einstellungen testen",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.",
+ "Execute one task with each page loaded." : "Eine Aufgabe bei jedem Laden einer Seite ausführen.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.",
"Expire after " : "Ablauf nach ",
"days" : "Tagen",
"Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen",
diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js
index f9f58bdcd8f..9a787a802a6 100644
--- a/apps/settings/l10n/el.js
+++ b/apps/settings/l10n/el.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Οι προτεινόμενες εφαρμογές αναπτύσσονται από και εντός της κοινότητας. Προσφέρουν κεντρική λειτουργικότητα και είναι έτοιμες για χρήση.",
"Featured" : "Προτεινόμενες",
"Update to {update}" : "Ενημέρωση σε {update}",
- "Update all" : "Ενημέρωση όλων",
"All apps are up-to-date." : "Όλες οι εφαρμογές είναι ενημερωμένες.",
"Results from other categories" : "Αποτελέσματα από άλλες κατηγορίες",
"No apps found for your version" : "Δεν βρέθηκαν εφαρμογές για αυτή την έκδοση",
@@ -419,11 +418,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Ορισμένες εργασίες δεν εκτελέστηκαν από %s. Σκεφτείτε να μεταβείτε στο σύστημα cron.",
"Last job ran %s." : "Η τελευταία εργασία %s.",
"Background job didn’t run yet!" : "Η εργασία παρασκηνίου δεν εκτελέστηκε ακόμη!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Για βέλτιστη απόδοση είναι σημαντικό να ρυθμίσετε σωστά τις εργασίες παρασκηνίου. Για μεγαλύτερα συστήματα, η συνιστώμενη ρύθμιση είναι \"Cron\". Για περισσότερες πληροφορίες, ανατρέξτε στην τεκμηρίωση.",
"Pick background job setting" : "Επιλέξτε τη ρύθμιση εργασίας παρασκηνίου",
- "Execute one task with each page loaded." : "Εκτελέστε μια εργασία με κάθε σελίδα φορτωμένη.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 5 λεπτά μέσω HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συστήματος για να καλέσετε το cron.php αρχείο κάθε 5 λεπτά.",
+ "Recommended" : "Προτείνεται",
"The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Για να τρέξετε αυτό χρειάζεστε την επέκταση PHP POSIX. Δείτε {linkstart} PHP τεκμηρίωση {linked} για περισσότερες λεπτομέρειες.",
"You need to enable the File sharing App." : "Πρέπει να ενεργοποιήσετε την εφαρμογή File sharing",
@@ -488,6 +484,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." : "Εάν χρησιμοποιείτε εφαρμογές τρίτων για σύνδεση στο Nextcloud, βεβαιωθείτε ότι έχετε δημιουργήσει και διαμορφώσει έναν κωδικό πρόσβασης εφαρμογής για κάθε έναν προτού ενεργοποιήσετε τον έλεγχο ταυτότητας δεύτερου παράγοντα.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "εγκατάσταση και ενημέρωση εφαρμογών μέσω του καταστήματος εφαρμογών ή του ",
"You need to set your user email before being able to send test emails." : "Πρέπει να ορίσετε το email του χρήστη πριν να είστε σε θέση να στείλετε δοκιμαστικά emails.",
+ "Update all" : "Ενημέρωση όλων",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Η κατάργηση αυτού του αναγνωριστικού ενδέχεται να αποτρέψει την εκκαθάριση της συσκευής σας αν δεν έχει ξεκινήσει ακόμα.",
"Nextcloud iOS app" : "Nextcloud iOS app",
"Nextcloud Android app" : "Nextcloud Android app",
@@ -502,6 +499,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Σφάλμα: αυτή η εφαρμογή δεν μπορεί να ενεργοποιηθεί γιατί θα καταστήσει ασταθή τον διακομιστή.",
"mail" : "ταχυδρομείο",
"Test email settings" : "Δοκιμή ρυθμίσεων email",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Για βέλτιστη απόδοση είναι σημαντικό να ρυθμίσετε σωστά τις εργασίες παρασκηνίου. Για μεγαλύτερα συστήματα, η συνιστώμενη ρύθμιση είναι \"Cron\". Για περισσότερες πληροφορίες, ανατρέξτε στην τεκμηρίωση.",
+ "Execute one task with each page loaded." : "Εκτελέστε μια εργασία με κάθε σελίδα φορτωμένη.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 5 λεπτά μέσω HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συστήματος για να καλέσετε το cron.php αρχείο κάθε 5 λεπτά.",
"Expire after " : "Λήξη μετά από",
"days" : "ημέρες",
"Allow users to share via link" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μέσω συνδέσμου",
diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json
index a03079ff9c3..51ce77c1ee4 100644
--- a/apps/settings/l10n/el.json
+++ b/apps/settings/l10n/el.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Οι προτεινόμενες εφαρμογές αναπτύσσονται από και εντός της κοινότητας. Προσφέρουν κεντρική λειτουργικότητα και είναι έτοιμες για χρήση.",
"Featured" : "Προτεινόμενες",
"Update to {update}" : "Ενημέρωση σε {update}",
- "Update all" : "Ενημέρωση όλων",
"All apps are up-to-date." : "Όλες οι εφαρμογές είναι ενημερωμένες.",
"Results from other categories" : "Αποτελέσματα από άλλες κατηγορίες",
"No apps found for your version" : "Δεν βρέθηκαν εφαρμογές για αυτή την έκδοση",
@@ -417,11 +416,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Ορισμένες εργασίες δεν εκτελέστηκαν από %s. Σκεφτείτε να μεταβείτε στο σύστημα cron.",
"Last job ran %s." : "Η τελευταία εργασία %s.",
"Background job didn’t run yet!" : "Η εργασία παρασκηνίου δεν εκτελέστηκε ακόμη!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Για βέλτιστη απόδοση είναι σημαντικό να ρυθμίσετε σωστά τις εργασίες παρασκηνίου. Για μεγαλύτερα συστήματα, η συνιστώμενη ρύθμιση είναι \"Cron\". Για περισσότερες πληροφορίες, ανατρέξτε στην τεκμηρίωση.",
"Pick background job setting" : "Επιλέξτε τη ρύθμιση εργασίας παρασκηνίου",
- "Execute one task with each page loaded." : "Εκτελέστε μια εργασία με κάθε σελίδα φορτωμένη.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 5 λεπτά μέσω HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συστήματος για να καλέσετε το cron.php αρχείο κάθε 5 λεπτά.",
+ "Recommended" : "Προτείνεται",
"The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Για να τρέξετε αυτό χρειάζεστε την επέκταση PHP POSIX. Δείτε {linkstart} PHP τεκμηρίωση {linked} για περισσότερες λεπτομέρειες.",
"You need to enable the File sharing App." : "Πρέπει να ενεργοποιήσετε την εφαρμογή File sharing",
@@ -486,6 +482,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." : "Εάν χρησιμοποιείτε εφαρμογές τρίτων για σύνδεση στο Nextcloud, βεβαιωθείτε ότι έχετε δημιουργήσει και διαμορφώσει έναν κωδικό πρόσβασης εφαρμογής για κάθε έναν προτού ενεργοποιήσετε τον έλεγχο ταυτότητας δεύτερου παράγοντα.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "εγκατάσταση και ενημέρωση εφαρμογών μέσω του καταστήματος εφαρμογών ή του ",
"You need to set your user email before being able to send test emails." : "Πρέπει να ορίσετε το email του χρήστη πριν να είστε σε θέση να στείλετε δοκιμαστικά emails.",
+ "Update all" : "Ενημέρωση όλων",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Η κατάργηση αυτού του αναγνωριστικού ενδέχεται να αποτρέψει την εκκαθάριση της συσκευής σας αν δεν έχει ξεκινήσει ακόμα.",
"Nextcloud iOS app" : "Nextcloud iOS app",
"Nextcloud Android app" : "Nextcloud Android app",
@@ -500,6 +497,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Σφάλμα: αυτή η εφαρμογή δεν μπορεί να ενεργοποιηθεί γιατί θα καταστήσει ασταθή τον διακομιστή.",
"mail" : "ταχυδρομείο",
"Test email settings" : "Δοκιμή ρυθμίσεων email",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Για βέλτιστη απόδοση είναι σημαντικό να ρυθμίσετε σωστά τις εργασίες παρασκηνίου. Για μεγαλύτερα συστήματα, η συνιστώμενη ρύθμιση είναι \"Cron\". Για περισσότερες πληροφορίες, ανατρέξτε στην τεκμηρίωση.",
+ "Execute one task with each page loaded." : "Εκτελέστε μια εργασία με κάθε σελίδα φορτωμένη.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 5 λεπτά μέσω HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συστήματος για να καλέσετε το cron.php αρχείο κάθε 5 λεπτά.",
"Expire after " : "Λήξη μετά από",
"days" : "ημέρες",
"Allow users to share via link" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μέσω συνδέσμου",
diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js
index 496860e7052..8d7680ada36 100644
--- a/apps/settings/l10n/en_GB.js
+++ b/apps/settings/l10n/en_GB.js
@@ -240,7 +240,7 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "Last job execution ran %s. Something seems wrong.",
"Last job ran %s." : "Last job ran %s.",
"Background job didn’t run yet!" : "Background job didn’t run yet!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information.",
+ "Recommended" : "Recommended",
"The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "As admin you can fine-tune the sharing behavior. Please see the documentation for more information.",
@@ -290,6 +290,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: This app can not be enabled because it makes the server unstable",
"mail" : "mail",
"Test email settings" : "Test email settings",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information.",
"Expire after " : "Expire after ",
"days" : "days",
"Allow users to share via link" : "Allow users to share via link",
diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json
index 66a0b489711..59d64121057 100644
--- a/apps/settings/l10n/en_GB.json
+++ b/apps/settings/l10n/en_GB.json
@@ -238,7 +238,7 @@
"Last job execution ran %s. Something seems wrong." : "Last job execution ran %s. Something seems wrong.",
"Last job ran %s." : "Last job ran %s.",
"Background job didn’t run yet!" : "Background job didn’t run yet!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information.",
+ "Recommended" : "Recommended",
"The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "As admin you can fine-tune the sharing behavior. Please see the documentation for more information.",
@@ -288,6 +288,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: This app can not be enabled because it makes the server unstable",
"mail" : "mail",
"Test email settings" : "Test email settings",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information.",
"Expire after " : "Expire after ",
"days" : "days",
"Allow users to share via link" : "Allow users to share via link",
diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js
index 19383f2bfd9..f83eeea0838 100644
--- a/apps/settings/l10n/eo.js
+++ b/apps/settings/l10n/eo.js
@@ -311,10 +311,8 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "Lastataska plenumo ruliĝis %s. Io ŝajne misfunkciis.",
"Last job ran %s." : "Lasta tasko okazis %s.",
"Background job didn’t run yet!" : "Fona tasko ankoraŭ ne ruliĝis!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Por optimuma rendimento, gravas bone agordi fonajn taskojn. Por serviloj kun multe da uzantoj kaj datumoj, „Cron“ estas rekomendita. Bv. vidi la dokumentaron por pli da informoj.",
"Pick background job setting" : "Elekti agordon pri fona tasko",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php estas registrita ĉe perreta „cron“-servo por esti vokita ĉiujn 5 minutojn per HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Uzu la sisteman „cron“-servon por voki cron.php ĉiujn 5 minutojn.",
+ "Recommended" : "Rekomendata",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php bezonas esti rulita de la sistema uzanto „%s“.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Por ruli iton, vi bezonas la PHP-modulon pri POSIX. Vidu la {linkstart}PHP-dokumentaron{linkend} pro pli da detaloj.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Kiel administranto, vi povas agordi plidetale la kunhavigon. Bv. vidi la dokumentaron pri tio.",
@@ -374,6 +372,9 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Eraro: tiu ĉi aplikaĵo ne povas esti ŝaltita, ĉar ĝi malstabiligus la servilon.",
"mail" : "retpoŝtadreso",
"Test email settings" : "Provi retpoŝtagordon",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Por optimuma rendimento, gravas bone agordi fonajn taskojn. Por serviloj kun multe da uzantoj kaj datumoj, „Cron“ estas rekomendita. Bv. vidi la dokumentaron por pli da informoj.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php estas registrita ĉe perreta „cron“-servo por esti vokita ĉiujn 5 minutojn per HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Uzu la sisteman „cron“-servon por voki cron.php ĉiujn 5 minutojn.",
"Expire after " : "Senvalidigita post",
"days" : "tagoj",
"Allow users to share via link" : "Permesi uzantojn kunhavigi ligile",
diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json
index 41c4117ec34..9f49b42c724 100644
--- a/apps/settings/l10n/eo.json
+++ b/apps/settings/l10n/eo.json
@@ -309,10 +309,8 @@
"Last job execution ran %s. Something seems wrong." : "Lastataska plenumo ruliĝis %s. Io ŝajne misfunkciis.",
"Last job ran %s." : "Lasta tasko okazis %s.",
"Background job didn’t run yet!" : "Fona tasko ankoraŭ ne ruliĝis!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Por optimuma rendimento, gravas bone agordi fonajn taskojn. Por serviloj kun multe da uzantoj kaj datumoj, „Cron“ estas rekomendita. Bv. vidi la dokumentaron por pli da informoj.",
"Pick background job setting" : "Elekti agordon pri fona tasko",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php estas registrita ĉe perreta „cron“-servo por esti vokita ĉiujn 5 minutojn per HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Uzu la sisteman „cron“-servon por voki cron.php ĉiujn 5 minutojn.",
+ "Recommended" : "Rekomendata",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php bezonas esti rulita de la sistema uzanto „%s“.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Por ruli iton, vi bezonas la PHP-modulon pri POSIX. Vidu la {linkstart}PHP-dokumentaron{linkend} pro pli da detaloj.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Kiel administranto, vi povas agordi plidetale la kunhavigon. Bv. vidi la dokumentaron pri tio.",
@@ -372,6 +370,9 @@
"Error: This app can not be enabled because it makes the server unstable" : "Eraro: tiu ĉi aplikaĵo ne povas esti ŝaltita, ĉar ĝi malstabiligus la servilon.",
"mail" : "retpoŝtadreso",
"Test email settings" : "Provi retpoŝtagordon",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Por optimuma rendimento, gravas bone agordi fonajn taskojn. Por serviloj kun multe da uzantoj kaj datumoj, „Cron“ estas rekomendita. Bv. vidi la dokumentaron por pli da informoj.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php estas registrita ĉe perreta „cron“-servo por esti vokita ĉiujn 5 minutojn per HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Uzu la sisteman „cron“-servon por voki cron.php ĉiujn 5 minutojn.",
"Expire after " : "Senvalidigita post",
"days" : "tagoj",
"Allow users to share via link" : "Permesi uzantojn kunhavigi ligile",
diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js
index 61458d2498d..3d52c0e9320 100644
--- a/apps/settings/l10n/es.js
+++ b/apps/settings/l10n/es.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las apps destacadas están desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad central y están listas para usarlas en producción.",
"Featured" : "Destacadas",
"Update to {update}" : "Actualizar a {update}",
- "Update all" : "Actualizar todo",
"All apps are up-to-date." : "Todas las apps están actualizadas.",
"Results from other categories" : "Resultados de otras categorías",
"No apps found for your version" : "No se han encontrado aplicaciones para su versión",
@@ -424,11 +423,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Algunos trabajajos no se ejecutaron desde %s. Por favor, considere cambiar al sistema 'cron'.",
"Last job ran %s." : "El último trabajo se ejecutó %s.",
"Background job didn’t run yet!" : "¡El trabajo en segundo plano no se ha ejecutado todavía!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendimiento óptimo es importante configurar correctamente los procesos en segundo plano. Para las instancias más grandes la configuración recomendada es 'Cron'. Por favor, lea la documentación para más información.",
"Pick background job setting" : "Escoge la configuración de las tareas en segundo plano",
- "Execute one task with each page loaded." : "Ejecutar una tarea con cada página cargada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está registrado en un servicio de web cron para llamar a cron.php cada 5 minutos por HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Usa el servicio cron del sistema para llamar al archivo cron.php cada 5 minutos.",
+ "Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "El archivo cron.php debe ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Necesitas la extensión PHP POSIX para lanzar esto. Mira la {linkstart}documentación de PHP{linkend} para más detalles.",
"You need to enable the File sharing App." : "Tienes que activar la app File sharing",
@@ -494,6 +490,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." : "Si utiliza aplicaciones de terceras partes para conectarse a Nextcloud, por favor compruebe que crea y configura una contraseña de app para cada una antes de activar el factor de autentificación de dos pasos.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y actualizando aplicaciones a través de la tienda de aplicaciones o de la nube compartida federada",
"You need to set your user email before being able to send test emails." : "Tienes que configurar tu dirección de correo electrónico antes de poder enviar mensajes de prueba.",
+ "Update all" : "Actualizar todo",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Anular este token puede evitar el borrado de tu dispositivo si aún no se ha iniciado el borrado.",
"Nextcloud iOS app" : "App Nextcloud para iOS",
"Nextcloud Android app" : "App Nextcloud para Android",
@@ -508,6 +505,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta app no se puede activar porque desestabiliza el servidor",
"mail" : "correo electrónico",
"Test email settings" : "Probar configuración del correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendimiento óptimo es importante configurar correctamente los procesos en segundo plano. Para las instancias más grandes la configuración recomendada es 'Cron'. Por favor, lea la documentación para más información.",
+ "Execute one task with each page loaded." : "Ejecutar una tarea con cada página cargada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está registrado en un servicio de web cron para llamar a cron.php cada 5 minutos por HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Usa el servicio cron del sistema para llamar al archivo cron.php cada 5 minutos.",
"Expire after " : "Caduca tras",
"days" : "días",
"Allow users to share via link" : "Permite a los usuarios compartir por medio de enlaces",
diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json
index 9273a583838..cf1d5d1cc43 100644
--- a/apps/settings/l10n/es.json
+++ b/apps/settings/l10n/es.json
@@ -166,7 +166,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las apps destacadas están desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad central y están listas para usarlas en producción.",
"Featured" : "Destacadas",
"Update to {update}" : "Actualizar a {update}",
- "Update all" : "Actualizar todo",
"All apps are up-to-date." : "Todas las apps están actualizadas.",
"Results from other categories" : "Resultados de otras categorías",
"No apps found for your version" : "No se han encontrado aplicaciones para su versión",
@@ -422,11 +421,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Algunos trabajajos no se ejecutaron desde %s. Por favor, considere cambiar al sistema 'cron'.",
"Last job ran %s." : "El último trabajo se ejecutó %s.",
"Background job didn’t run yet!" : "¡El trabajo en segundo plano no se ha ejecutado todavía!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendimiento óptimo es importante configurar correctamente los procesos en segundo plano. Para las instancias más grandes la configuración recomendada es 'Cron'. Por favor, lea la documentación para más información.",
"Pick background job setting" : "Escoge la configuración de las tareas en segundo plano",
- "Execute one task with each page loaded." : "Ejecutar una tarea con cada página cargada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está registrado en un servicio de web cron para llamar a cron.php cada 5 minutos por HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Usa el servicio cron del sistema para llamar al archivo cron.php cada 5 minutos.",
+ "Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "El archivo cron.php debe ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Necesitas la extensión PHP POSIX para lanzar esto. Mira la {linkstart}documentación de PHP{linkend} para más detalles.",
"You need to enable the File sharing App." : "Tienes que activar la app File sharing",
@@ -492,6 +488,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." : "Si utiliza aplicaciones de terceras partes para conectarse a Nextcloud, por favor compruebe que crea y configura una contraseña de app para cada una antes de activar el factor de autentificación de dos pasos.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y actualizando aplicaciones a través de la tienda de aplicaciones o de la nube compartida federada",
"You need to set your user email before being able to send test emails." : "Tienes que configurar tu dirección de correo electrónico antes de poder enviar mensajes de prueba.",
+ "Update all" : "Actualizar todo",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Anular este token puede evitar el borrado de tu dispositivo si aún no se ha iniciado el borrado.",
"Nextcloud iOS app" : "App Nextcloud para iOS",
"Nextcloud Android app" : "App Nextcloud para Android",
@@ -506,6 +503,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta app no se puede activar porque desestabiliza el servidor",
"mail" : "correo electrónico",
"Test email settings" : "Probar configuración del correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendimiento óptimo es importante configurar correctamente los procesos en segundo plano. Para las instancias más grandes la configuración recomendada es 'Cron'. Por favor, lea la documentación para más información.",
+ "Execute one task with each page loaded." : "Ejecutar una tarea con cada página cargada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está registrado en un servicio de web cron para llamar a cron.php cada 5 minutos por HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Usa el servicio cron del sistema para llamar al archivo cron.php cada 5 minutos.",
"Expire after " : "Caduca tras",
"days" : "días",
"Allow users to share via link" : "Permite a los usuarios compartir por medio de enlaces",
diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js
index 3c6393ff8d0..f0f8484dc46 100644
--- a/apps/settings/l10n/es_419.js
+++ b/apps/settings/l10n/es_419.js
@@ -220,7 +220,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -270,6 +269,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json
index 3f9911803fa..c2f3fa37e19 100644
--- a/apps/settings/l10n/es_419.json
+++ b/apps/settings/l10n/es_419.json
@@ -218,7 +218,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -268,6 +267,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js
index 51359968159..139af7dc179 100644
--- a/apps/settings/l10n/es_AR.js
+++ b/apps/settings/l10n/es_AR.js
@@ -211,7 +211,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctametne. Para instancias más grandes 'Cron' es el ajuste recomendado. Favor de consultar la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario del sistema \"%s\".",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, usted puede hacer ajustes finos al comportamiento de compartir. Favor de consultar la documentación para más información. ",
"Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir",
@@ -255,6 +254,7 @@ OC.L10N.register(
"App update" : "Actualización de la aplicación",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctametne. Para instancias más grandes 'Cron' es el ajuste recomendado. Favor de consultar la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante links",
diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json
index 007086ee4d3..a19143e75c7 100644
--- a/apps/settings/l10n/es_AR.json
+++ b/apps/settings/l10n/es_AR.json
@@ -209,7 +209,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctametne. Para instancias más grandes 'Cron' es el ajuste recomendado. Favor de consultar la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario del sistema \"%s\".",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, usted puede hacer ajustes finos al comportamiento de compartir. Favor de consultar la documentación para más información. ",
"Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir",
@@ -253,6 +252,7 @@
"App update" : "Actualización de la aplicación",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctametne. Para instancias más grandes 'Cron' es el ajuste recomendado. Favor de consultar la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante links",
diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js
index 3bca96b6dd8..882c4c812ca 100644
--- a/apps/settings/l10n/es_CL.js
+++ b/apps/settings/l10n/es_CL.js
@@ -218,7 +218,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -266,6 +265,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json
index 930496b1a26..7e91610c312 100644
--- a/apps/settings/l10n/es_CL.json
+++ b/apps/settings/l10n/es_CL.json
@@ -216,7 +216,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -264,6 +263,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js
index 3bca96b6dd8..882c4c812ca 100644
--- a/apps/settings/l10n/es_CO.js
+++ b/apps/settings/l10n/es_CO.js
@@ -218,7 +218,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -266,6 +265,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json
index 930496b1a26..7e91610c312 100644
--- a/apps/settings/l10n/es_CO.json
+++ b/apps/settings/l10n/es_CO.json
@@ -216,7 +216,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -264,6 +263,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js
index 3bca96b6dd8..882c4c812ca 100644
--- a/apps/settings/l10n/es_CR.js
+++ b/apps/settings/l10n/es_CR.js
@@ -218,7 +218,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -266,6 +265,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json
index 930496b1a26..7e91610c312 100644
--- a/apps/settings/l10n/es_CR.json
+++ b/apps/settings/l10n/es_CR.json
@@ -216,7 +216,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -264,6 +263,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js
index 3bca96b6dd8..882c4c812ca 100644
--- a/apps/settings/l10n/es_DO.js
+++ b/apps/settings/l10n/es_DO.js
@@ -218,7 +218,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -266,6 +265,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json
index 930496b1a26..7e91610c312 100644
--- a/apps/settings/l10n/es_DO.json
+++ b/apps/settings/l10n/es_DO.json
@@ -216,7 +216,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -264,6 +263,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js
index 3bca96b6dd8..882c4c812ca 100644
--- a/apps/settings/l10n/es_EC.js
+++ b/apps/settings/l10n/es_EC.js
@@ -218,7 +218,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -266,6 +265,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json
index 930496b1a26..7e91610c312 100644
--- a/apps/settings/l10n/es_EC.json
+++ b/apps/settings/l10n/es_EC.json
@@ -216,7 +216,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -264,6 +263,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js
index 3bca96b6dd8..882c4c812ca 100644
--- a/apps/settings/l10n/es_GT.js
+++ b/apps/settings/l10n/es_GT.js
@@ -218,7 +218,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -266,6 +265,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json
index 930496b1a26..7e91610c312 100644
--- a/apps/settings/l10n/es_GT.json
+++ b/apps/settings/l10n/es_GT.json
@@ -216,7 +216,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -264,6 +263,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js
index 1b4aa06bc30..23ec053f966 100644
--- a/apps/settings/l10n/es_HN.js
+++ b/apps/settings/l10n/es_HN.js
@@ -213,7 +213,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -259,6 +258,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json
index 7042c5cf79d..0cd90b5b623 100644
--- a/apps/settings/l10n/es_HN.json
+++ b/apps/settings/l10n/es_HN.json
@@ -211,7 +211,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -257,6 +256,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js
index 141d5487862..64590bf5755 100644
--- a/apps/settings/l10n/es_MX.js
+++ b/apps/settings/l10n/es_MX.js
@@ -242,7 +242,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -290,6 +289,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json
index b3334fcaf93..52306e3fe37 100644
--- a/apps/settings/l10n/es_MX.json
+++ b/apps/settings/l10n/es_MX.json
@@ -240,7 +240,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -288,6 +287,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js
index 1b4aa06bc30..23ec053f966 100644
--- a/apps/settings/l10n/es_NI.js
+++ b/apps/settings/l10n/es_NI.js
@@ -213,7 +213,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -259,6 +258,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json
index 7042c5cf79d..0cd90b5b623 100644
--- a/apps/settings/l10n/es_NI.json
+++ b/apps/settings/l10n/es_NI.json
@@ -211,7 +211,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -257,6 +256,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js
index 1b4aa06bc30..23ec053f966 100644
--- a/apps/settings/l10n/es_PA.js
+++ b/apps/settings/l10n/es_PA.js
@@ -213,7 +213,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -259,6 +258,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json
index 7042c5cf79d..0cd90b5b623 100644
--- a/apps/settings/l10n/es_PA.json
+++ b/apps/settings/l10n/es_PA.json
@@ -211,7 +211,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -257,6 +256,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js
index 1b4aa06bc30..23ec053f966 100644
--- a/apps/settings/l10n/es_PE.js
+++ b/apps/settings/l10n/es_PE.js
@@ -213,7 +213,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -259,6 +258,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json
index 7042c5cf79d..0cd90b5b623 100644
--- a/apps/settings/l10n/es_PE.json
+++ b/apps/settings/l10n/es_PE.json
@@ -211,7 +211,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -257,6 +256,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js
index 1b4aa06bc30..23ec053f966 100644
--- a/apps/settings/l10n/es_PR.js
+++ b/apps/settings/l10n/es_PR.js
@@ -213,7 +213,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -259,6 +258,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json
index 7042c5cf79d..0cd90b5b623 100644
--- a/apps/settings/l10n/es_PR.json
+++ b/apps/settings/l10n/es_PR.json
@@ -211,7 +211,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -257,6 +256,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js
index 1b4aa06bc30..23ec053f966 100644
--- a/apps/settings/l10n/es_PY.js
+++ b/apps/settings/l10n/es_PY.js
@@ -213,7 +213,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -259,6 +258,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json
index 7042c5cf79d..0cd90b5b623 100644
--- a/apps/settings/l10n/es_PY.json
+++ b/apps/settings/l10n/es_PY.json
@@ -211,7 +211,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -257,6 +256,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js
index 3bca96b6dd8..882c4c812ca 100644
--- a/apps/settings/l10n/es_SV.js
+++ b/apps/settings/l10n/es_SV.js
@@ -218,7 +218,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -266,6 +265,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json
index 930496b1a26..7e91610c312 100644
--- a/apps/settings/l10n/es_SV.json
+++ b/apps/settings/l10n/es_SV.json
@@ -216,7 +216,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -264,6 +263,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js
index 1b4aa06bc30..23ec053f966 100644
--- a/apps/settings/l10n/es_UY.js
+++ b/apps/settings/l10n/es_UY.js
@@ -213,7 +213,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -259,6 +258,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json
index 7042c5cf79d..0cd90b5b623 100644
--- a/apps/settings/l10n/es_UY.json
+++ b/apps/settings/l10n/es_UY.json
@@ -211,7 +211,6 @@
"Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ",
"Last job ran %s." : "El último trabajo corrió %s.",
"Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ",
@@ -257,6 +256,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"mail" : "correo",
"Test email settings" : "Probar las configuraciones de correo electrónico",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ",
"Expire after " : "Expirar después de",
"days" : "días",
"Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas",
diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js
index 8549564ccca..dc6008b2f4f 100644
--- a/apps/settings/l10n/et_EE.js
+++ b/apps/settings/l10n/et_EE.js
@@ -215,6 +215,7 @@ OC.L10N.register(
"Enable encryption" : "Luba krüpteerimine",
"Select default encryption module:" : "Määra vaikimisi krüpteerimise moodul:",
"Start migration" : "Alusta kolimist",
+ "Recommended" : "Soovitatud",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php tuleb käivitada süsteemikasutaja \"%s\" poolt.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administraatorina saate jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.",
"Allow apps to use the Share API" : "Luba rakendustel kasutada Share API-t",
diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json
index c2b192e9074..2c14bf06a16 100644
--- a/apps/settings/l10n/et_EE.json
+++ b/apps/settings/l10n/et_EE.json
@@ -213,6 +213,7 @@
"Enable encryption" : "Luba krüpteerimine",
"Select default encryption module:" : "Määra vaikimisi krüpteerimise moodul:",
"Start migration" : "Alusta kolimist",
+ "Recommended" : "Soovitatud",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php tuleb käivitada süsteemikasutaja \"%s\" poolt.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administraatorina saate jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.",
"Allow apps to use the Share API" : "Luba rakendustel kasutada Share API-t",
diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js
index c4eefe93e82..98da4d0cca0 100644
--- a/apps/settings/l10n/eu.js
+++ b/apps/settings/l10n/eu.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Nabarmendutako aplikazioak, komunitateak eta komunitatean garatutakoak dira. Funtzionalitate orokorrak eskaintzen dituzte eta produkzioan erabiltzeko prest daude.",
"Featured" : "Nabarmendua",
"Update to {update}" : "Eguneratu {update} bertsiora",
- "Update all" : "Eguneratu denak",
"Results from other categories" : "Beste kategoriatako emaitzak",
"No apps found for your version" : "Ez dira aplikaziorik aurkitu zure bertsiorako",
"Disable all" : "Desgaitu guztia",
@@ -413,11 +412,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Ataza batzuk ez dira %stik exekutatu. Aztertu sistemaren crona erabiltzera pasatzea.",
"Last job ran %s." : "Azken lana %s itzuli zuen. ",
"Background job didn’t run yet!" : "Atzeko planoko lana ez da martxan jarri oraindik!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Errendimendu ona izateko garrantzitsua da atzeko planoko atazak ondo konfiguratzea. Instantzia handientzat 'Cron' erabiltzea gomendatzen da. Irakurri dokumentazioa informazio gehiago lortzeko.",
"Pick background job setting" : "Aukeratu atzeko planoko atazen ezarpena",
- "Execute one task with each page loaded." : "Exekutatu zeregin bat orri karga bakoitzarekin.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "webcron zerbitzua cron.php-ri 5 minutuan behin HTTP bidez deitzeko konfiguratu da.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Sistemaren cron zerbitzua erabili cron.php-ri 5 minutuan behin deitzeko.",
+ "Recommended" : "Aholkatuta",
"The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Hau exekutatzeko PHP POSIX luzapena behar duzu. {linkstart}PHP dokumentazioa{linkend} ikusi informazio gehiagorako",
"You need to enable the File sharing App." : "Fitxategi partekatze aplikazioa gaitu behar duzu.",
@@ -482,6 +478,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." : "Hirugarrenen aplikazioak erabiltzen badituzu Nextcloud-era konektatzeko, ziurtatu bakoitzarentzako aplikazioaren pasahitza sortu eta konfiguratzen duzula bigarren faktorearen autentifikazioa gaitu aurretik.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Aplikazioak aplikazio-biltegiaren edo federatutako hodei partekatzearen bidez instalatzen edo eguneratzen",
"You need to set your user email before being able to send test emails." : "Epostaren erabiltzailea zehaztu behar duzu probako eposta bidali aurretik.",
+ "Update all" : "Eguneratu denak",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Token hau baliogabetzen baduzu zure gailua garbitzea ezinezkoa gerta daiteke garbiketa jada ez bada hasi.",
"Nextcloud iOS app" : "Nextcloud iOS aplikazioa",
"Nextcloud Android app" : "Nextcloud Android aplikazioa",
@@ -496,6 +493,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Errorea: aplikazioa hau ezin da gaitu zerbitzaria ezegonkor izatea egiten duelako",
"mail" : "posta",
"Test email settings" : "Probatu eposta ezarpenak",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Errendimendu ona izateko garrantzitsua da atzeko planoko atazak ondo konfiguratzea. Instantzia handientzat 'Cron' erabiltzea gomendatzen da. Irakurri dokumentazioa informazio gehiago lortzeko.",
+ "Execute one task with each page loaded." : "Exekutatu zeregin bat orri karga bakoitzarekin.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "webcron zerbitzua cron.php-ri 5 minutuan behin HTTP bidez deitzeko konfiguratu da.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Sistemaren cron zerbitzua erabili cron.php-ri 5 minutuan behin deitzeko.",
"Expire after " : "Iraungia honen ondoren",
"days" : "egun",
"Allow users to share via link" : "Baimendu erabiltzaileak esteken bidez partekatzea",
diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json
index 02d0bf05f33..f3a1cee6140 100644
--- a/apps/settings/l10n/eu.json
+++ b/apps/settings/l10n/eu.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Nabarmendutako aplikazioak, komunitateak eta komunitatean garatutakoak dira. Funtzionalitate orokorrak eskaintzen dituzte eta produkzioan erabiltzeko prest daude.",
"Featured" : "Nabarmendua",
"Update to {update}" : "Eguneratu {update} bertsiora",
- "Update all" : "Eguneratu denak",
"Results from other categories" : "Beste kategoriatako emaitzak",
"No apps found for your version" : "Ez dira aplikaziorik aurkitu zure bertsiorako",
"Disable all" : "Desgaitu guztia",
@@ -411,11 +410,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Ataza batzuk ez dira %stik exekutatu. Aztertu sistemaren crona erabiltzera pasatzea.",
"Last job ran %s." : "Azken lana %s itzuli zuen. ",
"Background job didn’t run yet!" : "Atzeko planoko lana ez da martxan jarri oraindik!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Errendimendu ona izateko garrantzitsua da atzeko planoko atazak ondo konfiguratzea. Instantzia handientzat 'Cron' erabiltzea gomendatzen da. Irakurri dokumentazioa informazio gehiago lortzeko.",
"Pick background job setting" : "Aukeratu atzeko planoko atazen ezarpena",
- "Execute one task with each page loaded." : "Exekutatu zeregin bat orri karga bakoitzarekin.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "webcron zerbitzua cron.php-ri 5 minutuan behin HTTP bidez deitzeko konfiguratu da.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Sistemaren cron zerbitzua erabili cron.php-ri 5 minutuan behin deitzeko.",
+ "Recommended" : "Aholkatuta",
"The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Hau exekutatzeko PHP POSIX luzapena behar duzu. {linkstart}PHP dokumentazioa{linkend} ikusi informazio gehiagorako",
"You need to enable the File sharing App." : "Fitxategi partekatze aplikazioa gaitu behar duzu.",
@@ -480,6 +476,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." : "Hirugarrenen aplikazioak erabiltzen badituzu Nextcloud-era konektatzeko, ziurtatu bakoitzarentzako aplikazioaren pasahitza sortu eta konfiguratzen duzula bigarren faktorearen autentifikazioa gaitu aurretik.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Aplikazioak aplikazio-biltegiaren edo federatutako hodei partekatzearen bidez instalatzen edo eguneratzen",
"You need to set your user email before being able to send test emails." : "Epostaren erabiltzailea zehaztu behar duzu probako eposta bidali aurretik.",
+ "Update all" : "Eguneratu denak",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Token hau baliogabetzen baduzu zure gailua garbitzea ezinezkoa gerta daiteke garbiketa jada ez bada hasi.",
"Nextcloud iOS app" : "Nextcloud iOS aplikazioa",
"Nextcloud Android app" : "Nextcloud Android aplikazioa",
@@ -494,6 +491,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Errorea: aplikazioa hau ezin da gaitu zerbitzaria ezegonkor izatea egiten duelako",
"mail" : "posta",
"Test email settings" : "Probatu eposta ezarpenak",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Errendimendu ona izateko garrantzitsua da atzeko planoko atazak ondo konfiguratzea. Instantzia handientzat 'Cron' erabiltzea gomendatzen da. Irakurri dokumentazioa informazio gehiago lortzeko.",
+ "Execute one task with each page loaded." : "Exekutatu zeregin bat orri karga bakoitzarekin.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "webcron zerbitzua cron.php-ri 5 minutuan behin HTTP bidez deitzeko konfiguratu da.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Sistemaren cron zerbitzua erabili cron.php-ri 5 minutuan behin deitzeko.",
"Expire after " : "Iraungia honen ondoren",
"days" : "egun",
"Allow users to share via link" : "Baimendu erabiltzaileak esteken bidez partekatzea",
diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js
index c4611e1a6aa..6f68c471779 100644
--- a/apps/settings/l10n/fa.js
+++ b/apps/settings/l10n/fa.js
@@ -140,7 +140,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "برنامه های ویژه توسط و در داخل جامعه توسعه داده می شوند. آنها عملکردهای مرکزی را ارائه می دهند و برای استفاده در تولید آماده هستند.",
"Featured" : "ویژه",
"Update to {update}" : "بروزرسانی به {update} ",
- "Update all" : "بروزرسانی همه",
"Results from other categories" : "نتایج از دسته های دیگر",
"No apps found for your version" : "هیچ برنامه‌ای برای نسخه‌ی شما یافت نشد",
"Disable all" : "غیرفعال کردن همه",
@@ -319,10 +318,8 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "آخرین کار انجام شده %s. به نظر می رسد اشتباه است",
"Last job ran %s." : "آخرین کار انجام شده %s.",
"Background job didn’t run yet!" : "کار پس زمینه هنوز اجرا نشده است!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "برای عملکرد بهینه ، پیکربندی صحیح کارهای پس زمینه مهم است. برای موارد بزرگتر گزینه \"Cron\" توصیه می شود. لطفا برای اطلاعات بیشتر به اسناد مراجعه کنید.",
"Pick background job setting" : "تنظیمات کار پس زمینه را انتخاب کنید",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php در یک سرویس webcron ثبت شده است تا cron.php هر 5 دقیقه با HTTP تماس بگیرید .",
- "Use system cron service to call the cron.php file every 5 minutes." : "برای تماس با پرونده cron.php هر 5 دقیقه یکبار از سرویس cron system استفاده کنید.",
+ "Recommended" : "پیشنهاد شده",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php باید توسط کاربر سیستم \"%s\" اجرا شود.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "برای اجرای این کار شما نیاز به پسوند PHP POSIX دارید. دیدن {linkstart} مستندات PHP {linkend} برای اطلاعات بیشتر .",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "به عنوان مدیر ، می توانید رفتار اشتراک گذاری را تنظیم کنید. لطفا برای اطلاعات بیشتر به اسناد مراجعه کنید.",
@@ -369,6 +366,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "برای افزایش امنیت حساب کاربری خود ، از یک عامل دوم علاوه بر رمز عبور خود استفاده کنید.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "نصب و به روزرسانی برنامه ها از طریق فروشگاه برنامه یا اشتراک گذاری ابر فدرال",
"You need to set your user email before being able to send test emails." : "شما باید قبل از ارسال ایمیل آزمایشی باید تنظیمات ایمیل کاربر را انجام دهید.",
+ "Update all" : "بروزرسانی همه",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : " ابطال این نشانه ممکن است از هدر رفتن وسیله شما جلوگیری کند،اگر هنوز پاک نشده است.",
"Nextcloud iOS app" : "برنامه iOS نکست کلود ",
"Nextcloud Android app" : "نکست کلود برای اندروید",
@@ -383,6 +381,9 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "خطا: این برنامه امکان پذیر نیست زیرا باعث عدم ثبات سرور می شود",
"mail" : "ایمیل",
"Test email settings" : "تنظیمات ایمیل آزمایشی",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "برای عملکرد بهینه ، پیکربندی صحیح کارهای پس زمینه مهم است. برای موارد بزرگتر گزینه \"Cron\" توصیه می شود. لطفا برای اطلاعات بیشتر به اسناد مراجعه کنید.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php در یک سرویس webcron ثبت شده است تا cron.php هر 5 دقیقه با HTTP تماس بگیرید .",
+ "Use system cron service to call the cron.php file every 5 minutes." : "برای تماس با پرونده cron.php هر 5 دقیقه یکبار از سرویس cron system استفاده کنید.",
"Expire after " : "اتمام اعتبار بعد از",
"days" : "روز",
"Allow users to share via link" : "اجازه دادن به کاربران برای اشتراک گذاری توسط پیوند",
diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json
index 418a583986a..9b1feeaf5ff 100644
--- a/apps/settings/l10n/fa.json
+++ b/apps/settings/l10n/fa.json
@@ -138,7 +138,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "برنامه های ویژه توسط و در داخل جامعه توسعه داده می شوند. آنها عملکردهای مرکزی را ارائه می دهند و برای استفاده در تولید آماده هستند.",
"Featured" : "ویژه",
"Update to {update}" : "بروزرسانی به {update} ",
- "Update all" : "بروزرسانی همه",
"Results from other categories" : "نتایج از دسته های دیگر",
"No apps found for your version" : "هیچ برنامه‌ای برای نسخه‌ی شما یافت نشد",
"Disable all" : "غیرفعال کردن همه",
@@ -317,10 +316,8 @@
"Last job execution ran %s. Something seems wrong." : "آخرین کار انجام شده %s. به نظر می رسد اشتباه است",
"Last job ran %s." : "آخرین کار انجام شده %s.",
"Background job didn’t run yet!" : "کار پس زمینه هنوز اجرا نشده است!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "برای عملکرد بهینه ، پیکربندی صحیح کارهای پس زمینه مهم است. برای موارد بزرگتر گزینه \"Cron\" توصیه می شود. لطفا برای اطلاعات بیشتر به اسناد مراجعه کنید.",
"Pick background job setting" : "تنظیمات کار پس زمینه را انتخاب کنید",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php در یک سرویس webcron ثبت شده است تا cron.php هر 5 دقیقه با HTTP تماس بگیرید .",
- "Use system cron service to call the cron.php file every 5 minutes." : "برای تماس با پرونده cron.php هر 5 دقیقه یکبار از سرویس cron system استفاده کنید.",
+ "Recommended" : "پیشنهاد شده",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php باید توسط کاربر سیستم \"%s\" اجرا شود.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "برای اجرای این کار شما نیاز به پسوند PHP POSIX دارید. دیدن {linkstart} مستندات PHP {linkend} برای اطلاعات بیشتر .",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "به عنوان مدیر ، می توانید رفتار اشتراک گذاری را تنظیم کنید. لطفا برای اطلاعات بیشتر به اسناد مراجعه کنید.",
@@ -367,6 +364,7 @@
"Use a second factor besides your password to increase security for your account." : "برای افزایش امنیت حساب کاربری خود ، از یک عامل دوم علاوه بر رمز عبور خود استفاده کنید.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "نصب و به روزرسانی برنامه ها از طریق فروشگاه برنامه یا اشتراک گذاری ابر فدرال",
"You need to set your user email before being able to send test emails." : "شما باید قبل از ارسال ایمیل آزمایشی باید تنظیمات ایمیل کاربر را انجام دهید.",
+ "Update all" : "بروزرسانی همه",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : " ابطال این نشانه ممکن است از هدر رفتن وسیله شما جلوگیری کند،اگر هنوز پاک نشده است.",
"Nextcloud iOS app" : "برنامه iOS نکست کلود ",
"Nextcloud Android app" : "نکست کلود برای اندروید",
@@ -381,6 +379,9 @@
"Error: This app can not be enabled because it makes the server unstable" : "خطا: این برنامه امکان پذیر نیست زیرا باعث عدم ثبات سرور می شود",
"mail" : "ایمیل",
"Test email settings" : "تنظیمات ایمیل آزمایشی",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "برای عملکرد بهینه ، پیکربندی صحیح کارهای پس زمینه مهم است. برای موارد بزرگتر گزینه \"Cron\" توصیه می شود. لطفا برای اطلاعات بیشتر به اسناد مراجعه کنید.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php در یک سرویس webcron ثبت شده است تا cron.php هر 5 دقیقه با HTTP تماس بگیرید .",
+ "Use system cron service to call the cron.php file every 5 minutes." : "برای تماس با پرونده cron.php هر 5 دقیقه یکبار از سرویس cron system استفاده کنید.",
"Expire after " : "اتمام اعتبار بعد از",
"days" : "روز",
"Allow users to share via link" : "اجازه دادن به کاربران برای اشتراک گذاری توسط پیوند",
diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js
index a3f76ddbbd2..0c747aec026 100644
--- a/apps/settings/l10n/fi.js
+++ b/apps/settings/l10n/fi.js
@@ -153,7 +153,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Esitellyt sovellukset on yhteisön itsensä kehitettämiä. Ne tarjoavat keskeisiä toimintoja ja ovat valmiita tuotantokäyttöön.",
"Featured" : "Poiminta",
"Update to {update}" : "Päivitä versioon {update}",
- "Update all" : "Päivitä kaikki",
"All apps are up-to-date." : "Kaikki sovellukset ovat ajan tasalla.",
"Results from other categories" : "Tulokset muista luokista",
"No apps found for your version" : "Sovelluksia ei löytynyt versiollesi",
@@ -384,11 +383,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Joidenkin tehtävien suoritukset ovat onnistuneet viimeksi %s. Harkitse vaihtoa järjestelmän cron-palveluun.",
"Last job ran %s." : "Viimeisin työ suoritettu %s.",
"Background job didn’t run yet!" : "Taustatyötä ei suoritettu vielä!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Optimaalisen suorituskyvyn vuoksi on tärkeää määrittää taustatyöt oikein. Suuria asennuksia varten 'Cron' on suositeltava asetus. Lisätietoja on saatavilla dokumentaatiossa.",
"Pick background job setting" : "Valitse taustatyöasetus",
- "Execute one task with each page loaded." : "Suorita tehtävä sivun latauksen yhteydessä.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Käytä ulkoista webcron-palvelua cron.php-skriptin suorittamiseen HTTP-protokollan kautta 5 minuutin välein. ",
- "Use system cron service to call the cron.php file every 5 minutes." : "Käytä järjestelmän cron-palvelua cron.php-skriptin suorittamiseen 5 minuutin välein",
+ "Recommended" : "Suositeltu",
"The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Tämän suorittamiseksi tarvitset PHP:n POSIX-laajennuksen. Lue {linkstart}PHP:n dokumentaatio{linkend} saadaksesi lisätietoja.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ylläpitäjänä voit hienosäätää jakamista. Katso dokumentaatiosta lisätietoa.",
@@ -447,6 +443,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." : "Jos yhdistät kolmannen osapuolen ohjelmia Nextcloudiin, määritä niille sovellussalasanat ennen kaksiosaisen todentamismenetelmän käyttöönottoa.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Sovellusten asennus tai päivitys sovelluskaupasta tai federoidusta pilvijaosta",
"You need to set your user email before being able to send test emails." : "Aseta sähköpostiosoite, jotta voit testata sähköpostin toimivuutta.",
+ "Update all" : "Päivitä kaikki",
"Nextcloud iOS app" : "Nextcloudin iOS-sovellus",
"Nextcloud Android app" : "Nextcloudin Android-sovellus",
"Nextcloud Talk for iOS" : "Nextcloud Talk iOS:ille",
@@ -460,6 +457,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Virhe: tätä sovellusta ei voi ottaa käyttöön, koska se tekee palvelimesta epävakaan",
"mail" : "posti",
"Test email settings" : "Testaa sähköpostiasetukset",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Optimaalisen suorituskyvyn vuoksi on tärkeää määrittää taustatyöt oikein. Suuria asennuksia varten 'Cron' on suositeltava asetus. Lisätietoja on saatavilla dokumentaatiossa.",
+ "Execute one task with each page loaded." : "Suorita tehtävä sivun latauksen yhteydessä.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Käytä ulkoista webcron-palvelua cron.php-skriptin suorittamiseen HTTP-protokollan kautta 5 minuutin välein. ",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Käytä järjestelmän cron-palvelua cron.php-skriptin suorittamiseen 5 minuutin välein",
"Expire after " : "Vanhenna",
"days" : "päivän jälkeen",
"Allow users to share via link" : "Salli käyttäjien jakaa linkkien kautta",
diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json
index 1039dc8071b..d9168faa4ed 100644
--- a/apps/settings/l10n/fi.json
+++ b/apps/settings/l10n/fi.json
@@ -151,7 +151,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Esitellyt sovellukset on yhteisön itsensä kehitettämiä. Ne tarjoavat keskeisiä toimintoja ja ovat valmiita tuotantokäyttöön.",
"Featured" : "Poiminta",
"Update to {update}" : "Päivitä versioon {update}",
- "Update all" : "Päivitä kaikki",
"All apps are up-to-date." : "Kaikki sovellukset ovat ajan tasalla.",
"Results from other categories" : "Tulokset muista luokista",
"No apps found for your version" : "Sovelluksia ei löytynyt versiollesi",
@@ -382,11 +381,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Joidenkin tehtävien suoritukset ovat onnistuneet viimeksi %s. Harkitse vaihtoa järjestelmän cron-palveluun.",
"Last job ran %s." : "Viimeisin työ suoritettu %s.",
"Background job didn’t run yet!" : "Taustatyötä ei suoritettu vielä!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Optimaalisen suorituskyvyn vuoksi on tärkeää määrittää taustatyöt oikein. Suuria asennuksia varten 'Cron' on suositeltava asetus. Lisätietoja on saatavilla dokumentaatiossa.",
"Pick background job setting" : "Valitse taustatyöasetus",
- "Execute one task with each page loaded." : "Suorita tehtävä sivun latauksen yhteydessä.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Käytä ulkoista webcron-palvelua cron.php-skriptin suorittamiseen HTTP-protokollan kautta 5 minuutin välein. ",
- "Use system cron service to call the cron.php file every 5 minutes." : "Käytä järjestelmän cron-palvelua cron.php-skriptin suorittamiseen 5 minuutin välein",
+ "Recommended" : "Suositeltu",
"The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Tämän suorittamiseksi tarvitset PHP:n POSIX-laajennuksen. Lue {linkstart}PHP:n dokumentaatio{linkend} saadaksesi lisätietoja.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ylläpitäjänä voit hienosäätää jakamista. Katso dokumentaatiosta lisätietoa.",
@@ -445,6 +441,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." : "Jos yhdistät kolmannen osapuolen ohjelmia Nextcloudiin, määritä niille sovellussalasanat ennen kaksiosaisen todentamismenetelmän käyttöönottoa.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Sovellusten asennus tai päivitys sovelluskaupasta tai federoidusta pilvijaosta",
"You need to set your user email before being able to send test emails." : "Aseta sähköpostiosoite, jotta voit testata sähköpostin toimivuutta.",
+ "Update all" : "Päivitä kaikki",
"Nextcloud iOS app" : "Nextcloudin iOS-sovellus",
"Nextcloud Android app" : "Nextcloudin Android-sovellus",
"Nextcloud Talk for iOS" : "Nextcloud Talk iOS:ille",
@@ -458,6 +455,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Virhe: tätä sovellusta ei voi ottaa käyttöön, koska se tekee palvelimesta epävakaan",
"mail" : "posti",
"Test email settings" : "Testaa sähköpostiasetukset",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Optimaalisen suorituskyvyn vuoksi on tärkeää määrittää taustatyöt oikein. Suuria asennuksia varten 'Cron' on suositeltava asetus. Lisätietoja on saatavilla dokumentaatiossa.",
+ "Execute one task with each page loaded." : "Suorita tehtävä sivun latauksen yhteydessä.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Käytä ulkoista webcron-palvelua cron.php-skriptin suorittamiseen HTTP-protokollan kautta 5 minuutin välein. ",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Käytä järjestelmän cron-palvelua cron.php-skriptin suorittamiseen 5 minuutin välein",
"Expire after " : "Vanhenna",
"days" : "päivän jälkeen",
"Allow users to share via link" : "Salli käyttäjien jakaa linkkien kautta",
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index 3c721bb2989..ab3061399e6 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les applications mises en avant sont développées par la communauté. Elles proposent des fonctionnalités centrales et sont prêtes pour la production.",
"Featured" : "Mises en avant",
"Update to {update}" : "Mise à jour vers {update}",
- "Update all" : "Tout mettre à jour",
"All apps are up-to-date." : "Toutes les applications sont à jour.",
"Results from other categories" : "Résultats d'autres catégories",
"No apps found for your version" : "Pas d'application trouvée pour votre version",
@@ -416,11 +415,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Certaines tâches n’ont pas été exécutées depuis 1%s. Veuillez envisager de passer à un système cron.",
"Last job ran %s." : "Dernière tâche exécutée %s.",
"Background job didn’t run yet!" : "La tâche de fond n'a pas encore tourné!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Afin d'optimiser au mieux la performance de votre instance, il est important de configurer correctement les travaux en arrière-plan. 'Cron' est le paramètre recommandé pour les instances de taille importante. Veuillez vous référer à la documentation Nextcloud pour plus d'informations à ce sujet.",
"Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan",
- "Execute one task with each page loaded." : "Exécute une tâche à chaque chargement de page",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php est enregistré à un service webcron pour exécuter cron.php toutes les 5 minutes par HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Utiliser le service cron du système pour appeler le fichier cron.php toutes les 5 minutes.",
+ "Recommended" : "Recommandée",
"The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pour l'exécuter, vous devez avoir l'extension PHP POSIX. Regarder la {linkstart}documentation PHP{linkend} pour plus de détails.",
"You need to enable the File sharing App." : "Vous devez activer l'application de partage de fichiers",
@@ -485,6 +481,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." : "Si vous utilisez des applications tierces pour vous connecter à Nextcloud, assurez-vous de créer et de configurer un mot de passe d'application pour chacune avant d'activer l'authentification à deux facteurs.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installation et mises à jour d'applications via le magasin d'applications ou le partage fédéré",
"You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.",
+ "Update all" : "Tout mettre à jour",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Révoquer ce jeton peut empêcher l'effacement de votre appareil s'il n'a pas encore démarré l'effacement.",
"Nextcloud iOS app" : "Application iOS Nextcloud",
"Nextcloud Android app" : "Application Android Nextcloud",
@@ -499,6 +496,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activée car cela rend le serveur instable.",
"mail" : "e-mail",
"Test email settings" : "Tester les paramètres e-mail",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Afin d'optimiser au mieux la performance de votre instance, il est important de configurer correctement les travaux en arrière-plan. 'Cron' est le paramètre recommandé pour les instances de taille importante. Veuillez vous référer à la documentation Nextcloud pour plus d'informations à ce sujet.",
+ "Execute one task with each page loaded." : "Exécute une tâche à chaque chargement de page",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php est enregistré à un service webcron pour exécuter cron.php toutes les 5 minutes par HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Utiliser le service cron du système pour appeler le fichier cron.php toutes les 5 minutes.",
"Expire after " : "Expiration après ",
"days" : "jours",
"Allow users to share via link" : "Autoriser les utilisateurs à partager par lien",
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index ee355c53a8a..dcc53f6f875 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les applications mises en avant sont développées par la communauté. Elles proposent des fonctionnalités centrales et sont prêtes pour la production.",
"Featured" : "Mises en avant",
"Update to {update}" : "Mise à jour vers {update}",
- "Update all" : "Tout mettre à jour",
"All apps are up-to-date." : "Toutes les applications sont à jour.",
"Results from other categories" : "Résultats d'autres catégories",
"No apps found for your version" : "Pas d'application trouvée pour votre version",
@@ -414,11 +413,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Certaines tâches n’ont pas été exécutées depuis 1%s. Veuillez envisager de passer à un système cron.",
"Last job ran %s." : "Dernière tâche exécutée %s.",
"Background job didn’t run yet!" : "La tâche de fond n'a pas encore tourné!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Afin d'optimiser au mieux la performance de votre instance, il est important de configurer correctement les travaux en arrière-plan. 'Cron' est le paramètre recommandé pour les instances de taille importante. Veuillez vous référer à la documentation Nextcloud pour plus d'informations à ce sujet.",
"Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan",
- "Execute one task with each page loaded." : "Exécute une tâche à chaque chargement de page",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php est enregistré à un service webcron pour exécuter cron.php toutes les 5 minutes par HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Utiliser le service cron du système pour appeler le fichier cron.php toutes les 5 minutes.",
+ "Recommended" : "Recommandée",
"The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pour l'exécuter, vous devez avoir l'extension PHP POSIX. Regarder la {linkstart}documentation PHP{linkend} pour plus de détails.",
"You need to enable the File sharing App." : "Vous devez activer l'application de partage de fichiers",
@@ -483,6 +479,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." : "Si vous utilisez des applications tierces pour vous connecter à Nextcloud, assurez-vous de créer et de configurer un mot de passe d'application pour chacune avant d'activer l'authentification à deux facteurs.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installation et mises à jour d'applications via le magasin d'applications ou le partage fédéré",
"You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.",
+ "Update all" : "Tout mettre à jour",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Révoquer ce jeton peut empêcher l'effacement de votre appareil s'il n'a pas encore démarré l'effacement.",
"Nextcloud iOS app" : "Application iOS Nextcloud",
"Nextcloud Android app" : "Application Android Nextcloud",
@@ -497,6 +494,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activée car cela rend le serveur instable.",
"mail" : "e-mail",
"Test email settings" : "Tester les paramètres e-mail",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Afin d'optimiser au mieux la performance de votre instance, il est important de configurer correctement les travaux en arrière-plan. 'Cron' est le paramètre recommandé pour les instances de taille importante. Veuillez vous référer à la documentation Nextcloud pour plus d'informations à ce sujet.",
+ "Execute one task with each page loaded." : "Exécute une tâche à chaque chargement de page",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php est enregistré à un service webcron pour exécuter cron.php toutes les 5 minutes par HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Utiliser le service cron du système pour appeler le fichier cron.php toutes les 5 minutes.",
"Expire after " : "Expiration après ",
"days" : "jours",
"Allow users to share via link" : "Autoriser les utilisateurs à partager par lien",
diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js
index 338463fc29a..2183ee6cc11 100644
--- a/apps/settings/l10n/gl.js
+++ b/apps/settings/l10n/gl.js
@@ -155,7 +155,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "As aplicacións destacadas están desenvolvidas por e dentro da comunidade. Ofrecen unha funcionalidade central e están preparadas para o seu uso en produción.",
"Featured" : "Destacada",
"Update to {update}" : "Actualizar a {update}",
- "Update all" : "Actualizar todo",
"Results from other categories" : "Resultados doutras categorías",
"No apps found for your version" : "Non se atoparon aplicacións para a súa versión",
"Disable all" : "Desactivar todo",
@@ -354,11 +353,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Dende %s non se executou ningún traballo. Considere cambiar ao cron do sistema.",
"Last job ran %s." : "O último traballo executouse %s.",
"Background job didn’t run yet!" : "O traballo en segundo plano aínda non se executou!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendemento óptimo é importante configurar correctamente os traballos en segundo plano. Para instancias máis grandes, «Cron» é o axuste recomendado. Vexa a documentación para obter máis información.",
"Pick background job setting" : "Escolla os axustes do traballo en segundo plano",
- "Execute one task with each page loaded." : "Executar unha tarefa con cada páxina cargada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está rexistrado nun servizo de WebCron para chamar a cron.php cada 5 minutos a través de HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Use o servizo «cron» do sistema para chamar ao ficheiro cron.php cada 5 minutos.",
+ "Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isto necesitase a extensión POSIX de PHP. Vexa a {linkstart}documentación de PHP{linkend} para obter máis detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode facer axustes finos do comportamento al compartir. Lea a documentación para obter máis más información.",
@@ -410,6 +406,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." : " Se usa aplicacións de terceiros para conectarse a Nextcloud, asegúrese de crear e configurar un contrasinal de aplicación para cada unha antes de activar a autenticación de segundo factor.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e actualizando aplicacións mediante a tenda de aplicacións ou da nube federada compartida",
"You need to set your user email before being able to send test emails." : "É necesario configurar o correo do usuario antes de poder enviar mensaxes de correo de proba.",
+ "Update all" : "Actualizar todo",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "O revogado deste testemuño pode impedir a limpeza deste dispositivo se aínda non comezou.",
"Nextcloud iOS app" : "Apli Nextcloud para iOS",
"Nextcloud Android app" : "Apli Nextcloud para Android",
@@ -424,6 +421,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Erro: Esta aplicación non pode ser activada xa que xera inestabilidade no servidor ",
"mail" : "correo",
"Test email settings" : "Correo de proba dos axustes",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendemento óptimo é importante configurar correctamente os traballos en segundo plano. Para instancias máis grandes, «Cron» é o axuste recomendado. Vexa a documentación para obter máis información.",
+ "Execute one task with each page loaded." : "Executar unha tarefa con cada páxina cargada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está rexistrado nun servizo de WebCron para chamar a cron.php cada 5 minutos a través de HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Use o servizo «cron» do sistema para chamar ao ficheiro cron.php cada 5 minutos.",
"Expire after " : "Caduca após",
"days" : "días",
"Allow users to share via link" : "Permitir que os usuarios compartan a través de ligazóns",
diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json
index deab8f995d5..044c8e42f01 100644
--- a/apps/settings/l10n/gl.json
+++ b/apps/settings/l10n/gl.json
@@ -153,7 +153,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "As aplicacións destacadas están desenvolvidas por e dentro da comunidade. Ofrecen unha funcionalidade central e están preparadas para o seu uso en produción.",
"Featured" : "Destacada",
"Update to {update}" : "Actualizar a {update}",
- "Update all" : "Actualizar todo",
"Results from other categories" : "Resultados doutras categorías",
"No apps found for your version" : "Non se atoparon aplicacións para a súa versión",
"Disable all" : "Desactivar todo",
@@ -352,11 +351,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Dende %s non se executou ningún traballo. Considere cambiar ao cron do sistema.",
"Last job ran %s." : "O último traballo executouse %s.",
"Background job didn’t run yet!" : "O traballo en segundo plano aínda non se executou!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendemento óptimo é importante configurar correctamente os traballos en segundo plano. Para instancias máis grandes, «Cron» é o axuste recomendado. Vexa a documentación para obter máis información.",
"Pick background job setting" : "Escolla os axustes do traballo en segundo plano",
- "Execute one task with each page loaded." : "Executar unha tarefa con cada páxina cargada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está rexistrado nun servizo de WebCron para chamar a cron.php cada 5 minutos a través de HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Use o servizo «cron» do sistema para chamar ao ficheiro cron.php cada 5 minutos.",
+ "Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isto necesitase a extensión POSIX de PHP. Vexa a {linkstart}documentación de PHP{linkend} para obter máis detalles. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode facer axustes finos do comportamento al compartir. Lea a documentación para obter máis más información.",
@@ -408,6 +404,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." : " Se usa aplicacións de terceiros para conectarse a Nextcloud, asegúrese de crear e configurar un contrasinal de aplicación para cada unha antes de activar a autenticación de segundo factor.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e actualizando aplicacións mediante a tenda de aplicacións ou da nube federada compartida",
"You need to set your user email before being able to send test emails." : "É necesario configurar o correo do usuario antes de poder enviar mensaxes de correo de proba.",
+ "Update all" : "Actualizar todo",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "O revogado deste testemuño pode impedir a limpeza deste dispositivo se aínda non comezou.",
"Nextcloud iOS app" : "Apli Nextcloud para iOS",
"Nextcloud Android app" : "Apli Nextcloud para Android",
@@ -422,6 +419,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Erro: Esta aplicación non pode ser activada xa que xera inestabilidade no servidor ",
"mail" : "correo",
"Test email settings" : "Correo de proba dos axustes",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendemento óptimo é importante configurar correctamente os traballos en segundo plano. Para instancias máis grandes, «Cron» é o axuste recomendado. Vexa a documentación para obter máis información.",
+ "Execute one task with each page loaded." : "Executar unha tarefa con cada páxina cargada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está rexistrado nun servizo de WebCron para chamar a cron.php cada 5 minutos a través de HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Use o servizo «cron» do sistema para chamar ao ficheiro cron.php cada 5 minutos.",
"Expire after " : "Caduca após",
"days" : "días",
"Allow users to share via link" : "Permitir que os usuarios compartan a través de ligazóns",
diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js
index 6e280420589..1728aae7a64 100644
--- a/apps/settings/l10n/he.js
+++ b/apps/settings/l10n/he.js
@@ -155,7 +155,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "היישומונים המומלצים מפותחים על ידי ובתוך הקהילה. הם מציעים תכונות ליבה מסוימות והן מוכנות לשימוש יומיומי.",
"Featured" : "מומלץ",
"Update to {update}" : "עדכון ל־{version}",
- "Update all" : "לעדכן הכול",
"Results from other categories" : "תוצאות מקטגוריות אחרות",
"No apps found for your version" : "לא נמצאו יישומים לגרסה שלך",
"Disable all" : "להשבית הכול",
@@ -352,11 +351,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "חלק מהמשימות לא הופעלו מאז %s. נא לשקול לעבור ל־cron של המערכת.",
"Last job ran %s." : "המשימה האחרונה רצה למשך %s.",
"Background job didn’t run yet!" : "משימת הרקע לא רצה עדיין!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "לביצועים מיטביים חשוב להגדיר משימות רקע כראוי. למערכות גדולות יותר מוטב להשתמש ב־‚Cron’. נא לעיין בתיעוד לקבל מידע נוסף.",
"Pick background job setting" : "בחירת הגדרות למשימת רקע",
- "Execute one task with each page loaded." : "הפעלת משימה אחת עם כל עמוד שנטען.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is רשום בשירות webcron כדי לקרוא ל־cron.php כל 5 דקות דרך HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "להשתמש בשירות ה־cron של המערכת כדי לקרוא לקובץ cron.php כל 5 דקות.",
+ "Recommended" : "מומלץ",
"The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "כדי להריץ זאת יש צורך בהרחבת POSIX ל־PHP. נא לעיין ב{linkstart}תיעוד של PHP{linkend} לפרטים נוספים.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "כמנהל יש לך אפשרות לכוונן את התנהגות השיתוף. נא לעיין בתיעוד לפרטים נוספים.",
@@ -408,6 +404,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." : "אם משמשים אותך יישומי צד־שלישי להתחברות אל Nextcloud, נא לוודא יצירת והגדרת ססמה ליישומון לכל אחד מהם בטרם הפעלת אימות דו־שלבי.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "התקנה ועדכון היישום דרך חנות היישומים או ענן שיתוף מאוגד",
"You need to set your user email before being able to send test emails." : "יש להגדיר כתובת דואר אלקטרוני לפני שניתן יהיה לשלוח דואר אלקטרוני לבדיקה.",
+ "Update all" : "לעדכן הכול",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "שלילת האסימון הזו עשויה למנוע את השמדת נתוני המכשיר שלך אם ההשמדה טרם החלה.",
"Nextcloud iOS app" : "יישומון iOS של Nextcloud",
"Nextcloud Android app" : "יישומון Android של Nextcloud",
@@ -422,6 +419,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "שגיאה: לא ניתן להפעיל יישומון זה כיוון שהוא מערער את יציבות השרת.",
"mail" : "mail",
"Test email settings" : "בדיקת הגדרות דואר אלקטרוני",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "לביצועים מיטביים חשוב להגדיר משימות רקע כראוי. למערכות גדולות יותר מוטב להשתמש ב־‚Cron’. נא לעיין בתיעוד לקבל מידע נוסף.",
+ "Execute one task with each page loaded." : "הפעלת משימה אחת עם כל עמוד שנטען.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is רשום בשירות webcron כדי לקרוא ל־cron.php כל 5 דקות דרך HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "להשתמש בשירות ה־cron של המערכת כדי לקרוא לקובץ cron.php כל 5 דקות.",
"Expire after " : "פג אחרי",
"days" : "ימים",
"Allow users to share via link" : "אפשר למשתמשים לשתף באמצעות קישור",
diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json
index c643a34217e..0a80df8161d 100644
--- a/apps/settings/l10n/he.json
+++ b/apps/settings/l10n/he.json
@@ -153,7 +153,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "היישומונים המומלצים מפותחים על ידי ובתוך הקהילה. הם מציעים תכונות ליבה מסוימות והן מוכנות לשימוש יומיומי.",
"Featured" : "מומלץ",
"Update to {update}" : "עדכון ל־{version}",
- "Update all" : "לעדכן הכול",
"Results from other categories" : "תוצאות מקטגוריות אחרות",
"No apps found for your version" : "לא נמצאו יישומים לגרסה שלך",
"Disable all" : "להשבית הכול",
@@ -350,11 +349,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "חלק מהמשימות לא הופעלו מאז %s. נא לשקול לעבור ל־cron של המערכת.",
"Last job ran %s." : "המשימה האחרונה רצה למשך %s.",
"Background job didn’t run yet!" : "משימת הרקע לא רצה עדיין!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "לביצועים מיטביים חשוב להגדיר משימות רקע כראוי. למערכות גדולות יותר מוטב להשתמש ב־‚Cron’. נא לעיין בתיעוד לקבל מידע נוסף.",
"Pick background job setting" : "בחירת הגדרות למשימת רקע",
- "Execute one task with each page loaded." : "הפעלת משימה אחת עם כל עמוד שנטען.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is רשום בשירות webcron כדי לקרוא ל־cron.php כל 5 דקות דרך HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "להשתמש בשירות ה־cron של המערכת כדי לקרוא לקובץ cron.php כל 5 דקות.",
+ "Recommended" : "מומלץ",
"The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "כדי להריץ זאת יש צורך בהרחבת POSIX ל־PHP. נא לעיין ב{linkstart}תיעוד של PHP{linkend} לפרטים נוספים.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "כמנהל יש לך אפשרות לכוונן את התנהגות השיתוף. נא לעיין בתיעוד לפרטים נוספים.",
@@ -406,6 +402,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." : "אם משמשים אותך יישומי צד־שלישי להתחברות אל Nextcloud, נא לוודא יצירת והגדרת ססמה ליישומון לכל אחד מהם בטרם הפעלת אימות דו־שלבי.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "התקנה ועדכון היישום דרך חנות היישומים או ענן שיתוף מאוגד",
"You need to set your user email before being able to send test emails." : "יש להגדיר כתובת דואר אלקטרוני לפני שניתן יהיה לשלוח דואר אלקטרוני לבדיקה.",
+ "Update all" : "לעדכן הכול",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "שלילת האסימון הזו עשויה למנוע את השמדת נתוני המכשיר שלך אם ההשמדה טרם החלה.",
"Nextcloud iOS app" : "יישומון iOS של Nextcloud",
"Nextcloud Android app" : "יישומון Android של Nextcloud",
@@ -420,6 +417,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "שגיאה: לא ניתן להפעיל יישומון זה כיוון שהוא מערער את יציבות השרת.",
"mail" : "mail",
"Test email settings" : "בדיקת הגדרות דואר אלקטרוני",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "לביצועים מיטביים חשוב להגדיר משימות רקע כראוי. למערכות גדולות יותר מוטב להשתמש ב־‚Cron’. נא לעיין בתיעוד לקבל מידע נוסף.",
+ "Execute one task with each page loaded." : "הפעלת משימה אחת עם כל עמוד שנטען.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is רשום בשירות webcron כדי לקרוא ל־cron.php כל 5 דקות דרך HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "להשתמש בשירות ה־cron של המערכת כדי לקרוא לקובץ cron.php כל 5 דקות.",
"Expire after " : "פג אחרי",
"days" : "ימים",
"Allow users to share via link" : "אפשר למשתמשים לשתף באמצעות קישור",
diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js
index ba2c550cef1..478786e63f1 100644
--- a/apps/settings/l10n/hr.js
+++ b/apps/settings/l10n/hr.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Istaknute aplikacije razvijaju članovi zajednice. One nude osnovnu funkcionalnost i spremne su za produkciju.",
"Featured" : "Istaknuto",
"Update to {update}" : "Ažuriraj na {update}",
- "Update all" : "Ažuriraj sve",
"Results from other categories" : "Rezultati iz drugih kategorija",
"No apps found for your version" : "Nije pronađena nijedna aplikacija za vašu inačicu",
"Disable all" : "Onemogući sve",
@@ -414,11 +413,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Određeni zadaci nisu izvršeni od %s. Razmislite o prebacivanju na sistemski cron.",
"Last job ran %s." : "Posljednji zadatak pokrenut je %s.",
"Background job didn’t run yet!" : "Pozadinski zadatak još nije pokrenut!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Kako biste osigurali optimalne performanse važno je pravilno konfigurirati pozadinske zadatke. Kod većih instanci preporučujemo korištenje postavke ‘Cron’. Više informacija možete pronaći u odgovarajućoj dokumentaciji.",
"Pick background job setting" : "Odaberite postavku pozadinskog zadatka",
- "Execute one task with each page loaded." : "Izvršite jedan zadatak sa svakom učitanom stranicom.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php registriran je na servisu webcron za pozivanje datoteke cron.php svakih 5 minuta putem HTTP-a.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Koristite se sistemskim servisom cron za pozivanje datoteke cron.php svakih 5 minuta.",
+ "Recommended" : "Preporuceno",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php treba izvršiti korisnik „%s”.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Za izvršavanje navedenog postupka potrebno je proširenje PHP POSIX. Pogledajte {linkstart}dokumentaciju PHP-a{linkend} za više informacija.",
"You need to enable the File sharing App." : "Morate omogućiti aplikaciju za dijeljenje datoteka.",
@@ -483,6 +479,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." : "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.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instaliranje i ažuriranje aplikacija putem trgovine aplikacijama ili dijeljenja putem udruženog oblaka",
"You need to set your user email before being able to send test emails." : "Prije slanja testnih poruka e-pošte trebate postaviti svoj korisnički račun e-pošte.",
+ "Update all" : "Ažuriraj sve",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Opozivanje ovog tokena može spriječiti brisanje sadržaja s vašeg uređaja ako brisanje nije pokrenuto.",
"Nextcloud iOS app" : "Aplikacija Nextcloud za iOS",
"Nextcloud Android app" : "Aplikacija Nextcloud za Android",
@@ -497,6 +494,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Pogreška: ovu se aplikaciju ne može omogućiti jer poslužitelj može postati nestabilan",
"mail" : "pošta",
"Test email settings" : "Ispitaj postavke e-pošte",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Kako biste osigurali optimalne performanse važno je pravilno konfigurirati pozadinske zadatke. Kod većih instanci preporučujemo korištenje postavke ‘Cron’. Više informacija možete pronaći u odgovarajućoj dokumentaciji.",
+ "Execute one task with each page loaded." : "Izvršite jedan zadatak sa svakom učitanom stranicom.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php registriran je na servisu webcron za pozivanje datoteke cron.php svakih 5 minuta putem HTTP-a.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Koristite se sistemskim servisom cron za pozivanje datoteke cron.php svakih 5 minuta.",
"Expire after " : "Istek nakon",
"days" : "dana",
"Allow users to share via link" : "Dopusti korisnicima dijeljenje putem poveznice",
diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json
index 6bade9b4693..00746d72f35 100644
--- a/apps/settings/l10n/hr.json
+++ b/apps/settings/l10n/hr.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Istaknute aplikacije razvijaju članovi zajednice. One nude osnovnu funkcionalnost i spremne su za produkciju.",
"Featured" : "Istaknuto",
"Update to {update}" : "Ažuriraj na {update}",
- "Update all" : "Ažuriraj sve",
"Results from other categories" : "Rezultati iz drugih kategorija",
"No apps found for your version" : "Nije pronađena nijedna aplikacija za vašu inačicu",
"Disable all" : "Onemogući sve",
@@ -412,11 +411,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Određeni zadaci nisu izvršeni od %s. Razmislite o prebacivanju na sistemski cron.",
"Last job ran %s." : "Posljednji zadatak pokrenut je %s.",
"Background job didn’t run yet!" : "Pozadinski zadatak još nije pokrenut!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Kako biste osigurali optimalne performanse važno je pravilno konfigurirati pozadinske zadatke. Kod većih instanci preporučujemo korištenje postavke ‘Cron’. Više informacija možete pronaći u odgovarajućoj dokumentaciji.",
"Pick background job setting" : "Odaberite postavku pozadinskog zadatka",
- "Execute one task with each page loaded." : "Izvršite jedan zadatak sa svakom učitanom stranicom.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php registriran je na servisu webcron za pozivanje datoteke cron.php svakih 5 minuta putem HTTP-a.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Koristite se sistemskim servisom cron za pozivanje datoteke cron.php svakih 5 minuta.",
+ "Recommended" : "Preporuceno",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php treba izvršiti korisnik „%s”.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Za izvršavanje navedenog postupka potrebno je proširenje PHP POSIX. Pogledajte {linkstart}dokumentaciju PHP-a{linkend} za više informacija.",
"You need to enable the File sharing App." : "Morate omogućiti aplikaciju za dijeljenje datoteka.",
@@ -481,6 +477,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." : "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.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instaliranje i ažuriranje aplikacija putem trgovine aplikacijama ili dijeljenja putem udruženog oblaka",
"You need to set your user email before being able to send test emails." : "Prije slanja testnih poruka e-pošte trebate postaviti svoj korisnički račun e-pošte.",
+ "Update all" : "Ažuriraj sve",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Opozivanje ovog tokena može spriječiti brisanje sadržaja s vašeg uređaja ako brisanje nije pokrenuto.",
"Nextcloud iOS app" : "Aplikacija Nextcloud za iOS",
"Nextcloud Android app" : "Aplikacija Nextcloud za Android",
@@ -495,6 +492,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Pogreška: ovu se aplikaciju ne može omogućiti jer poslužitelj može postati nestabilan",
"mail" : "pošta",
"Test email settings" : "Ispitaj postavke e-pošte",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Kako biste osigurali optimalne performanse važno je pravilno konfigurirati pozadinske zadatke. Kod većih instanci preporučujemo korištenje postavke ‘Cron’. Više informacija možete pronaći u odgovarajućoj dokumentaciji.",
+ "Execute one task with each page loaded." : "Izvršite jedan zadatak sa svakom učitanom stranicom.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php registriran je na servisu webcron za pozivanje datoteke cron.php svakih 5 minuta putem HTTP-a.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Koristite se sistemskim servisom cron za pozivanje datoteke cron.php svakih 5 minuta.",
"Expire after " : "Istek nakon",
"days" : "dana",
"Allow users to share via link" : "Dopusti korisnicima dijeljenje putem poveznice",
diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js
index 1c4660f186a..253c2fcbe7a 100644
--- a/apps/settings/l10n/hu.js
+++ b/apps/settings/l10n/hu.js
@@ -178,7 +178,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "A kiemelt alkalmazásokat a közösség tagjai készítik. Ezek biztosítják a fő funkciókat, és készek az éles használatra.",
"Featured" : "Kiemelt",
"Update to {update}" : "Frissítés erre: {update}",
- "Update all" : "Összes frissítése",
"All apps are up-to-date." : "Minden alkalmazás naprakész.",
"Results from other categories" : "Találatok más kategóriákból",
"No apps found for your version" : "Nem található alkalmazás a verziójához",
@@ -434,11 +433,11 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Néhány feladat nem futott ezóta: %s. Fontolja meg a rendszer cronra váltást.",
"Last job ran %s." : "Utolsó futás: %s.",
"Background job didn’t run yet!" : "A háttérfeladat még nem futott le!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Az optimális teljesítményhez fontos, hogy a háttérfeladatok megfelelően legyenek beállítva. Nagyobb telepítésekhez a „Cron” beállítás javasolt. További részletekért lásd a dokumentációt.",
"Pick background job setting" : "Háttérfolyamat beállítás kiválasztása",
- "Execute one task with each page loaded." : "Egy-egy feladat végrehajtása minden oldalbetöltés alkalmával.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "A cron.php regisztrálva van a webcron szolgáltatásban, hogy 5 percenként meghívja a cron.php-t HTTP-n keresztül.",
- "Use system cron service to call the cron.php file every 5 minutes." : "A rendszer cron szolgáltatás használata a cron.php fájl 5 percenként meghívásához.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Egy feladat végrehajtása minden egyes oldalbetöltésnél. Használati eset: egyfelhasználós példány",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "A cron.php egy webcron szolgáltatásnál van regisztrálva, hogy 5 percenkenként meghívja a cron.php-t. Használati eset: Nagyon kis példány (1-5 felhasználó, használattól függően).",
+ "Recommended" : "Ajánlott",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "A rendszer cron szolgáltatásának használata a cron.php fájl 5 percenként meghívásához. Az összes példány esetén ez javasolt.",
"The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t „%s” rendszerfelhasználónak kell végrehajtania.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Ennek futtatásához a PHP POSIX kiterjesztés szükséges. A részletekért lásd a {linkstart}PHP dokumentációt{linkend}.",
"You need to enable the File sharing App." : "Engedélyeznie kell a Fájlmegosztás alkalmazást.",
@@ -508,6 +507,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." : "Ha harmadik féltől származó alkalmazásokat használ a Nextcloudhoz való csatlakozáshoz, akkor a két faktoros hitelesítés engedélyezése előtt győződjön meg róla, hogy mindegyikhez létrehozott és beállított egy alkalmazásjelszót.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "alkalmazások telepítése és frissítése az alkalmazástár vagy a föderált felhőmegosztás segítségével",
"You need to set your user email before being able to send test emails." : "Előbb meg kell adnia az e-mail-címét, mielőtt tesztelni tudná az e-mail küldést.",
+ "Update all" : "Összes frissítése",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "A token visszavonása lehet hogy meggátolja az eszköz törlését, ha az még nem kezdődött el.",
"Nextcloud iOS app" : "Nextcloud iOS-es alkalmazás",
"Nextcloud Android app" : "Nextcloud androidos alkalmazás",
@@ -522,6 +522,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Hiba: az alkalmazás nem engedélyezhető, mert instabillá tenné a kiszolgálót",
"mail" : "levél",
"Test email settings" : "E-mail beállítások ellenőrzése",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Az optimális teljesítményhez fontos, hogy a háttérfeladatok megfelelően legyenek beállítva. Nagyobb telepítésekhez a „Cron” beállítás javasolt. További részletekért lásd a dokumentációt.",
+ "Execute one task with each page loaded." : "Egy-egy feladat végrehajtása minden oldalbetöltés alkalmával.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "A cron.php regisztrálva van a webcron szolgáltatásban, hogy 5 percenként meghívja a cron.php-t HTTP-n keresztül.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "A rendszer cron szolgáltatás használata a cron.php fájl 5 percenként meghívásához.",
"Expire after " : "Lejárat:",
"days" : "nap",
"Allow users to share via link" : "A fájlok hivatkozással történő megosztásának engedélyezése",
diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json
index 93c551559a6..9e11899ee19 100644
--- a/apps/settings/l10n/hu.json
+++ b/apps/settings/l10n/hu.json
@@ -176,7 +176,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "A kiemelt alkalmazásokat a közösség tagjai készítik. Ezek biztosítják a fő funkciókat, és készek az éles használatra.",
"Featured" : "Kiemelt",
"Update to {update}" : "Frissítés erre: {update}",
- "Update all" : "Összes frissítése",
"All apps are up-to-date." : "Minden alkalmazás naprakész.",
"Results from other categories" : "Találatok más kategóriákból",
"No apps found for your version" : "Nem található alkalmazás a verziójához",
@@ -432,11 +431,11 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Néhány feladat nem futott ezóta: %s. Fontolja meg a rendszer cronra váltást.",
"Last job ran %s." : "Utolsó futás: %s.",
"Background job didn’t run yet!" : "A háttérfeladat még nem futott le!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Az optimális teljesítményhez fontos, hogy a háttérfeladatok megfelelően legyenek beállítva. Nagyobb telepítésekhez a „Cron” beállítás javasolt. További részletekért lásd a dokumentációt.",
"Pick background job setting" : "Háttérfolyamat beállítás kiválasztása",
- "Execute one task with each page loaded." : "Egy-egy feladat végrehajtása minden oldalbetöltés alkalmával.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "A cron.php regisztrálva van a webcron szolgáltatásban, hogy 5 percenként meghívja a cron.php-t HTTP-n keresztül.",
- "Use system cron service to call the cron.php file every 5 minutes." : "A rendszer cron szolgáltatás használata a cron.php fájl 5 percenként meghívásához.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Egy feladat végrehajtása minden egyes oldalbetöltésnél. Használati eset: egyfelhasználós példány",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "A cron.php egy webcron szolgáltatásnál van regisztrálva, hogy 5 percenkenként meghívja a cron.php-t. Használati eset: Nagyon kis példány (1-5 felhasználó, használattól függően).",
+ "Recommended" : "Ajánlott",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "A rendszer cron szolgáltatásának használata a cron.php fájl 5 percenként meghívásához. Az összes példány esetén ez javasolt.",
"The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t „%s” rendszerfelhasználónak kell végrehajtania.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Ennek futtatásához a PHP POSIX kiterjesztés szükséges. A részletekért lásd a {linkstart}PHP dokumentációt{linkend}.",
"You need to enable the File sharing App." : "Engedélyeznie kell a Fájlmegosztás alkalmazást.",
@@ -506,6 +505,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." : "Ha harmadik féltől származó alkalmazásokat használ a Nextcloudhoz való csatlakozáshoz, akkor a két faktoros hitelesítés engedélyezése előtt győződjön meg róla, hogy mindegyikhez létrehozott és beállított egy alkalmazásjelszót.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "alkalmazások telepítése és frissítése az alkalmazástár vagy a föderált felhőmegosztás segítségével",
"You need to set your user email before being able to send test emails." : "Előbb meg kell adnia az e-mail-címét, mielőtt tesztelni tudná az e-mail küldést.",
+ "Update all" : "Összes frissítése",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "A token visszavonása lehet hogy meggátolja az eszköz törlését, ha az még nem kezdődött el.",
"Nextcloud iOS app" : "Nextcloud iOS-es alkalmazás",
"Nextcloud Android app" : "Nextcloud androidos alkalmazás",
@@ -520,6 +520,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Hiba: az alkalmazás nem engedélyezhető, mert instabillá tenné a kiszolgálót",
"mail" : "levél",
"Test email settings" : "E-mail beállítások ellenőrzése",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Az optimális teljesítményhez fontos, hogy a háttérfeladatok megfelelően legyenek beállítva. Nagyobb telepítésekhez a „Cron” beállítás javasolt. További részletekért lásd a dokumentációt.",
+ "Execute one task with each page loaded." : "Egy-egy feladat végrehajtása minden oldalbetöltés alkalmával.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "A cron.php regisztrálva van a webcron szolgáltatásban, hogy 5 percenként meghívja a cron.php-t HTTP-n keresztül.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "A rendszer cron szolgáltatás használata a cron.php fájl 5 percenként meghívásához.",
"Expire after " : "Lejárat:",
"days" : "nap",
"Allow users to share via link" : "A fájlok hivatkozással történő megosztásának engedélyezése",
diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js
index a6a27862a7e..f7d1e5fc662 100644
--- a/apps/settings/l10n/id.js
+++ b/apps/settings/l10n/id.js
@@ -292,6 +292,7 @@ OC.L10N.register(
"Last job ran %s." : "Pekerjaan terakhir dijalankan %s",
"Background job didn’t run yet!" : "Pekerjaan latar belakang belum berjalan!",
"Pick background job setting" : "Pilih pengaturan pekerjaan latar belakang",
+ "Recommended" : "Direkomendasikan",
"Allow apps to use the Share API" : "Izinkan aplikasi untuk menggunakan API Pembagian",
"Enforce expiration date" : "Berlakukan tanggal kadaluarsa",
"Allow public uploads" : "Izinkan unggahan publik",
diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json
index 5e66142c908..c05162df2af 100644
--- a/apps/settings/l10n/id.json
+++ b/apps/settings/l10n/id.json
@@ -290,6 +290,7 @@
"Last job ran %s." : "Pekerjaan terakhir dijalankan %s",
"Background job didn’t run yet!" : "Pekerjaan latar belakang belum berjalan!",
"Pick background job setting" : "Pilih pengaturan pekerjaan latar belakang",
+ "Recommended" : "Direkomendasikan",
"Allow apps to use the Share API" : "Izinkan aplikasi untuk menggunakan API Pembagian",
"Enforce expiration date" : "Berlakukan tanggal kadaluarsa",
"Allow public uploads" : "Izinkan unggahan publik",
diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js
index 079eeb2fde9..befdd0859f6 100644
--- a/apps/settings/l10n/is.js
+++ b/apps/settings/l10n/is.js
@@ -138,7 +138,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Forrit í deiglunni eru þróuð af og innan samfélagsins. Þau bjóða upp á ýmsa kjarnaeiginleika og eru tilbúin til notkunar í raunvinnslu.",
"Featured" : "Í deiglunni",
"Update to {update}" : "Uppfæra í {update}",
- "Update all" : "Uppfæra allt",
"Results from other categories" : "Niðurstöður úr öðrum flokkum",
"No apps found for your version" : "Engin forrit fundust fyrir útgáfuna þína",
"Disable all" : "Gera allt óvirkt",
@@ -319,10 +318,8 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "Síðasta verk var keyrt %s. Eitthvað er ekki eins og það á að sér að vera.",
"Last job ran %s." : "Síðasta verk var keyrt %s.",
"Background job didn’t run yet!" : "Bakgrunnsverk hefur ekki ennþá verið keyrt!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.",
"Pick background job setting" : "Veldu stillingu á bakgrunnsverki",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 5 mínútna fresti yfir HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 5 mínútna fresti.",
+ "Recommended" : "Mælt með",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Til að keyra þetta þarftu að hafa PHP-POSIX-viðaukann (extension). Skoðaðu {linkstart}PHP-hjálparskjölin{linkend} fyrir nánari útlistun.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Sem stjórnandi geturðu fínstillt hegðun við deilingu. Endilega kíktu á hjálparskjölin til að sjá ítarlegri upplýsingar.",
@@ -368,6 +365,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "Notaðu annað þrep til viðbótar lykilorðinu þínu til að auka öryggi notandaaðgangsins þíns.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "uppsetning eða uppfærsla forrita úr forritabúð eða með skýjasambandi",
"You need to set your user email before being able to send test emails." : "Þú verður að gefa upp netfangið þitt svo að þú getir sent prófunarpósta.",
+ "Update all" : "Uppfæra allt",
"Nextcloud iOS app" : "Nextcloud iOS forrit",
"Nextcloud Android app" : "Nextcloud Android forrit",
"Nextcloud Talk for iOS" : "Nextcloud Talk fyrir iOS",
@@ -381,6 +379,9 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan.",
"mail" : "póstur",
"Test email settings" : "Prófa tölvupóststillingar",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 5 mínútna fresti yfir HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 5 mínútna fresti.",
"Expire after " : "Rennur út eftir ",
"days" : "daga",
"Allow users to share via link" : "Leyfa notendum að deila með tengli",
diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json
index b4d6b9662df..64caa16506b 100644
--- a/apps/settings/l10n/is.json
+++ b/apps/settings/l10n/is.json
@@ -136,7 +136,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Forrit í deiglunni eru þróuð af og innan samfélagsins. Þau bjóða upp á ýmsa kjarnaeiginleika og eru tilbúin til notkunar í raunvinnslu.",
"Featured" : "Í deiglunni",
"Update to {update}" : "Uppfæra í {update}",
- "Update all" : "Uppfæra allt",
"Results from other categories" : "Niðurstöður úr öðrum flokkum",
"No apps found for your version" : "Engin forrit fundust fyrir útgáfuna þína",
"Disable all" : "Gera allt óvirkt",
@@ -317,10 +316,8 @@
"Last job execution ran %s. Something seems wrong." : "Síðasta verk var keyrt %s. Eitthvað er ekki eins og það á að sér að vera.",
"Last job ran %s." : "Síðasta verk var keyrt %s.",
"Background job didn’t run yet!" : "Bakgrunnsverk hefur ekki ennþá verið keyrt!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.",
"Pick background job setting" : "Veldu stillingu á bakgrunnsverki",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 5 mínútna fresti yfir HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 5 mínútna fresti.",
+ "Recommended" : "Mælt með",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Til að keyra þetta þarftu að hafa PHP-POSIX-viðaukann (extension). Skoðaðu {linkstart}PHP-hjálparskjölin{linkend} fyrir nánari útlistun.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Sem stjórnandi geturðu fínstillt hegðun við deilingu. Endilega kíktu á hjálparskjölin til að sjá ítarlegri upplýsingar.",
@@ -366,6 +363,7 @@
"Use a second factor besides your password to increase security for your account." : "Notaðu annað þrep til viðbótar lykilorðinu þínu til að auka öryggi notandaaðgangsins þíns.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "uppsetning eða uppfærsla forrita úr forritabúð eða með skýjasambandi",
"You need to set your user email before being able to send test emails." : "Þú verður að gefa upp netfangið þitt svo að þú getir sent prófunarpósta.",
+ "Update all" : "Uppfæra allt",
"Nextcloud iOS app" : "Nextcloud iOS forrit",
"Nextcloud Android app" : "Nextcloud Android forrit",
"Nextcloud Talk for iOS" : "Nextcloud Talk fyrir iOS",
@@ -379,6 +377,9 @@
"Error: This app can not be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan.",
"mail" : "póstur",
"Test email settings" : "Prófa tölvupóststillingar",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 5 mínútna fresti yfir HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 5 mínútna fresti.",
"Expire after " : "Rennur út eftir ",
"days" : "daga",
"Allow users to share via link" : "Leyfa notendum að deila með tengli",
diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js
index 28ffc5c2bff..e413ed5d3f0 100644
--- a/apps/settings/l10n/it.js
+++ b/apps/settings/l10n/it.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni in evidenza sono sviluppate dalla comunità. Esse offrono nuove funzionalità e sono pronte per l'uso in produzione.",
"Featured" : "In evidenza",
"Update to {update}" : "Aggiorna a {update}",
- "Update all" : "Aggiorna tutto",
"All apps are up-to-date." : "Tutte le app sono aggiornate.",
"Results from other categories" : "Risultati da altre categorie",
"No apps found for your version" : "Nessuna applicazione trovata per la tua versione",
@@ -421,11 +420,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Alcune operazioni non sono state eseguite da %s. Considera di passare al cron di sistema.",
"Last job ran %s." : "Ultima esecuzione di cron: %s.",
"Background job didn’t run yet!" : "Operazione in background non ancora eseguita!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per prestazioni ottimali è importante configurare le operazioni in background correttamente. Per le istanze più grandi 'Cron' è l'impostazione consigliata. Vedi la documentazione per ulteriori informazioni.",
"Pick background job setting" : "Scegli le impostazioni delle operazioni in background",
- "Execute one task with each page loaded." : "Esegui un'attività con ogni pagina caricata.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 5 minuti su HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 5 minuti.",
+ "Recommended" : "Consigliata",
"The cron.php needs to be executed by the system user \"%s\"." : "Il cron.php deve essere eseguito dall'utente di sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per eseguirlo, hai bisogno dell'estensione POSIX di PHP. Vedi la {linkstart}documentazione di PHP{linkend} per ulteriori dettagli.",
"You need to enable the File sharing App." : "Devi attivare l'app File sharing.",
@@ -491,6 +487,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." : "Se utilizzi applicazioni di terze parti per connetterti a Nextcloud, assicurati di creare e configurare una password per ciascuna applicazione prima di abilitare l'autenticazione a due fattori.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installazione e aggiornamento delle applicazioni tramite il negozio delle applicazioni o condivisione cloud federata",
"You need to set your user email before being able to send test emails." : "Devi impostare l'indirizzo del tuo utente prima di poter provare l'invio delle email.",
+ "Update all" : "Aggiorna tutto",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "La revoca di questo token potrebbe impedire la cancellazione del tuo dispositivo se non ha ancora iniziato ancora la cancellazione.",
"Nextcloud iOS app" : "Applicazione di Nextcloud per iOS",
"Nextcloud Android app" : "Applicazione di Nextcloud per Android",
@@ -505,6 +502,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Errore: questa applicazione non può essere abilitata perché rende il server instabile",
"mail" : "posta",
"Test email settings" : "Prova impostazioni email",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per prestazioni ottimali è importante configurare le operazioni in background correttamente. Per le istanze più grandi 'Cron' è l'impostazione consigliata. Vedi la documentazione per ulteriori informazioni.",
+ "Execute one task with each page loaded." : "Esegui un'attività con ogni pagina caricata.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 5 minuti su HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 5 minuti.",
"Expire after " : "Scadenza dopo",
"days" : "giorni",
"Allow users to share via link" : "Consenti agli utenti di condividere tramite collegamento",
diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json
index a73d392c035..63bab77d810 100644
--- a/apps/settings/l10n/it.json
+++ b/apps/settings/l10n/it.json
@@ -166,7 +166,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni in evidenza sono sviluppate dalla comunità. Esse offrono nuove funzionalità e sono pronte per l'uso in produzione.",
"Featured" : "In evidenza",
"Update to {update}" : "Aggiorna a {update}",
- "Update all" : "Aggiorna tutto",
"All apps are up-to-date." : "Tutte le app sono aggiornate.",
"Results from other categories" : "Risultati da altre categorie",
"No apps found for your version" : "Nessuna applicazione trovata per la tua versione",
@@ -419,11 +418,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Alcune operazioni non sono state eseguite da %s. Considera di passare al cron di sistema.",
"Last job ran %s." : "Ultima esecuzione di cron: %s.",
"Background job didn’t run yet!" : "Operazione in background non ancora eseguita!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per prestazioni ottimali è importante configurare le operazioni in background correttamente. Per le istanze più grandi 'Cron' è l'impostazione consigliata. Vedi la documentazione per ulteriori informazioni.",
"Pick background job setting" : "Scegli le impostazioni delle operazioni in background",
- "Execute one task with each page loaded." : "Esegui un'attività con ogni pagina caricata.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 5 minuti su HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 5 minuti.",
+ "Recommended" : "Consigliata",
"The cron.php needs to be executed by the system user \"%s\"." : "Il cron.php deve essere eseguito dall'utente di sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per eseguirlo, hai bisogno dell'estensione POSIX di PHP. Vedi la {linkstart}documentazione di PHP{linkend} per ulteriori dettagli.",
"You need to enable the File sharing App." : "Devi attivare l'app File sharing.",
@@ -489,6 +485,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." : "Se utilizzi applicazioni di terze parti per connetterti a Nextcloud, assicurati di creare e configurare una password per ciascuna applicazione prima di abilitare l'autenticazione a due fattori.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installazione e aggiornamento delle applicazioni tramite il negozio delle applicazioni o condivisione cloud federata",
"You need to set your user email before being able to send test emails." : "Devi impostare l'indirizzo del tuo utente prima di poter provare l'invio delle email.",
+ "Update all" : "Aggiorna tutto",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "La revoca di questo token potrebbe impedire la cancellazione del tuo dispositivo se non ha ancora iniziato ancora la cancellazione.",
"Nextcloud iOS app" : "Applicazione di Nextcloud per iOS",
"Nextcloud Android app" : "Applicazione di Nextcloud per Android",
@@ -503,6 +500,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Errore: questa applicazione non può essere abilitata perché rende il server instabile",
"mail" : "posta",
"Test email settings" : "Prova impostazioni email",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per prestazioni ottimali è importante configurare le operazioni in background correttamente. Per le istanze più grandi 'Cron' è l'impostazione consigliata. Vedi la documentazione per ulteriori informazioni.",
+ "Execute one task with each page loaded." : "Esegui un'attività con ogni pagina caricata.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 5 minuti su HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 5 minuti.",
"Expire after " : "Scadenza dopo",
"days" : "giorni",
"Allow users to share via link" : "Consenti agli utenti di condividere tramite collegamento",
diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js
index a9cfe2deb13..151763ae686 100644
--- a/apps/settings/l10n/ja.js
+++ b/apps/settings/l10n/ja.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "注目のアプリはコミュニティ内で開発されています。これらのアプリは主要な機能を提供しており、すぐに本番で使用することができます。",
"Featured" : "注目",
"Update to {update}" : "{update} にアップデート",
- "Update all" : "全て更新する",
"Results from other categories" : "他のカテゴリからの結果",
"No apps found for your version" : "現在のバージョンに対応するアプリはありません",
"Disable all" : "すべて無効にする",
@@ -404,11 +403,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "%s 以降、一部のジョブが実行されませんでした。cron への切り替えを検討してください。",
"Last job ran %s." : "最終ジョブ実行: %s",
"Background job didn’t run yet!" : "バックグラウンドジョブは実行されていません",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "最適なパフォーマンスにするには、バックグラウンドジョブを正確に設定することが重要です。大規模なインスタンスでは、'Cron'がお薦めの設定です。詳細な情報は、ドキュメントを参照してください。",
"Pick background job setting" : "バックグラウンドジョブ設定を選択",
- "Execute one task with each page loaded." : "各ページの読み込み毎にタスクを実行します。",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.phpは、HTTP経由で5分ごとにcron.phpを実行するようwebcronサービスに登録されます。",
- "Use system cron service to call the cron.php file every 5 minutes." : "システムのcronサービスを利用して、5分ごとにcron.phpファイルを実行します。",
+ "Recommended" : "おすすめ",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php はシステムユーザー \"%s\" で実行する必要があります。",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "これを実行するにはPHPのposix拡張が必要です。詳細については、{linkstart} PHPドキュメント{linkend}を参照してください。",
"You need to enable the File sharing App." : "ファイル共有アプリを有効にする必要があります。",
@@ -473,6 +469,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." : "サードパーティのアプリケーションを使用してNextcloudに接続する場合は、二要素認証を有効にする前に必ずそれぞれのアプリパスワードを作成して設定してください。",
"installing and updating apps via the app store or Federated Cloud Sharing" : "アプリストアまたはクラウド連携共有から、アプリをインストールならびにアップデート",
"You need to set your user email before being able to send test emails." : "ユーザーメールを設定して初めて、テストメールを送信することができるようになります。",
+ "Update all" : "全て更新する",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "ワイプが開始されていない場合、このトークンを無効にすると端末のワイプが無効になる可能性があります。",
"Nextcloud iOS app" : "Nextcloud iOSアプリ",
"Nextcloud Android app" : "Nextcloud Android アプリ",
@@ -487,6 +484,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "エラー:このアプリは、サーバーを不安定にするため、有効にすることができません。",
"mail" : "mail",
"Test email settings" : "メール設定のテスト",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "最適なパフォーマンスにするには、バックグラウンドジョブを正確に設定することが重要です。大規模なインスタンスでは、'Cron'がお薦めの設定です。詳細な情報は、ドキュメントを参照してください。",
+ "Execute one task with each page loaded." : "各ページの読み込み毎にタスクを実行します。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.phpは、HTTP経由で5分ごとにcron.phpを実行するようwebcronサービスに登録されます。",
+ "Use system cron service to call the cron.php file every 5 minutes." : "システムのcronサービスを利用して、5分ごとにcron.phpファイルを実行します。",
"Expire after " : "無効になるまで",
"days" : "日",
"Allow users to share via link" : "URLリンクでの共有を許可する",
diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json
index f62f139dbc7..205b3c028a7 100644
--- a/apps/settings/l10n/ja.json
+++ b/apps/settings/l10n/ja.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "注目のアプリはコミュニティ内で開発されています。これらのアプリは主要な機能を提供しており、すぐに本番で使用することができます。",
"Featured" : "注目",
"Update to {update}" : "{update} にアップデート",
- "Update all" : "全て更新する",
"Results from other categories" : "他のカテゴリからの結果",
"No apps found for your version" : "現在のバージョンに対応するアプリはありません",
"Disable all" : "すべて無効にする",
@@ -402,11 +401,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "%s 以降、一部のジョブが実行されませんでした。cron への切り替えを検討してください。",
"Last job ran %s." : "最終ジョブ実行: %s",
"Background job didn’t run yet!" : "バックグラウンドジョブは実行されていません",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "最適なパフォーマンスにするには、バックグラウンドジョブを正確に設定することが重要です。大規模なインスタンスでは、'Cron'がお薦めの設定です。詳細な情報は、ドキュメントを参照してください。",
"Pick background job setting" : "バックグラウンドジョブ設定を選択",
- "Execute one task with each page loaded." : "各ページの読み込み毎にタスクを実行します。",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.phpは、HTTP経由で5分ごとにcron.phpを実行するようwebcronサービスに登録されます。",
- "Use system cron service to call the cron.php file every 5 minutes." : "システムのcronサービスを利用して、5分ごとにcron.phpファイルを実行します。",
+ "Recommended" : "おすすめ",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php はシステムユーザー \"%s\" で実行する必要があります。",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "これを実行するにはPHPのposix拡張が必要です。詳細については、{linkstart} PHPドキュメント{linkend}を参照してください。",
"You need to enable the File sharing App." : "ファイル共有アプリを有効にする必要があります。",
@@ -471,6 +467,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." : "サードパーティのアプリケーションを使用してNextcloudに接続する場合は、二要素認証を有効にする前に必ずそれぞれのアプリパスワードを作成して設定してください。",
"installing and updating apps via the app store or Federated Cloud Sharing" : "アプリストアまたはクラウド連携共有から、アプリをインストールならびにアップデート",
"You need to set your user email before being able to send test emails." : "ユーザーメールを設定して初めて、テストメールを送信することができるようになります。",
+ "Update all" : "全て更新する",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "ワイプが開始されていない場合、このトークンを無効にすると端末のワイプが無効になる可能性があります。",
"Nextcloud iOS app" : "Nextcloud iOSアプリ",
"Nextcloud Android app" : "Nextcloud Android アプリ",
@@ -485,6 +482,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "エラー:このアプリは、サーバーを不安定にするため、有効にすることができません。",
"mail" : "mail",
"Test email settings" : "メール設定のテスト",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "最適なパフォーマンスにするには、バックグラウンドジョブを正確に設定することが重要です。大規模なインスタンスでは、'Cron'がお薦めの設定です。詳細な情報は、ドキュメントを参照してください。",
+ "Execute one task with each page loaded." : "各ページの読み込み毎にタスクを実行します。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.phpは、HTTP経由で5分ごとにcron.phpを実行するようwebcronサービスに登録されます。",
+ "Use system cron service to call the cron.php file every 5 minutes." : "システムのcronサービスを利用して、5分ごとにcron.phpファイルを実行します。",
"Expire after " : "無効になるまで",
"days" : "日",
"Allow users to share via link" : "URLリンクでの共有を許可する",
diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js
index 2a7f46a1d88..b5b15d25fdd 100644
--- a/apps/settings/l10n/ka_GE.js
+++ b/apps/settings/l10n/ka_GE.js
@@ -217,7 +217,6 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "ბოლო საქმე გაიშვა %s. რაღაც არასწორია.",
"Last job ran %s." : "ბოლო საქმის გაშვება - %s.",
"Background job didn’t run yet!" : "ფონური საქმე ჯერ არ გაშვებულა!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "ოპტიმალური მოღვაწეობისთვის მნიშვნელოვანია ფონური საქმეების სწორი კონფიგურაცია. დიდი ინსტანციებისთვის 'კრონი' რეკომენდირებული არჩევანია. გთხოვთ მეტი ინფორმაციისთვის იხილოთ დოკუმენტაცია.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php უნდა გაუშვას სისტემურმა მოხმარებელმა \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "ამის გასაშვებად საჭიროა გქონდეთ PHP POSIX გაფართოება. მეტი დეტალებისთვის იხილეთ {linkstart}PHP დოკუმენტაცია{linkend}. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "როგორც ადმინისტრატორს შეგიძლიათ გაზიარების ქცევის კორექტირება. დამატებითი ინფორმაციისთვის იხილეთ დოკუმენტაცია.",
@@ -264,6 +263,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "შეცდომა: ეს აპლიკაცია ვერ მოქმედდება რადგანაც სერვერს ხდის არასტაბილურს",
"mail" : "წერილი",
"Test email settings" : "ელ-ფოსტის პარამეტრების შემომება",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "ოპტიმალური მოღვაწეობისთვის მნიშვნელოვანია ფონური საქმეების სწორი კონფიგურაცია. დიდი ინსტანციებისთვის 'კრონი' რეკომენდირებული არჩევანია. გთხოვთ მეტი ინფორმაციისთვის იხილოთ დოკუმენტაცია.",
"Expire after " : "ვადის ამოწურვა",
"days" : "დღე",
"Allow users to share via link" : "მიეცით მოხმარებლებს ბმულით გაზიარების უფლება",
diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json
index 5d4c5d7da19..24834f5d7be 100644
--- a/apps/settings/l10n/ka_GE.json
+++ b/apps/settings/l10n/ka_GE.json
@@ -215,7 +215,6 @@
"Last job execution ran %s. Something seems wrong." : "ბოლო საქმე გაიშვა %s. რაღაც არასწორია.",
"Last job ran %s." : "ბოლო საქმის გაშვება - %s.",
"Background job didn’t run yet!" : "ფონური საქმე ჯერ არ გაშვებულა!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "ოპტიმალური მოღვაწეობისთვის მნიშვნელოვანია ფონური საქმეების სწორი კონფიგურაცია. დიდი ინსტანციებისთვის 'კრონი' რეკომენდირებული არჩევანია. გთხოვთ მეტი ინფორმაციისთვის იხილოთ დოკუმენტაცია.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php უნდა გაუშვას სისტემურმა მოხმარებელმა \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "ამის გასაშვებად საჭიროა გქონდეთ PHP POSIX გაფართოება. მეტი დეტალებისთვის იხილეთ {linkstart}PHP დოკუმენტაცია{linkend}. ",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "როგორც ადმინისტრატორს შეგიძლიათ გაზიარების ქცევის კორექტირება. დამატებითი ინფორმაციისთვის იხილეთ დოკუმენტაცია.",
@@ -262,6 +261,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "შეცდომა: ეს აპლიკაცია ვერ მოქმედდება რადგანაც სერვერს ხდის არასტაბილურს",
"mail" : "წერილი",
"Test email settings" : "ელ-ფოსტის პარამეტრების შემომება",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "ოპტიმალური მოღვაწეობისთვის მნიშვნელოვანია ფონური საქმეების სწორი კონფიგურაცია. დიდი ინსტანციებისთვის 'კრონი' რეკომენდირებული არჩევანია. გთხოვთ მეტი ინფორმაციისთვის იხილოთ დოკუმენტაცია.",
"Expire after " : "ვადის ამოწურვა",
"days" : "დღე",
"Allow users to share via link" : "მიეცით მოხმარებლებს ბმულით გაზიარების უფლება",
diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js
index 79db4562ba3..6b88bf29c80 100644
--- a/apps/settings/l10n/ko.js
+++ b/apps/settings/l10n/ko.js
@@ -299,7 +299,7 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "마지막 작업이 %s에 실행되었습니다. 무언가 잘못된 것 같습니다.",
"Last job ran %s." : "마지막 작업이 %s에 실행되었습니다.",
"Background job didn’t run yet!" : "배경 작업이 아직 실행되지 않았습니다!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "최적 성능을 위해서 백그라운드 작업을 올바르게 설정하는 것을 추천합니다. 큰 인스턴스에서는 'Cron'을 사용하는 것을 추천합니다. 더 많은 정보를 보려면 문서를 참조하십시오.",
+ "Recommended" : "추천",
"The cron.php needs to be executed by the system user \"%s\"." : "시스템 사용자 \"%s\"(으)로 cron.php를 실행해야 합니다.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "이 항목을 실행하려면 PHP POSIX 확장이 필요합니다. 자세한 사항은 {linkstart}PHP 문서{linkend}를 참조하십시오.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "관리자로 공유 행동을 미세 조정할 수 있습니다. 더 많은 정보를 보려면 문서를 참조하십시오.",
@@ -352,6 +352,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다",
"mail" : "메일",
"Test email settings" : "이메일 설정 시험",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "최적 성능을 위해서 백그라운드 작업을 올바르게 설정하는 것을 추천합니다. 큰 인스턴스에서는 'Cron'을 사용하는 것을 추천합니다. 더 많은 정보를 보려면 문서를 참조하십시오.",
"Expire after " : "다음 날짜 후 만료",
"days" : "일",
"Allow users to share via link" : "사용자별 링크 공유 허용",
diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json
index 4dedbdf7724..841e1f94834 100644
--- a/apps/settings/l10n/ko.json
+++ b/apps/settings/l10n/ko.json
@@ -297,7 +297,7 @@
"Last job execution ran %s. Something seems wrong." : "마지막 작업이 %s에 실행되었습니다. 무언가 잘못된 것 같습니다.",
"Last job ran %s." : "마지막 작업이 %s에 실행되었습니다.",
"Background job didn’t run yet!" : "배경 작업이 아직 실행되지 않았습니다!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "최적 성능을 위해서 백그라운드 작업을 올바르게 설정하는 것을 추천합니다. 큰 인스턴스에서는 'Cron'을 사용하는 것을 추천합니다. 더 많은 정보를 보려면 문서를 참조하십시오.",
+ "Recommended" : "추천",
"The cron.php needs to be executed by the system user \"%s\"." : "시스템 사용자 \"%s\"(으)로 cron.php를 실행해야 합니다.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "이 항목을 실행하려면 PHP POSIX 확장이 필요합니다. 자세한 사항은 {linkstart}PHP 문서{linkend}를 참조하십시오.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "관리자로 공유 행동을 미세 조정할 수 있습니다. 더 많은 정보를 보려면 문서를 참조하십시오.",
@@ -350,6 +350,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다",
"mail" : "메일",
"Test email settings" : "이메일 설정 시험",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "최적 성능을 위해서 백그라운드 작업을 올바르게 설정하는 것을 추천합니다. 큰 인스턴스에서는 'Cron'을 사용하는 것을 추천합니다. 더 많은 정보를 보려면 문서를 참조하십시오.",
"Expire after " : "다음 날짜 후 만료",
"days" : "일",
"Allow users to share via link" : "사용자별 링크 공유 허용",
diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js
index cfa08ecac3f..133f1e524da 100644
--- a/apps/settings/l10n/lt_LT.js
+++ b/apps/settings/l10n/lt_LT.js
@@ -146,7 +146,6 @@ OC.L10N.register(
"This app is supported via your current Nextcloud subscription." : "Ši programėlė yra palaikoma per jūsų esamą Nextcloud prenumeratą.",
"Supported" : "Palaikoma",
"Update to {update}" : "Atnaujinti į {update}",
- "Update all" : "Atnaujinti visas",
"Results from other categories" : "Rezultatai iš kitų kategorijų",
"No apps found for your version" : "Jūsų versijai programėlių nėra",
"Disable all" : "Išjungti visas",
@@ -362,11 +361,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Keletas darbų nebevykdomi nuo %s. Apsvarstykite darbų perkėlimą į cron.",
"Last job ran %s." : "Paskutinė užduotis buvo vykdyta %s.",
"Background job didn’t run yet!" : "Foninės užduotys kol kas nebuvo vykdomos!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Norint užtikrinti optimalų našumą, svarbu teisingai sukonfigūruoti fonines užduotis. Didesniems egzemplioriams rekomenduojama naudoti „Cron“ nustatymą. Išsamesnei informacijai žiūrėkite dokumentaciją.",
"Pick background job setting" : "Parinkite foninių darbų nustatymus",
- "Execute one task with each page loaded." : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php yra registruota webcron paslaugoje, kad kas 5 minutes iškviestų cron.php per HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Naudokite sistemos cron paslaugą, kad kas 5 minutes iškviestumėte cron.php failą.",
+ "Recommended" : "Rekomenduojama",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php turi įvykdyti sistemos naudotojas „%s“.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Norint tai paleisti, jums reikia PHP POSIX plėtinio. Išsamesnei informacijai, žiūrėkite {linkstart}PHP dokumentaciją{linkend}.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Būdami administratoriumi, galite reguliuoti bendrinimo elgseną. Išsamesnei informacijai, žiūrėkite dokumentaciją.",
@@ -414,6 +410,7 @@ OC.L10N.register(
"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ą.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Programėlių diegimas ir naujinimas per programėlių parduotuvę arba per „Federated Cloud Sharing“",
"You need to set your user email before being able to send test emails." : "Prieš galėdami siųsti bandomuosius el. laiškus, turite nusistatyti savo naudotojo el. paštą.",
+ "Update all" : "Atnaujinti visas",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Panaikinus šį prieigos raktą, jums gali būti neleista ištrinti šio įrenginio duomenų, jeigu jis dar nepradėjo duomenų ištrynimo.",
"Nextcloud iOS app" : "Nextcloud iOS programėlė",
"Nextcloud Android app" : "Nextcloud Android programėlė",
@@ -428,6 +425,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Klaida: ši programėlė negali būti įjungta, nes ji neigiamai veikia serverio stabilumą",
"mail" : "el. paštas",
"Test email settings" : "Išbandyti el. pašto nustatymus",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Norint užtikrinti optimalų našumą, svarbu teisingai sukonfigūruoti fonines užduotis. Didesniems egzemplioriams rekomenduojama naudoti „Cron“ nustatymą. Išsamesnei informacijai žiūrėkite dokumentaciją.",
+ "Execute one task with each page loaded." : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php yra registruota webcron paslaugoje, kad kas 5 minutes iškviestų cron.php per HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Naudokite sistemos cron paslaugą, kad kas 5 minutes iškviestumėte cron.php failą.",
"Expire after " : "Nustoja galioti po ",
"days" : "dienos",
"Allow users to share via link" : "Leisti naudotojams bendrinti per nuorodą",
diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json
index 0b80d5918fa..3c7aa067727 100644
--- a/apps/settings/l10n/lt_LT.json
+++ b/apps/settings/l10n/lt_LT.json
@@ -144,7 +144,6 @@
"This app is supported via your current Nextcloud subscription." : "Ši programėlė yra palaikoma per jūsų esamą Nextcloud prenumeratą.",
"Supported" : "Palaikoma",
"Update to {update}" : "Atnaujinti į {update}",
- "Update all" : "Atnaujinti visas",
"Results from other categories" : "Rezultatai iš kitų kategorijų",
"No apps found for your version" : "Jūsų versijai programėlių nėra",
"Disable all" : "Išjungti visas",
@@ -360,11 +359,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Keletas darbų nebevykdomi nuo %s. Apsvarstykite darbų perkėlimą į cron.",
"Last job ran %s." : "Paskutinė užduotis buvo vykdyta %s.",
"Background job didn’t run yet!" : "Foninės užduotys kol kas nebuvo vykdomos!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Norint užtikrinti optimalų našumą, svarbu teisingai sukonfigūruoti fonines užduotis. Didesniems egzemplioriams rekomenduojama naudoti „Cron“ nustatymą. Išsamesnei informacijai žiūrėkite dokumentaciją.",
"Pick background job setting" : "Parinkite foninių darbų nustatymus",
- "Execute one task with each page loaded." : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php yra registruota webcron paslaugoje, kad kas 5 minutes iškviestų cron.php per HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Naudokite sistemos cron paslaugą, kad kas 5 minutes iškviestumėte cron.php failą.",
+ "Recommended" : "Rekomenduojama",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php turi įvykdyti sistemos naudotojas „%s“.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Norint tai paleisti, jums reikia PHP POSIX plėtinio. Išsamesnei informacijai, žiūrėkite {linkstart}PHP dokumentaciją{linkend}.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Būdami administratoriumi, galite reguliuoti bendrinimo elgseną. Išsamesnei informacijai, žiūrėkite dokumentaciją.",
@@ -412,6 +408,7 @@
"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ą.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Programėlių diegimas ir naujinimas per programėlių parduotuvę arba per „Federated Cloud Sharing“",
"You need to set your user email before being able to send test emails." : "Prieš galėdami siųsti bandomuosius el. laiškus, turite nusistatyti savo naudotojo el. paštą.",
+ "Update all" : "Atnaujinti visas",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Panaikinus šį prieigos raktą, jums gali būti neleista ištrinti šio įrenginio duomenų, jeigu jis dar nepradėjo duomenų ištrynimo.",
"Nextcloud iOS app" : "Nextcloud iOS programėlė",
"Nextcloud Android app" : "Nextcloud Android programėlė",
@@ -426,6 +423,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Klaida: ši programėlė negali būti įjungta, nes ji neigiamai veikia serverio stabilumą",
"mail" : "el. paštas",
"Test email settings" : "Išbandyti el. pašto nustatymus",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Norint užtikrinti optimalų našumą, svarbu teisingai sukonfigūruoti fonines užduotis. Didesniems egzemplioriams rekomenduojama naudoti „Cron“ nustatymą. Išsamesnei informacijai žiūrėkite dokumentaciją.",
+ "Execute one task with each page loaded." : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php yra registruota webcron paslaugoje, kad kas 5 minutes iškviestų cron.php per HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Naudokite sistemos cron paslaugą, kad kas 5 minutes iškviestumėte cron.php failą.",
"Expire after " : "Nustoja galioti po ",
"days" : "dienos",
"Allow users to share via link" : "Leisti naudotojams bendrinti per nuorodą",
diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js
index ba7732956b6..cad3ac80ccf 100644
--- a/apps/settings/l10n/lv.js
+++ b/apps/settings/l10n/lv.js
@@ -149,6 +149,7 @@ OC.L10N.register(
"No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts šifrēšanas moduļis, lūdzu, aktivizējiet šifrēšanas moduli lietotņu izvēlnē.",
"Select default encryption module:" : "Atlasiet noklusēto šifrēšanas moduli:",
"Start migration" : "Sākt migrāciju",
+ "Recommended" : "Rekomendēts",
"Allow apps to use the Share API" : "Ļaut programmām izmantot koplietošanas API",
"Enforce expiration date" : "Uzspiest beigu termiņu",
"Allow public uploads" : "Atļaut publisko augšupielādi",
diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json
index ee16dfe576a..4fe159f3ee4 100644
--- a/apps/settings/l10n/lv.json
+++ b/apps/settings/l10n/lv.json
@@ -147,6 +147,7 @@
"No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts šifrēšanas moduļis, lūdzu, aktivizējiet šifrēšanas moduli lietotņu izvēlnē.",
"Select default encryption module:" : "Atlasiet noklusēto šifrēšanas moduli:",
"Start migration" : "Sākt migrāciju",
+ "Recommended" : "Rekomendēts",
"Allow apps to use the Share API" : "Ļaut programmām izmantot koplietošanas API",
"Enforce expiration date" : "Uzspiest beigu termiņu",
"Allow public uploads" : "Atļaut publisko augšupielādi",
diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js
index 896540edee3..41acd904ac6 100644
--- a/apps/settings/l10n/mk.js
+++ b/apps/settings/l10n/mk.js
@@ -164,7 +164,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Истакнати апликации се развиени од и во рамките на заедницата. Тие нудат централизирана функционалност и се спремни за користење.",
"Featured" : "Истакнати",
"Update to {update}" : "Надгради на {update}",
- "Update all" : "Ажурирај ги сите",
"Results from other categories" : "Резултати од други категории",
"No apps found for your version" : "За вашата верзија не се пронајдени апликации",
"Disable all" : "Оневозможи ги сите",
@@ -405,11 +404,7 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Некој позадински работи не се извршени од %s. Размислете за промена во системски Cron сервис.",
"Last job ran %s." : "Последно извршување на задачите: %s.",
"Background job didn’t run yet!" : "Сеуште нема извршено ниедна задача!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимални перформанси важно е правилно да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.",
"Pick background job setting" : "Избери го начинот на извршување на задачите во позадина",
- "Execute one task with each page loaded." : "Изврши по една задача со секоја вчитана страница",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php е регистриран на webcron сервисот за да го повикува cron.php секој 5 минути преку HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Го користи системскиот Cron сервис и го повикува cron.php секој 5 минути.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "За да го извршите ова, треба PHP POSIX додаток. Погледни во {linkstart}PHP документацијата{linkend} за повеќе детали.",
"You need to enable the File sharing App." : "Треба да ја овозможите апликацијата Споделување на датотеки.",
@@ -466,6 +461,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." : "Доколку користите друга апликација за поврзување на Nextcloud, осигурајте се дека имате креирано лозинка за секоја апликација пред да овозможите втор фактор.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "инсталирање и ажурирање на апликации преку продавницата за апликации или Федерално споделување на облак",
"You need to set your user email before being able to send test emails." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки.",
+ "Update all" : "Ажурирај ги сите",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Одземањето на овој токен може да спречи бришење на вашиот уред ако сè уште не е избришано.",
"Nextcloud iOS app" : "iOS Апликација",
"Nextcloud Android app" : "Android app",
@@ -480,6 +476,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Грешка: Оваа апликација неможе да се овозможи бидејќи ќе го направи серверот нестабилен",
"mail" : "Електронска пошта",
"Test email settings" : "Провери ги нагодувањата за електронска пошта",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимални перформанси важно е правилно да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.",
+ "Execute one task with each page loaded." : "Изврши по една задача со секоја вчитана страница",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php е регистриран на webcron сервисот за да го повикува cron.php секој 5 минути преку HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Го користи системскиот Cron сервис и го повикува cron.php секој 5 минути.",
"Expire after " : "Истекува по",
"days" : "денови",
"Allow users to share via link" : "Допушти корисниците да споделуваат со линкови",
diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json
index ef2ee7084ae..4ef14d91d87 100644
--- a/apps/settings/l10n/mk.json
+++ b/apps/settings/l10n/mk.json
@@ -162,7 +162,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Истакнати апликации се развиени од и во рамките на заедницата. Тие нудат централизирана функционалност и се спремни за користење.",
"Featured" : "Истакнати",
"Update to {update}" : "Надгради на {update}",
- "Update all" : "Ажурирај ги сите",
"Results from other categories" : "Резултати од други категории",
"No apps found for your version" : "За вашата верзија не се пронајдени апликации",
"Disable all" : "Оневозможи ги сите",
@@ -403,11 +402,7 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Некој позадински работи не се извршени од %s. Размислете за промена во системски Cron сервис.",
"Last job ran %s." : "Последно извршување на задачите: %s.",
"Background job didn’t run yet!" : "Сеуште нема извршено ниедна задача!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимални перформанси важно е правилно да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.",
"Pick background job setting" : "Избери го начинот на извршување на задачите во позадина",
- "Execute one task with each page loaded." : "Изврши по една задача со секоја вчитана страница",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php е регистриран на webcron сервисот за да го повикува cron.php секој 5 минути преку HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Го користи системскиот Cron сервис и го повикува cron.php секој 5 минути.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "За да го извршите ова, треба PHP POSIX додаток. Погледни во {linkstart}PHP документацијата{linkend} за повеќе детали.",
"You need to enable the File sharing App." : "Треба да ја овозможите апликацијата Споделување на датотеки.",
@@ -464,6 +459,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." : "Доколку користите друга апликација за поврзување на Nextcloud, осигурајте се дека имате креирано лозинка за секоја апликација пред да овозможите втор фактор.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "инсталирање и ажурирање на апликации преку продавницата за апликации или Федерално споделување на облак",
"You need to set your user email before being able to send test emails." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки.",
+ "Update all" : "Ажурирај ги сите",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Одземањето на овој токен може да спречи бришење на вашиот уред ако сè уште не е избришано.",
"Nextcloud iOS app" : "iOS Апликација",
"Nextcloud Android app" : "Android app",
@@ -478,6 +474,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Грешка: Оваа апликација неможе да се овозможи бидејќи ќе го направи серверот нестабилен",
"mail" : "Електронска пошта",
"Test email settings" : "Провери ги нагодувањата за електронска пошта",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимални перформанси важно е правилно да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.",
+ "Execute one task with each page loaded." : "Изврши по една задача со секоја вчитана страница",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php е регистриран на webcron сервисот за да го повикува cron.php секој 5 минути преку HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Го користи системскиот Cron сервис и го повикува cron.php секој 5 минути.",
"Expire after " : "Истекува по",
"days" : "денови",
"Allow users to share via link" : "Допушти корисниците да споделуваат со линкови",
diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js
index ab84ea1e86b..c08ba1aee6d 100644
--- a/apps/settings/l10n/nb.js
+++ b/apps/settings/l10n/nb.js
@@ -147,7 +147,6 @@ OC.L10N.register(
"Supported" : "Støttet",
"Featured" : "Anbefalt",
"Update to {update}" : "Oppdater til {update}",
- "Update all" : "Oppdater alle",
"Results from other categories" : "Resultater fra andre kategorier",
"No apps found for your version" : "Ingen apper funnet for din versjon",
"Disable all" : "Deaktiver alle",
@@ -316,8 +315,8 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "Siste jobbkjøring kjørte %s. Noe ser ut til å være galt.",
"Last job ran %s." : "Siste jobb kjørte %s.",
"Background job didn’t run yet!" : "Bakgrunnsjobben har ikke kjørt enda!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ytelse er det viktig å sette opp bakgrunnsjobber rett. For kjøring på større installasjoner er 'Cron' anbefalt innstilling. Se dokumentasjonen for mer informasjon.",
"Pick background job setting" : "Velg innstilling for bakgrunnsjobb",
+ "Recommended" : "Anbefalt",
"The cron.php needs to be executed by the system user \"%s\"." : "Filen cron.php må kjøres systemet som følgende bruker \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "For å kjøre denne trenger du PHP POSIX utvidelse. Se {linkstart}PHP-dokumentasjonen{linkend} for flere detaljer.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Som administrator kan du fininnstille delingsoppførselen. Se dokumentasjonen for mer informasjon.",
@@ -363,6 +362,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "Bruk en annen faktor i tillegg til passordet ditt for å øke sikkerheten for kontoen din.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installering og oppdatering av apper via app-butikken eller ved deling i sammenknyttet sky",
"You need to set your user email before being able to send test emails." : "Du må sette e-postadressen for brukeren din før du kan teste sending av e-post.",
+ "Update all" : "Oppdater alle",
"Nextcloud iOS app" : "Nextcloud iOS-app",
"Nextcloud Android app" : "Nextcloud Android-app",
"Nextcloud Talk for iOS" : "Nextcloud Talk for iOS",
@@ -376,6 +376,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Feil: Denne appen kan ikke aktiveres fordi det gjør serveren ustabil",
"mail" : "e-post",
"Test email settings" : "Test innstillinger for e-post",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ytelse er det viktig å sette opp bakgrunnsjobber rett. For kjøring på større installasjoner er 'Cron' anbefalt innstilling. Se dokumentasjonen for mer informasjon.",
"Expire after " : "Utløper etter",
"days" : "dager",
"Allow users to share via link" : "Tillat brukere å dele via lenke",
diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json
index 7cb601fa31a..8ba559e1bcf 100644
--- a/apps/settings/l10n/nb.json
+++ b/apps/settings/l10n/nb.json
@@ -145,7 +145,6 @@
"Supported" : "Støttet",
"Featured" : "Anbefalt",
"Update to {update}" : "Oppdater til {update}",
- "Update all" : "Oppdater alle",
"Results from other categories" : "Resultater fra andre kategorier",
"No apps found for your version" : "Ingen apper funnet for din versjon",
"Disable all" : "Deaktiver alle",
@@ -314,8 +313,8 @@
"Last job execution ran %s. Something seems wrong." : "Siste jobbkjøring kjørte %s. Noe ser ut til å være galt.",
"Last job ran %s." : "Siste jobb kjørte %s.",
"Background job didn’t run yet!" : "Bakgrunnsjobben har ikke kjørt enda!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ytelse er det viktig å sette opp bakgrunnsjobber rett. For kjøring på større installasjoner er 'Cron' anbefalt innstilling. Se dokumentasjonen for mer informasjon.",
"Pick background job setting" : "Velg innstilling for bakgrunnsjobb",
+ "Recommended" : "Anbefalt",
"The cron.php needs to be executed by the system user \"%s\"." : "Filen cron.php må kjøres systemet som følgende bruker \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "For å kjøre denne trenger du PHP POSIX utvidelse. Se {linkstart}PHP-dokumentasjonen{linkend} for flere detaljer.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Som administrator kan du fininnstille delingsoppførselen. Se dokumentasjonen for mer informasjon.",
@@ -361,6 +360,7 @@
"Use a second factor besides your password to increase security for your account." : "Bruk en annen faktor i tillegg til passordet ditt for å øke sikkerheten for kontoen din.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installering og oppdatering av apper via app-butikken eller ved deling i sammenknyttet sky",
"You need to set your user email before being able to send test emails." : "Du må sette e-postadressen for brukeren din før du kan teste sending av e-post.",
+ "Update all" : "Oppdater alle",
"Nextcloud iOS app" : "Nextcloud iOS-app",
"Nextcloud Android app" : "Nextcloud Android-app",
"Nextcloud Talk for iOS" : "Nextcloud Talk for iOS",
@@ -374,6 +374,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Feil: Denne appen kan ikke aktiveres fordi det gjør serveren ustabil",
"mail" : "e-post",
"Test email settings" : "Test innstillinger for e-post",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ytelse er det viktig å sette opp bakgrunnsjobber rett. For kjøring på større installasjoner er 'Cron' anbefalt innstilling. Se dokumentasjonen for mer informasjon.",
"Expire after " : "Utløper etter",
"days" : "dager",
"Allow users to share via link" : "Tillat brukere å dele via lenke",
diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js
index 262ce173a8c..ec94d4aefaf 100644
--- a/apps/settings/l10n/nl.js
+++ b/apps/settings/l10n/nl.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aanbevolen apps worden ontwikkeld door en binnen de community. Ze bieden centrale functionaliteit en zijn klaar voor productie.",
"Featured" : "Aanbevolen",
"Update to {update}" : "Update naar {update}",
- "Update all" : "Update alles",
"Results from other categories" : "Resultaten van andere categorieën",
"No apps found for your version" : "Geen apps gevonden voor jouw versie",
"Disable all" : "Alles uitschakelen",
@@ -414,11 +413,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Sommige taken zijn sinds %s niet meer uitgevoerd. Overweeg om over te schakelen naar systemcron.",
"Last job ran %s." : "Laatste taak %s uitgevoerd.",
"Background job didn’t run yet!" : "Achtergrondtaak nog niet uitgevoerd!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Voor optimale prestaties is het belangrijk om de achtergrondtaken goed te configureren. Voor grotere installaties is \"Cron' de aanbevolen instelling. Bekijk de documentatie voor meer informatie.",
"Pick background job setting" : "Kies de achtergrondtaak instelling",
- "Execute one task with each page loaded." : "Bij laden van elke pagina één taak uitvoeren.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 5 minuten cron.php over http aan te roepen.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Gebruik de systeemcron service om cron.php elke 5 minuten aan te roepen.",
+ "Recommended" : "Aanbevolen",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "PHP POSIX extensie is vereist om dit te draaien. Bekijk {linkstart}PHP documentatie{linkend} voor meer informatie.",
"You need to enable the File sharing App." : "Je dient de File sharing App in te schakelen",
@@ -483,6 +479,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.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installeren en bijwerken van applicaties via de app store of gefedereerd delen",
"You need to set your user email before being able to send test emails." : "Je moet je e-mailadres invoeren voordat je testberichten kunt versturen.",
+ "Update all" : "Update alles",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Het verwijderen van deze token voorkomt mogelijk dat je apparaat gewist wordt, als dit proces nog niet gestart is.",
"Nextcloud iOS app" : "Nextcloud iOS app",
"Nextcloud Android app" : "Nextcloud Android app",
@@ -497,6 +494,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Fout: Deze app kan niet ingeschakeld worden, omdat die de server onstabiel maakt",
"mail" : "e-mail",
"Test email settings" : "Test e-mailinstellingen",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Voor optimale prestaties is het belangrijk om de achtergrondtaken goed te configureren. Voor grotere installaties is \"Cron' de aanbevolen instelling. Bekijk de documentatie voor meer informatie.",
+ "Execute one task with each page loaded." : "Bij laden van elke pagina één taak uitvoeren.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 5 minuten cron.php over http aan te roepen.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Gebruik de systeemcron service om cron.php elke 5 minuten aan te roepen.",
"Expire after " : "Vervalt na",
"days" : "dagen",
"Allow users to share via link" : "Sta gebruikers toe om te delen via een link",
diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json
index 6d931e08da6..43d3f067a3a 100644
--- a/apps/settings/l10n/nl.json
+++ b/apps/settings/l10n/nl.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aanbevolen apps worden ontwikkeld door en binnen de community. Ze bieden centrale functionaliteit en zijn klaar voor productie.",
"Featured" : "Aanbevolen",
"Update to {update}" : "Update naar {update}",
- "Update all" : "Update alles",
"Results from other categories" : "Resultaten van andere categorieën",
"No apps found for your version" : "Geen apps gevonden voor jouw versie",
"Disable all" : "Alles uitschakelen",
@@ -412,11 +411,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Sommige taken zijn sinds %s niet meer uitgevoerd. Overweeg om over te schakelen naar systemcron.",
"Last job ran %s." : "Laatste taak %s uitgevoerd.",
"Background job didn’t run yet!" : "Achtergrondtaak nog niet uitgevoerd!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Voor optimale prestaties is het belangrijk om de achtergrondtaken goed te configureren. Voor grotere installaties is \"Cron' de aanbevolen instelling. Bekijk de documentatie voor meer informatie.",
"Pick background job setting" : "Kies de achtergrondtaak instelling",
- "Execute one task with each page loaded." : "Bij laden van elke pagina één taak uitvoeren.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 5 minuten cron.php over http aan te roepen.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Gebruik de systeemcron service om cron.php elke 5 minuten aan te roepen.",
+ "Recommended" : "Aanbevolen",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "PHP POSIX extensie is vereist om dit te draaien. Bekijk {linkstart}PHP documentatie{linkend} voor meer informatie.",
"You need to enable the File sharing App." : "Je dient de File sharing App in te schakelen",
@@ -481,6 +477,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.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installeren en bijwerken van applicaties via de app store of gefedereerd delen",
"You need to set your user email before being able to send test emails." : "Je moet je e-mailadres invoeren voordat je testberichten kunt versturen.",
+ "Update all" : "Update alles",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Het verwijderen van deze token voorkomt mogelijk dat je apparaat gewist wordt, als dit proces nog niet gestart is.",
"Nextcloud iOS app" : "Nextcloud iOS app",
"Nextcloud Android app" : "Nextcloud Android app",
@@ -495,6 +492,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Fout: Deze app kan niet ingeschakeld worden, omdat die de server onstabiel maakt",
"mail" : "e-mail",
"Test email settings" : "Test e-mailinstellingen",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Voor optimale prestaties is het belangrijk om de achtergrondtaken goed te configureren. Voor grotere installaties is \"Cron' de aanbevolen instelling. Bekijk de documentatie voor meer informatie.",
+ "Execute one task with each page loaded." : "Bij laden van elke pagina één taak uitvoeren.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 5 minuten cron.php over http aan te roepen.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Gebruik de systeemcron service om cron.php elke 5 minuten aan te roepen.",
"Expire after " : "Vervalt na",
"days" : "dagen",
"Allow users to share via link" : "Sta gebruikers toe om te delen via een link",
diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js
index b95e258da0a..b1a126127c4 100644
--- a/apps/settings/l10n/oc.js
+++ b/apps/settings/l10n/oc.js
@@ -95,7 +95,6 @@ OC.L10N.register(
"Admin documentation" : "Documentacion d’admin",
"Developer documentation" : "Documentacion desvolopaire",
"Update to {update}" : "Actualizar en {update}",
- "Update all" : "Tot metre a jorn",
"Disable all" : "Desactivar tot",
"Enable all" : "Activar tot",
"_%n app has an update available_::_%n apps have an update available_" : ["%n aplicacion an una mesa a jorn de disponibla","%n aplicacions an una mesa a jorn de disponibla"],
@@ -261,6 +260,7 @@ OC.L10N.register(
"Current password" : "Senhal actual",
"New password" : "Senhal novèl",
"Change password" : "Cambiar de senhal",
+ "Update all" : "Tot metre a jorn",
"Nextcloud iOS app" : "Aplicacion Nextcloud iOS",
"Nextcloud Talk for iOS" : "Nextcloud Talk per iOS",
"Nextcloud Talk for Android" : "Nextcloud Talk per Android",
diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json
index 69c108aef8b..ef3b8bb2b38 100644
--- a/apps/settings/l10n/oc.json
+++ b/apps/settings/l10n/oc.json
@@ -93,7 +93,6 @@
"Admin documentation" : "Documentacion d’admin",
"Developer documentation" : "Documentacion desvolopaire",
"Update to {update}" : "Actualizar en {update}",
- "Update all" : "Tot metre a jorn",
"Disable all" : "Desactivar tot",
"Enable all" : "Activar tot",
"_%n app has an update available_::_%n apps have an update available_" : ["%n aplicacion an una mesa a jorn de disponibla","%n aplicacions an una mesa a jorn de disponibla"],
@@ -259,6 +258,7 @@
"Current password" : "Senhal actual",
"New password" : "Senhal novèl",
"Change password" : "Cambiar de senhal",
+ "Update all" : "Tot metre a jorn",
"Nextcloud iOS app" : "Aplicacion Nextcloud iOS",
"Nextcloud Talk for iOS" : "Nextcloud Talk per iOS",
"Nextcloud Talk for Android" : "Nextcloud Talk per Android",
diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js
index 5fb4b6cdf45..4bca92b6a44 100644
--- a/apps/settings/l10n/pl.js
+++ b/apps/settings/l10n/pl.js
@@ -178,13 +178,13 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Polecane aplikacje są tworzone przez społeczność. Oferują główną funkcjonalność i są gotowe do użycia w produkcji.",
"Featured" : "Polecane",
"Update to {update}" : "Zaktualizuj do {update}",
- "Update all" : "Zaktualizuj wszystko",
"All apps are up-to-date." : "Wszystkie aplikacje są aktualne.",
"Results from other categories" : "Wyniki z innych kategorii",
"No apps found for your version" : "Nie znaleziono aplikacji dla Twojej wersji",
"Disable all" : "Wyłącz wszystkie",
"Enable all" : "Włącz wszystkie",
"_%n app has an update available_::_%n apps have an update available_" : ["%n aplikacja ma dostępną aktualizację","%n aplikacje mają dostępną aktualizację","%n aplikacji mają dostępną aktualizację","%n aplikacji mają dostępną aktualizację"],
+ "_Update_::_Update all_" : ["Zaktualizuj","Zaktualizuj","Zaktualizuj","Zaktualizuj wszystko"],
"Marked for remote wipe" : "Oznaczone do zdalnego czyszczenia",
"Device settings" : "Ustawienia urządzenia",
"Allow filesystem access" : "Zezwalaj na dostęp do systemu plików",
@@ -434,11 +434,11 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Niektóre zadania nie były wykonywane od %s. Rozważ przejście na systemowy cron.",
"Last job ran %s." : "Ostatnie zadanie wykonano %s.",
"Background job didn’t run yet!" : "Zadanie w tle nie zostało wykonane ani razu!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Dla optymalnej wydajności należy poprawnie skonfigurować zadania w tle. Dla większych instancji zalecane jest użycie usługi 'Cron'. Więcej informacji można znaleźć w dokumentacji.",
"Pick background job setting" : "Wybierz ustawienie zadania w tle",
- "Execute one task with each page loaded." : "Wykonuj jedno zadanie wraz z każdą wczytaną stroną.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Użyj cron.php, który jest zarejestrowany w usłudze webcron, aby wywoływać cron.php co 5 minut przez HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Użyj usługi systemowej cron, aby wywoływać plik cron.php co 5 minut.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Wykonaj jedno zadanie z każdą załadowaną stroną. Przypadek użycia: Wystąpienie pojedynczego użytkownika.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php jest zarejestrowany w usłudze webcron i wywołuje cron.php co 5 minut przez HTTP. Przypadek użycia: Bardzo mała instancja (1–5 użytkowników w zależności od zastosowania).",
+ "Recommended" : "Polecane",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Użyj usługi systemowej crona, aby co 5 minut wywoływać plik cron.php. Zalecane dla wszystkich instancji.",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi zostać wykonywany przez użytkownika systemu \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Dla uruchomienia tego potrzebujesz rozszerzenia PHP POSIX. Zobacz {linkstart}dokumentację PHP{linkend}, aby uzyskać więcej szczegółów.",
"You need to enable the File sharing App." : "Musisz włączyć aplikację do udostępniania plików.",
@@ -508,6 +508,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." : "Jeśli używasz aplikacji innych firm do łączenia się z Nextcloud, upewnij się, że utworzyłeś i skonfigurowałeś hasło aplikacji dla każdej przed włączeniem uwierzytelniania dwuskładnikowego.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalowanie i aktualizowanie aplikacji za pośrednictwem sklepu z aplikacjami lub Udostępnionej Chmury Federacyjnej",
"You need to set your user email before being able to send test emails." : "Musisz ustawić e-mail użytkownika, aby móc wysyłać e-maile testowe.",
+ "Update all" : "Zaktualizuj wszystko",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Unieważnienie tego tokena uniemożliwi czyszczenie urządzenia, jeśli jeszcze nie zostało rozpoczęte.",
"Nextcloud iOS app" : "Aplikacja Nextcloud iOS",
"Nextcloud Android app" : "Aplikacja Nextcloud Android",
@@ -522,6 +523,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Błąd: Ta aplikacja nie zostanie włączona ze względu na możliwość niestabilnej pracy serwera.",
"mail" : "poczta",
"Test email settings" : "Przetestuj ustawienia poczty e-mail",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Dla optymalnej wydajności należy poprawnie skonfigurować zadania w tle. Dla większych instancji zalecane jest użycie usługi 'Cron'. Więcej informacji można znaleźć w dokumentacji.",
+ "Execute one task with each page loaded." : "Wykonuj jedno zadanie wraz z każdą wczytaną stroną.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Użyj cron.php, który jest zarejestrowany w usłudze webcron, aby wywoływać cron.php co 5 minut przez HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Użyj usługi systemowej cron, aby wywoływać plik cron.php co 5 minut.",
"Expire after " : "Wygaś po ",
"days" : "dniach",
"Allow users to share via link" : "Zezwalaj użytkownikom na udostępnianie za pośrednictwem linku",
diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json
index bb57bed8262..7420703ebbe 100644
--- a/apps/settings/l10n/pl.json
+++ b/apps/settings/l10n/pl.json
@@ -176,13 +176,13 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Polecane aplikacje są tworzone przez społeczność. Oferują główną funkcjonalność i są gotowe do użycia w produkcji.",
"Featured" : "Polecane",
"Update to {update}" : "Zaktualizuj do {update}",
- "Update all" : "Zaktualizuj wszystko",
"All apps are up-to-date." : "Wszystkie aplikacje są aktualne.",
"Results from other categories" : "Wyniki z innych kategorii",
"No apps found for your version" : "Nie znaleziono aplikacji dla Twojej wersji",
"Disable all" : "Wyłącz wszystkie",
"Enable all" : "Włącz wszystkie",
"_%n app has an update available_::_%n apps have an update available_" : ["%n aplikacja ma dostępną aktualizację","%n aplikacje mają dostępną aktualizację","%n aplikacji mają dostępną aktualizację","%n aplikacji mają dostępną aktualizację"],
+ "_Update_::_Update all_" : ["Zaktualizuj","Zaktualizuj","Zaktualizuj","Zaktualizuj wszystko"],
"Marked for remote wipe" : "Oznaczone do zdalnego czyszczenia",
"Device settings" : "Ustawienia urządzenia",
"Allow filesystem access" : "Zezwalaj na dostęp do systemu plików",
@@ -432,11 +432,11 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Niektóre zadania nie były wykonywane od %s. Rozważ przejście na systemowy cron.",
"Last job ran %s." : "Ostatnie zadanie wykonano %s.",
"Background job didn’t run yet!" : "Zadanie w tle nie zostało wykonane ani razu!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Dla optymalnej wydajności należy poprawnie skonfigurować zadania w tle. Dla większych instancji zalecane jest użycie usługi 'Cron'. Więcej informacji można znaleźć w dokumentacji.",
"Pick background job setting" : "Wybierz ustawienie zadania w tle",
- "Execute one task with each page loaded." : "Wykonuj jedno zadanie wraz z każdą wczytaną stroną.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Użyj cron.php, który jest zarejestrowany w usłudze webcron, aby wywoływać cron.php co 5 minut przez HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Użyj usługi systemowej cron, aby wywoływać plik cron.php co 5 minut.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Wykonaj jedno zadanie z każdą załadowaną stroną. Przypadek użycia: Wystąpienie pojedynczego użytkownika.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php jest zarejestrowany w usłudze webcron i wywołuje cron.php co 5 minut przez HTTP. Przypadek użycia: Bardzo mała instancja (1–5 użytkowników w zależności od zastosowania).",
+ "Recommended" : "Polecane",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Użyj usługi systemowej crona, aby co 5 minut wywoływać plik cron.php. Zalecane dla wszystkich instancji.",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi zostać wykonywany przez użytkownika systemu \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Dla uruchomienia tego potrzebujesz rozszerzenia PHP POSIX. Zobacz {linkstart}dokumentację PHP{linkend}, aby uzyskać więcej szczegółów.",
"You need to enable the File sharing App." : "Musisz włączyć aplikację do udostępniania plików.",
@@ -506,6 +506,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." : "Jeśli używasz aplikacji innych firm do łączenia się z Nextcloud, upewnij się, że utworzyłeś i skonfigurowałeś hasło aplikacji dla każdej przed włączeniem uwierzytelniania dwuskładnikowego.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalowanie i aktualizowanie aplikacji za pośrednictwem sklepu z aplikacjami lub Udostępnionej Chmury Federacyjnej",
"You need to set your user email before being able to send test emails." : "Musisz ustawić e-mail użytkownika, aby móc wysyłać e-maile testowe.",
+ "Update all" : "Zaktualizuj wszystko",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Unieważnienie tego tokena uniemożliwi czyszczenie urządzenia, jeśli jeszcze nie zostało rozpoczęte.",
"Nextcloud iOS app" : "Aplikacja Nextcloud iOS",
"Nextcloud Android app" : "Aplikacja Nextcloud Android",
@@ -520,6 +521,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Błąd: Ta aplikacja nie zostanie włączona ze względu na możliwość niestabilnej pracy serwera.",
"mail" : "poczta",
"Test email settings" : "Przetestuj ustawienia poczty e-mail",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Dla optymalnej wydajności należy poprawnie skonfigurować zadania w tle. Dla większych instancji zalecane jest użycie usługi 'Cron'. Więcej informacji można znaleźć w dokumentacji.",
+ "Execute one task with each page loaded." : "Wykonuj jedno zadanie wraz z każdą wczytaną stroną.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Użyj cron.php, który jest zarejestrowany w usłudze webcron, aby wywoływać cron.php co 5 minut przez HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Użyj usługi systemowej cron, aby wywoływać plik cron.php co 5 minut.",
"Expire after " : "Wygaś po ",
"days" : "dniach",
"Allow users to share via link" : "Zezwalaj użytkownikom na udostępnianie za pośrednictwem linku",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index 0ba63241d90..4c69c976756 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -178,7 +178,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Os aplicativos em destaque são desenvolvidos pela comunidade. Eles oferecem funcionalidade central e estão prontos para uso em produção.",
"Featured" : "Destaques",
"Update to {update}" : "Atualizar para {update}",
- "Update all" : "Atualizar todos",
"All apps are up-to-date." : "Todos os aplicativos estão atualizados.",
"Results from other categories" : "Resultados de outras categorias",
"No apps found for your version" : "Nenhum aplicativo encontrado para a sua versão",
@@ -434,11 +433,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Alguns trabalhos não são executados desde %s. Considere mudar para o cron do sistema.",
"Last job ran %s." : "Última tarefa rodou há %s.",
"Background job didn’t run yet!" : "O job em segundo plano ainda não rodou!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para um desempenho ideal, é importante configurar corretamente os trabalhos em segundo plano. Para instâncias maiores, 'Cron' é a configuração recomendada. Consulte a documentação para obter mais informações.",
"Pick background job setting" : "Configuração de trabalhos em segundo plano",
- "Execute one task with each page loaded." : "Execute uma tarefa com cada página carregada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "O cron.php está registrado num webcron para chamar cron.php a cada 5 minutos em HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Use o serviço cron do sistema para chamar o arquivo cron.php a cada 5 minutos.",
+ "Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa ser executado pelo usuário de sistema \"%s\"",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isso, você precisa da extensão PHP POSIX. Veja a {linkstart} documentação do PHP {linkend} para mais detalhes.",
"You need to enable the File sharing App." : "Você precisa habilitar o aplicativo de compartilhamento de arquivos.",
@@ -508,6 +504,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." : "Se usar aplicativos de terceiros para se conectar ao Nextcloud, certifique-se de criar e configurar uma senha para cada aplicativo antes de habilitar a autenticação em duas etapas.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via loja de aplicativos ou Nuvem Compartilhada Federada",
"You need to set your user email before being able to send test emails." : "Você precisa configurar seu e-mail de usuário antes de ser capaz de enviar e-mails de teste.",
+ "Update all" : "Atualizar todos",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "A revogação deste token pode impedir a limpeza do seu dispositivo, caso ainda não tenha sido iniciada.",
"Nextcloud iOS app" : "Aplicativo iOS Nextcloud",
"Nextcloud Android app" : "Aplicativo Android Nextcloud",
@@ -522,6 +519,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Erro: Este aplicativo não pode ser ativado porque torna o servidor instável",
"mail" : "e-mail",
"Test email settings" : "Testar configurações de e-mail",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para um desempenho ideal, é importante configurar corretamente os trabalhos em segundo plano. Para instâncias maiores, 'Cron' é a configuração recomendada. Consulte a documentação para obter mais informações.",
+ "Execute one task with each page loaded." : "Execute uma tarefa com cada página carregada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "O cron.php está registrado num webcron para chamar cron.php a cada 5 minutos em HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Use o serviço cron do sistema para chamar o arquivo cron.php a cada 5 minutos.",
"Expire after " : "Expirar depois de",
"days" : "dias",
"Allow users to share via link" : "Permitir que os usuários compartilhem por link",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index 1434269eff1..c17035f9abe 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -176,7 +176,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Os aplicativos em destaque são desenvolvidos pela comunidade. Eles oferecem funcionalidade central e estão prontos para uso em produção.",
"Featured" : "Destaques",
"Update to {update}" : "Atualizar para {update}",
- "Update all" : "Atualizar todos",
"All apps are up-to-date." : "Todos os aplicativos estão atualizados.",
"Results from other categories" : "Resultados de outras categorias",
"No apps found for your version" : "Nenhum aplicativo encontrado para a sua versão",
@@ -432,11 +431,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Alguns trabalhos não são executados desde %s. Considere mudar para o cron do sistema.",
"Last job ran %s." : "Última tarefa rodou há %s.",
"Background job didn’t run yet!" : "O job em segundo plano ainda não rodou!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para um desempenho ideal, é importante configurar corretamente os trabalhos em segundo plano. Para instâncias maiores, 'Cron' é a configuração recomendada. Consulte a documentação para obter mais informações.",
"Pick background job setting" : "Configuração de trabalhos em segundo plano",
- "Execute one task with each page loaded." : "Execute uma tarefa com cada página carregada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "O cron.php está registrado num webcron para chamar cron.php a cada 5 minutos em HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Use o serviço cron do sistema para chamar o arquivo cron.php a cada 5 minutos.",
+ "Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa ser executado pelo usuário de sistema \"%s\"",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isso, você precisa da extensão PHP POSIX. Veja a {linkstart} documentação do PHP {linkend} para mais detalhes.",
"You need to enable the File sharing App." : "Você precisa habilitar o aplicativo de compartilhamento de arquivos.",
@@ -506,6 +502,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." : "Se usar aplicativos de terceiros para se conectar ao Nextcloud, certifique-se de criar e configurar uma senha para cada aplicativo antes de habilitar a autenticação em duas etapas.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via loja de aplicativos ou Nuvem Compartilhada Federada",
"You need to set your user email before being able to send test emails." : "Você precisa configurar seu e-mail de usuário antes de ser capaz de enviar e-mails de teste.",
+ "Update all" : "Atualizar todos",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "A revogação deste token pode impedir a limpeza do seu dispositivo, caso ainda não tenha sido iniciada.",
"Nextcloud iOS app" : "Aplicativo iOS Nextcloud",
"Nextcloud Android app" : "Aplicativo Android Nextcloud",
@@ -520,6 +517,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Erro: Este aplicativo não pode ser ativado porque torna o servidor instável",
"mail" : "e-mail",
"Test email settings" : "Testar configurações de e-mail",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para um desempenho ideal, é importante configurar corretamente os trabalhos em segundo plano. Para instâncias maiores, 'Cron' é a configuração recomendada. Consulte a documentação para obter mais informações.",
+ "Execute one task with each page loaded." : "Execute uma tarefa com cada página carregada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "O cron.php está registrado num webcron para chamar cron.php a cada 5 minutos em HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Use o serviço cron do sistema para chamar o arquivo cron.php a cada 5 minutos.",
"Expire after " : "Expirar depois de",
"days" : "dias",
"Allow users to share via link" : "Permitir que os usuários compartilhem por link",
diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js
index 4c719a6d785..71d26292239 100644
--- a/apps/settings/l10n/pt_PT.js
+++ b/apps/settings/l10n/pt_PT.js
@@ -224,7 +224,7 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "Última execução da tarefa: %s. Houve algum problema. ",
"Last job ran %s." : "Última tarefa executada: %s.",
"Background job didn’t run yet!" : "Tarefa de segundo plano ainda não foi executada!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para desempenho óptimo é importante que configura as tarefas de segundo plano correctamente. Para maiores instâncias a definição recomendada é 'Cron'. Por favor veja a documentação para mais informações.",
+ "Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa de ser executado pelo utilizador do sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para esta execução precisa da extensão PHP POSIX. Veja {iniciodaligação}documentação PHP{fimdaligação} para mais mais detalhes.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode afinar o comportamento de partilha. Por favor veja a documentação para mais informação.",
@@ -269,6 +269,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Erro: Esta app não pode ser activada porque torna o servidor instável.",
"mail" : "Correio",
"Test email settings" : "Testar definições de e-mail",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para desempenho óptimo é importante que configura as tarefas de segundo plano correctamente. Para maiores instâncias a definição recomendada é 'Cron'. Por favor veja a documentação para mais informações.",
"Expire after " : "Expira após",
"days" : "dias",
"Allow users to share via link" : "Permitir que os utilizadores partilhem através de hiperligação",
diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json
index 2aaf2a34788..31efc03bc54 100644
--- a/apps/settings/l10n/pt_PT.json
+++ b/apps/settings/l10n/pt_PT.json
@@ -222,7 +222,7 @@
"Last job execution ran %s. Something seems wrong." : "Última execução da tarefa: %s. Houve algum problema. ",
"Last job ran %s." : "Última tarefa executada: %s.",
"Background job didn’t run yet!" : "Tarefa de segundo plano ainda não foi executada!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para desempenho óptimo é importante que configura as tarefas de segundo plano correctamente. Para maiores instâncias a definição recomendada é 'Cron'. Por favor veja a documentação para mais informações.",
+ "Recommended" : "Recomendado",
"The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa de ser executado pelo utilizador do sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para esta execução precisa da extensão PHP POSIX. Veja {iniciodaligação}documentação PHP{fimdaligação} para mais mais detalhes.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode afinar o comportamento de partilha. Por favor veja a documentação para mais informação.",
@@ -267,6 +267,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Erro: Esta app não pode ser activada porque torna o servidor instável.",
"mail" : "Correio",
"Test email settings" : "Testar definições de e-mail",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para desempenho óptimo é importante que configura as tarefas de segundo plano correctamente. Para maiores instâncias a definição recomendada é 'Cron'. Por favor veja a documentação para mais informações.",
"Expire after " : "Expira após",
"days" : "dias",
"Allow users to share via link" : "Permitir que os utilizadores partilhem através de hiperligação",
diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js
index 9f4adfbedb5..cf9bc81b6c1 100644
--- a/apps/settings/l10n/ro.js
+++ b/apps/settings/l10n/ro.js
@@ -202,6 +202,7 @@ OC.L10N.register(
"Enable encryption" : "Activează criptarea",
"Select default encryption module:" : "Selectează modulul implicit de criptare:",
"Start migration" : "Pornește migrarea",
+ "Recommended" : "Recomandat",
"Allow apps to use the Share API" : "Permite aplicațiilor să folosească API-ul de partajare",
"Enforce expiration date" : "Impune data de expirare",
"Allow public uploads" : "Permite încărcări publice",
diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json
index 4c9df03a6f5..a68a0030852 100644
--- a/apps/settings/l10n/ro.json
+++ b/apps/settings/l10n/ro.json
@@ -200,6 +200,7 @@
"Enable encryption" : "Activează criptarea",
"Select default encryption module:" : "Selectează modulul implicit de criptare:",
"Start migration" : "Pornește migrarea",
+ "Recommended" : "Recomandat",
"Allow apps to use the Share API" : "Permite aplicațiilor să folosească API-ul de partajare",
"Enforce expiration date" : "Impune data de expirare",
"Allow public uploads" : "Permite încărcări publice",
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index 4f0134c9f89..438c2d8fc85 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Рекомендованные приложения разработаны совместно с сообществом. Эти приложения обеспечивают основной функционал и готовы для использования в рабочих системах.",
"Featured" : "Рекомендуемые",
"Update to {update}" : "Обновить до {update}",
- "Update all" : "Обновить все",
"Results from other categories" : "Результаты из других категорий",
"No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено",
"Disable all" : "Отключить все",
@@ -415,11 +414,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Некоторые фоновые задачи не выполнялись с %s. Рассмотрите возможность использования службы cron для выполнения фоновых заданий.",
"Last job ran %s." : "Последнее задание выполнено %s.",
"Background job didn’t run yet!" : "Фоновые задания ещё не выполнялись!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Для оптимальной производительности важно правильно настроить выполнение задач в фоновом режиме. Для крупных развёртываний рекомендуется использовать параметр «Cron». Обратитесь к документации для получения дополнительной информации.",
"Pick background job setting" : "Выбрать параметр выполнения фоновых задач",
- "Execute one task with each page loaded." : "Выполнять одно задание с каждой загруженной страницей.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Использовать системный cron для вызова файла cron.php каждые 5 минут.",
+ "Recommended" : "Рекомендовано",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php должен исполняться из под пользователя \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Для запуска требуется расширение POSIX для PHP. Обратитесь к {linkstart}документации по PHP{linkend} для получения дополнительной информации.",
"You need to enable the File sharing App." : "Необходимо включить приложение публикации файлов.",
@@ -484,6 +480,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." : "Если вы используете сторонние приложения для подключения к Nextcloud, убедитесь что для них созданы и настроены пароли приложений, перед тем как активировать двухфакторную авторизацию.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ",
"You need to set your user email before being able to send test emails." : "Вы должны настроить ваш собственный адрес электронной почты прежде чем отправлять тестовые сообщения.",
+ "Update all" : "Обновить все",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Если удаление данных с устройства не было инициировано, отзыв токена может сделать это невозможным.",
"Nextcloud iOS app" : "Приложение Nextcloud для iOS",
"Nextcloud Android app" : "Приложение Nextcloud для Android",
@@ -498,6 +495,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Ошибка: это приложение не может быть включено, так как оно сделает сервер нестабильным",
"mail" : "почта",
"Test email settings" : "Проверка настроек эл.почты",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Для оптимальной производительности важно правильно настроить выполнение задач в фоновом режиме. Для крупных развёртываний рекомендуется использовать параметр «Cron». Обратитесь к документации для получения дополнительной информации.",
+ "Execute one task with each page loaded." : "Выполнять одно задание с каждой загруженной страницей.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Использовать системный cron для вызова файла cron.php каждые 5 минут.",
"Expire after " : "Истечение через:",
"days" : "дней",
"Allow users to share via link" : "Разрешить пользователям публикации через ссылки",
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index 43711f0dcbd..b858e338233 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Рекомендованные приложения разработаны совместно с сообществом. Эти приложения обеспечивают основной функционал и готовы для использования в рабочих системах.",
"Featured" : "Рекомендуемые",
"Update to {update}" : "Обновить до {update}",
- "Update all" : "Обновить все",
"Results from other categories" : "Результаты из других категорий",
"No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено",
"Disable all" : "Отключить все",
@@ -413,11 +412,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Некоторые фоновые задачи не выполнялись с %s. Рассмотрите возможность использования службы cron для выполнения фоновых заданий.",
"Last job ran %s." : "Последнее задание выполнено %s.",
"Background job didn’t run yet!" : "Фоновые задания ещё не выполнялись!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Для оптимальной производительности важно правильно настроить выполнение задач в фоновом режиме. Для крупных развёртываний рекомендуется использовать параметр «Cron». Обратитесь к документации для получения дополнительной информации.",
"Pick background job setting" : "Выбрать параметр выполнения фоновых задач",
- "Execute one task with each page loaded." : "Выполнять одно задание с каждой загруженной страницей.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Использовать системный cron для вызова файла cron.php каждые 5 минут.",
+ "Recommended" : "Рекомендовано",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php должен исполняться из под пользователя \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Для запуска требуется расширение POSIX для PHP. Обратитесь к {linkstart}документации по PHP{linkend} для получения дополнительной информации.",
"You need to enable the File sharing App." : "Необходимо включить приложение публикации файлов.",
@@ -482,6 +478,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." : "Если вы используете сторонние приложения для подключения к Nextcloud, убедитесь что для них созданы и настроены пароли приложений, перед тем как активировать двухфакторную авторизацию.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ",
"You need to set your user email before being able to send test emails." : "Вы должны настроить ваш собственный адрес электронной почты прежде чем отправлять тестовые сообщения.",
+ "Update all" : "Обновить все",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Если удаление данных с устройства не было инициировано, отзыв токена может сделать это невозможным.",
"Nextcloud iOS app" : "Приложение Nextcloud для iOS",
"Nextcloud Android app" : "Приложение Nextcloud для Android",
@@ -496,6 +493,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Ошибка: это приложение не может быть включено, так как оно сделает сервер нестабильным",
"mail" : "почта",
"Test email settings" : "Проверка настроек эл.почты",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Для оптимальной производительности важно правильно настроить выполнение задач в фоновом режиме. Для крупных развёртываний рекомендуется использовать параметр «Cron». Обратитесь к документации для получения дополнительной информации.",
+ "Execute one task with each page loaded." : "Выполнять одно задание с каждой загруженной страницей.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Использовать системный cron для вызова файла cron.php каждые 5 минут.",
"Expire after " : "Истечение через:",
"days" : "дней",
"Allow users to share via link" : "Разрешить пользователям публикации через ссылки",
diff --git a/apps/settings/l10n/sc.js b/apps/settings/l10n/sc.js
index d50d4493d04..f48c1240969 100644
--- a/apps/settings/l10n/sc.js
+++ b/apps/settings/l10n/sc.js
@@ -161,7 +161,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Is aplicatziones in evidèntzia sunt isvilupadas dae e cun sa comunidade. Oferint funtzionalidades noas e sunt prontas pro s'impreu in produtzione.",
"Featured" : "In evidèntzia",
"Update to {update}" : "Agiorna a {update}",
- "Update all" : "Agiorna totu",
"Results from other categories" : "Resurtados dae àteras categorias",
"No apps found for your version" : "Peruna aplicatzione agatada pro sa versione tua",
"Disable all" : "Disativa totu",
@@ -372,11 +371,7 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "B'at atividades chi no sunt istadas esecutadas dae %s. Cunsidera de cambiare a su cron de sistema.",
"Last job ran %s." : "S'ùrtima atividade est partida %s.",
"Background job didn’t run yet!" : "S'atividade in segundu pianu no est ancora istada esecutada!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro prestatziones primorosas est importante a cunfigurare in sa manera curreta is atividades in segundu pianu. Pro istàntzias prus mannas 'Cron' est s'impostatzione cussigiada. Càstia sa documentatzione pro àteras informatziones.",
"Pick background job setting" : "Sèbera s'impostatzione de s'atividade in segundu pianu",
- "Execute one task with each page loaded." : "Esecuta una faina cun cada pàgina carrigada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php est registradu in unu servìtziu webcron pro cramare cron.php cada 5 minutos tràmite HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Imprea su servìtziu cron de sistema pro cramare s'archìviu cron.php cada 5 minutos.",
"The cron.php needs to be executed by the system user \"%s\"." : "Su cron.php depet èssere esecutadu dae s'utente de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pro esecutare custu, serbit s'estensione PHP POSIX. Càstia {linkstart}documentatzione PHP{linkend} pro àteros detàllios.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Comente parte de s'amministratzione podes afinigare su cumportamentu de cumpartzidura. Càstia sa documentatzione pro àteras informatziones.",
@@ -439,6 +434,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." : "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.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installatzione e s'agiornamentu de is aplicatziones tràmite sa butega de is aplicatziones o sa cumpartzidura in sa nue federada",
"You need to set your user email before being able to send test emails." : "Deves impostare s'indiritzu de s'utente in antis de proare a imbiare is messàgios de posta.",
+ "Update all" : "Agiorna totu",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Sa rèvoca de custu token diat pòdere impedire sa cantzelladura de su dispositivu si no est cumintzada ancora.",
"Nextcloud iOS app" : "Aplicatzione Nextcloud pro iOS",
"Nextcloud Android app" : "Aplicatzione Nextcloud pro Android",
@@ -453,6 +449,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Errore: Custa aplicatzione non si podet ativare ca faghet su serbidore no istàbile",
"mail" : "posta",
"Test email settings" : "Proa impostatziones de sa posta eletrònica",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro prestatziones primorosas est importante a cunfigurare in sa manera curreta is atividades in segundu pianu. Pro istàntzias prus mannas 'Cron' est s'impostatzione cussigiada. Càstia sa documentatzione pro àteras informatziones.",
+ "Execute one task with each page loaded." : "Esecuta una faina cun cada pàgina carrigada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php est registradu in unu servìtziu webcron pro cramare cron.php cada 5 minutos tràmite HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Imprea su servìtziu cron de sistema pro cramare s'archìviu cron.php cada 5 minutos.",
"Expire after " : "Iscadit pustis de",
"days" : "dies",
"Allow users to share via link" : "Permite a is utentes de cumpartzire tràmite ligòngios",
diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json
index 65d63a92e51..806cfa9c14f 100644
--- a/apps/settings/l10n/sc.json
+++ b/apps/settings/l10n/sc.json
@@ -159,7 +159,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Is aplicatziones in evidèntzia sunt isvilupadas dae e cun sa comunidade. Oferint funtzionalidades noas e sunt prontas pro s'impreu in produtzione.",
"Featured" : "In evidèntzia",
"Update to {update}" : "Agiorna a {update}",
- "Update all" : "Agiorna totu",
"Results from other categories" : "Resurtados dae àteras categorias",
"No apps found for your version" : "Peruna aplicatzione agatada pro sa versione tua",
"Disable all" : "Disativa totu",
@@ -370,11 +369,7 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "B'at atividades chi no sunt istadas esecutadas dae %s. Cunsidera de cambiare a su cron de sistema.",
"Last job ran %s." : "S'ùrtima atividade est partida %s.",
"Background job didn’t run yet!" : "S'atividade in segundu pianu no est ancora istada esecutada!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro prestatziones primorosas est importante a cunfigurare in sa manera curreta is atividades in segundu pianu. Pro istàntzias prus mannas 'Cron' est s'impostatzione cussigiada. Càstia sa documentatzione pro àteras informatziones.",
"Pick background job setting" : "Sèbera s'impostatzione de s'atividade in segundu pianu",
- "Execute one task with each page loaded." : "Esecuta una faina cun cada pàgina carrigada.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php est registradu in unu servìtziu webcron pro cramare cron.php cada 5 minutos tràmite HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Imprea su servìtziu cron de sistema pro cramare s'archìviu cron.php cada 5 minutos.",
"The cron.php needs to be executed by the system user \"%s\"." : "Su cron.php depet èssere esecutadu dae s'utente de sistema \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pro esecutare custu, serbit s'estensione PHP POSIX. Càstia {linkstart}documentatzione PHP{linkend} pro àteros detàllios.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Comente parte de s'amministratzione podes afinigare su cumportamentu de cumpartzidura. Càstia sa documentatzione pro àteras informatziones.",
@@ -437,6 +432,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." : "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.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installatzione e s'agiornamentu de is aplicatziones tràmite sa butega de is aplicatziones o sa cumpartzidura in sa nue federada",
"You need to set your user email before being able to send test emails." : "Deves impostare s'indiritzu de s'utente in antis de proare a imbiare is messàgios de posta.",
+ "Update all" : "Agiorna totu",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Sa rèvoca de custu token diat pòdere impedire sa cantzelladura de su dispositivu si no est cumintzada ancora.",
"Nextcloud iOS app" : "Aplicatzione Nextcloud pro iOS",
"Nextcloud Android app" : "Aplicatzione Nextcloud pro Android",
@@ -451,6 +447,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Errore: Custa aplicatzione non si podet ativare ca faghet su serbidore no istàbile",
"mail" : "posta",
"Test email settings" : "Proa impostatziones de sa posta eletrònica",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro prestatziones primorosas est importante a cunfigurare in sa manera curreta is atividades in segundu pianu. Pro istàntzias prus mannas 'Cron' est s'impostatzione cussigiada. Càstia sa documentatzione pro àteras informatziones.",
+ "Execute one task with each page loaded." : "Esecuta una faina cun cada pàgina carrigada.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php est registradu in unu servìtziu webcron pro cramare cron.php cada 5 minutos tràmite HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Imprea su servìtziu cron de sistema pro cramare s'archìviu cron.php cada 5 minutos.",
"Expire after " : "Iscadit pustis de",
"days" : "dies",
"Allow users to share via link" : "Permite a is utentes de cumpartzire tràmite ligòngios",
diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js
index 7cc05bee5ae..b07b124b3a3 100644
--- a/apps/settings/l10n/sk.js
+++ b/apps/settings/l10n/sk.js
@@ -168,7 +168,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Odporúčané aplikácie sú vyvíjané komunitou Sú prepojené so zbytkom Nextcloud a pripravené na produkčné nasadenie.",
"Featured" : "Doporučená",
"Update to {update}" : "Aktualizovať na {update}",
- "Update all" : "Aktualizovať všetko",
"All apps are up-to-date." : "Všetky aplikácie sú aktuálne.",
"Results from other categories" : "Výsledku z ostatných kategórií",
"No apps found for your version" : "Aplikácie pre vašu verziu sa nenašli",
@@ -421,11 +420,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Niektoré úlohy neboli vykonané už od %s. Zvážte prechod na plánovač systému - cron.",
"Last job ran %s." : "Úloha naposledy prebehla %s.",
"Background job didn’t run yet!" : "Úloha na pozadí ešte nebežala!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Pre väčšie inštancie sa odporúča 'Cron'. Viac informácií je možné nájsť v dokumentácii.",
"Pick background job setting" : "Vybrať nastavenie úlohy na pozadí",
- "Execute one task with each page loaded." : "Vykonajte jednu úlohu s každou načítanou stránkou.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je registrovaný v službe webcron a bude cez HTTP volaný každých 5 minút.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Použiť systémový plánovač (cron) pre spustenie súboru cron.php každých 5 minút.",
+ "Recommended" : "Odporúčané",
"The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pre spustenie potrebujete mať rozšírenie PHP POSIX. Viac detailov v {linkstart}PHP dokumentácii{linkend}.",
"You need to enable the File sharing App." : "Musíte povoliť Aplikáciu pre zdieľanie súborov.",
@@ -491,6 +487,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." : "Ak na pripojenie k NextCloudu používate aplikácie tretích strán, pred povolením dvojstupňového overovania totožnosti, nezabudnite pre každú z nich vytvoriť a nastaviť heslo aplikácie.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Inštalovať a aktualizovať aplikácia pomocou obchodu alebo Zdieľaného Cloudového Úložiska",
"You need to set your user email before being able to send test emails." : "Musíte nastaviť svoj po​​užívateľský email, než budete môcť odoslať testovací email.",
+ "Update all" : "Aktualizovať všetko",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Ostránenie tohto tokenu môže zabrániť vymazaniu vášho zariadenia, ak sa ešte nezačalo mazanie.",
"Nextcloud iOS app" : "Apka Nextcloud pre iOS",
"Nextcloud Android app" : "Apka Nextcloud pre Android",
@@ -505,6 +502,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Chyba: aplikáciu nie je možné povoliť, lebo naruší stabilitu servera",
"mail" : "email",
"Test email settings" : "Nastavenia testovacieho emailu",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Pre väčšie inštancie sa odporúča 'Cron'. Viac informácií je možné nájsť v dokumentácii.",
+ "Execute one task with each page loaded." : "Vykonajte jednu úlohu s každou načítanou stránkou.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je registrovaný v službe webcron a bude cez HTTP volaný každých 5 minút.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Použiť systémový plánovač (cron) pre spustenie súboru cron.php každých 5 minút.",
"Expire after " : "Platnosť do",
"days" : "dni",
"Allow users to share via link" : "Povoliť používateľom sprístupňovanie obsahu pomocou odkazov",
diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json
index 05a5cafc05f..56d2735e10b 100644
--- a/apps/settings/l10n/sk.json
+++ b/apps/settings/l10n/sk.json
@@ -166,7 +166,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Odporúčané aplikácie sú vyvíjané komunitou Sú prepojené so zbytkom Nextcloud a pripravené na produkčné nasadenie.",
"Featured" : "Doporučená",
"Update to {update}" : "Aktualizovať na {update}",
- "Update all" : "Aktualizovať všetko",
"All apps are up-to-date." : "Všetky aplikácie sú aktuálne.",
"Results from other categories" : "Výsledku z ostatných kategórií",
"No apps found for your version" : "Aplikácie pre vašu verziu sa nenašli",
@@ -419,11 +418,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Niektoré úlohy neboli vykonané už od %s. Zvážte prechod na plánovač systému - cron.",
"Last job ran %s." : "Úloha naposledy prebehla %s.",
"Background job didn’t run yet!" : "Úloha na pozadí ešte nebežala!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Pre väčšie inštancie sa odporúča 'Cron'. Viac informácií je možné nájsť v dokumentácii.",
"Pick background job setting" : "Vybrať nastavenie úlohy na pozadí",
- "Execute one task with each page loaded." : "Vykonajte jednu úlohu s každou načítanou stránkou.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je registrovaný v službe webcron a bude cez HTTP volaný každých 5 minút.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Použiť systémový plánovač (cron) pre spustenie súboru cron.php každých 5 minút.",
+ "Recommended" : "Odporúčané",
"The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pre spustenie potrebujete mať rozšírenie PHP POSIX. Viac detailov v {linkstart}PHP dokumentácii{linkend}.",
"You need to enable the File sharing App." : "Musíte povoliť Aplikáciu pre zdieľanie súborov.",
@@ -489,6 +485,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." : "Ak na pripojenie k NextCloudu používate aplikácie tretích strán, pred povolením dvojstupňového overovania totožnosti, nezabudnite pre každú z nich vytvoriť a nastaviť heslo aplikácie.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Inštalovať a aktualizovať aplikácia pomocou obchodu alebo Zdieľaného Cloudového Úložiska",
"You need to set your user email before being able to send test emails." : "Musíte nastaviť svoj po​​užívateľský email, než budete môcť odoslať testovací email.",
+ "Update all" : "Aktualizovať všetko",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Ostránenie tohto tokenu môže zabrániť vymazaniu vášho zariadenia, ak sa ešte nezačalo mazanie.",
"Nextcloud iOS app" : "Apka Nextcloud pre iOS",
"Nextcloud Android app" : "Apka Nextcloud pre Android",
@@ -503,6 +500,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Chyba: aplikáciu nie je možné povoliť, lebo naruší stabilitu servera",
"mail" : "email",
"Test email settings" : "Nastavenia testovacieho emailu",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Pre väčšie inštancie sa odporúča 'Cron'. Viac informácií je možné nájsť v dokumentácii.",
+ "Execute one task with each page loaded." : "Vykonajte jednu úlohu s každou načítanou stránkou.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je registrovaný v službe webcron a bude cez HTTP volaný každých 5 minút.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Použiť systémový plánovač (cron) pre spustenie súboru cron.php každých 5 minút.",
"Expire after " : "Platnosť do",
"days" : "dni",
"Allow users to share via link" : "Povoliť používateľom sprístupňovanie obsahu pomocou odkazov",
diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js
index c0270b902c7..cf67aeb527f 100644
--- a/apps/settings/l10n/sl.js
+++ b/apps/settings/l10n/sl.js
@@ -164,7 +164,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Uradne programe razvijajo posamezniki, ki sodelujejo s skupnostjo. Paketi vključujejo osrednje zmožnosti programa, uporaba pa je namenjena tudi končnim uporabnikom.",
"Featured" : "Izbrano",
"Update to {update}" : "Posodobi na različico {update}",
- "Update all" : "Posodobi vse",
"Results from other categories" : "Rezultati iskanja med drugimi kategorijami",
"No apps found for your version" : "Za navedeni iskalni niz ni programov",
"Disable all" : "Onemogoči vse",
@@ -405,11 +404,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Nekatera opravila niso bila izvedena od %s. Priporočljivo je preklopiti na sistemska opravila cron.",
"Last job ran %s." : "Zadnje opravilo je bilo izvedeno %s.",
"Background job didn’t run yet!" : "Ni bilo izvedenega še nobenega opravila v ozadju.",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Za najboljše delovanje je pomembna ustrezna nastavitev opravil v ozadju. Pri večjih namestitvah je priporočljiva nastavitev »Cron«. Več podrobnosti je zapisanih v dokumentaciji.",
"Pick background job setting" : "Izbor nastavitve ozadnjih opravil",
- "Execute one task with each page loaded." : "Izvedi eno nalogo z vsako naloženo stranjo.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Datoteka cron.php je registrirana pri storitvi »webcron«, ki vzpostavi povezavo s cron.php vsakih 5 minut prek protokola HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Uporabljena je sistemska storitev »cron«, ki vzpostavi povezavo z datoteko cron.php vsakih 5 minut.",
+ "Recommended" : "Priporočljivo",
"The cron.php needs to be executed by the system user \"%s\"." : "Datoteka cron.php mora biti izvedena za uporabnika »%s«.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Za zagon te možnosti je zahtevana razširitev PHP POSIX. Več podrobnosti je zapisanih v {linkstart}dokumentaciji PHP{linkend}.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Skrbnik lahko prilagodi možnosti souporabe. Več podrobnosti je zapisanih v dokumentaciji.",
@@ -471,6 +467,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." : "Če uporabljate za povezavo z oblakom Nextcloud programe tretjih oseb, najprej ustvarite in nastavite gesla za vsak program, preden omogočite dvostopenjsko overitev.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "nameščanje in posodabljanje programov z uporabo programske zbirke ali zveznega oblaka",
"You need to set your user email before being able to send test emails." : "Pred preizkusnim pošiljanjem sporočil je treba nastaviti elektronski naslov uporabnika.",
+ "Update all" : "Posodobi vse",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Obnovitev tega žetona lahko prepreči varnostno brisanje naprave, če se to še ni začelo.",
"Nextcloud iOS app" : "Program Nextcloud iOS",
"Nextcloud Android app" : "Program Nextcloud Android",
@@ -485,6 +482,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Napaka: tega programa ni mogoče namestiti, ker povzroča nestabilnost strežnika.",
"mail" : "pošta",
"Test email settings" : "Preizkus nastavitev elektronske pošte",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Za najboljše delovanje je pomembna ustrezna nastavitev opravil v ozadju. Pri večjih namestitvah je priporočljiva nastavitev »Cron«. Več podrobnosti je zapisanih v dokumentaciji.",
+ "Execute one task with each page loaded." : "Izvedi eno nalogo z vsako naloženo stranjo.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Datoteka cron.php je registrirana pri storitvi »webcron«, ki vzpostavi povezavo s cron.php vsakih 5 minut prek protokola HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Uporabljena je sistemska storitev »cron«, ki vzpostavi povezavo z datoteko cron.php vsakih 5 minut.",
"Expire after " : "Povezava naj preteče po",
"days" : "dneh.",
"Allow users to share via link" : "Uporabnikom dovoli omogočanje souporabe s povezavami",
diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json
index 8edb12172d0..3bb09895035 100644
--- a/apps/settings/l10n/sl.json
+++ b/apps/settings/l10n/sl.json
@@ -162,7 +162,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Uradne programe razvijajo posamezniki, ki sodelujejo s skupnostjo. Paketi vključujejo osrednje zmožnosti programa, uporaba pa je namenjena tudi končnim uporabnikom.",
"Featured" : "Izbrano",
"Update to {update}" : "Posodobi na različico {update}",
- "Update all" : "Posodobi vse",
"Results from other categories" : "Rezultati iskanja med drugimi kategorijami",
"No apps found for your version" : "Za navedeni iskalni niz ni programov",
"Disable all" : "Onemogoči vse",
@@ -403,11 +402,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Nekatera opravila niso bila izvedena od %s. Priporočljivo je preklopiti na sistemska opravila cron.",
"Last job ran %s." : "Zadnje opravilo je bilo izvedeno %s.",
"Background job didn’t run yet!" : "Ni bilo izvedenega še nobenega opravila v ozadju.",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Za najboljše delovanje je pomembna ustrezna nastavitev opravil v ozadju. Pri večjih namestitvah je priporočljiva nastavitev »Cron«. Več podrobnosti je zapisanih v dokumentaciji.",
"Pick background job setting" : "Izbor nastavitve ozadnjih opravil",
- "Execute one task with each page loaded." : "Izvedi eno nalogo z vsako naloženo stranjo.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Datoteka cron.php je registrirana pri storitvi »webcron«, ki vzpostavi povezavo s cron.php vsakih 5 minut prek protokola HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Uporabljena je sistemska storitev »cron«, ki vzpostavi povezavo z datoteko cron.php vsakih 5 minut.",
+ "Recommended" : "Priporočljivo",
"The cron.php needs to be executed by the system user \"%s\"." : "Datoteka cron.php mora biti izvedena za uporabnika »%s«.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Za zagon te možnosti je zahtevana razširitev PHP POSIX. Več podrobnosti je zapisanih v {linkstart}dokumentaciji PHP{linkend}.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Skrbnik lahko prilagodi možnosti souporabe. Več podrobnosti je zapisanih v dokumentaciji.",
@@ -469,6 +465,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." : "Če uporabljate za povezavo z oblakom Nextcloud programe tretjih oseb, najprej ustvarite in nastavite gesla za vsak program, preden omogočite dvostopenjsko overitev.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "nameščanje in posodabljanje programov z uporabo programske zbirke ali zveznega oblaka",
"You need to set your user email before being able to send test emails." : "Pred preizkusnim pošiljanjem sporočil je treba nastaviti elektronski naslov uporabnika.",
+ "Update all" : "Posodobi vse",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Obnovitev tega žetona lahko prepreči varnostno brisanje naprave, če se to še ni začelo.",
"Nextcloud iOS app" : "Program Nextcloud iOS",
"Nextcloud Android app" : "Program Nextcloud Android",
@@ -483,6 +480,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Napaka: tega programa ni mogoče namestiti, ker povzroča nestabilnost strežnika.",
"mail" : "pošta",
"Test email settings" : "Preizkus nastavitev elektronske pošte",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Za najboljše delovanje je pomembna ustrezna nastavitev opravil v ozadju. Pri večjih namestitvah je priporočljiva nastavitev »Cron«. Več podrobnosti je zapisanih v dokumentaciji.",
+ "Execute one task with each page loaded." : "Izvedi eno nalogo z vsako naloženo stranjo.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Datoteka cron.php je registrirana pri storitvi »webcron«, ki vzpostavi povezavo s cron.php vsakih 5 minut prek protokola HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Uporabljena je sistemska storitev »cron«, ki vzpostavi povezavo z datoteko cron.php vsakih 5 minut.",
"Expire after " : "Povezava naj preteče po",
"days" : "dneh.",
"Allow users to share via link" : "Uporabnikom dovoli omogočanje souporabe s povezavami",
diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js
index b89a2fbba7e..57ef9fe0159 100644
--- a/apps/settings/l10n/sq.js
+++ b/apps/settings/l10n/sq.js
@@ -218,7 +218,7 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "Ekzekutimi i punës së fundit vazhdoi %s. Diçka shkoi keq.",
"Last job ran %s." : "Puna e fundit vazhdoi %s.",
"Background job didn’t run yet!" : "Puna ne background nuk ka filluar akoma!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.",
+ "Recommended" : "E rekomanduar",
"The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Për të bërë këtë ekzekutim ju duhet shtesa PHP POSIX. Shikoni {linkstart} dokumentacionin e PHP {linkend} pë më shumë detaje.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.",
@@ -265,6 +265,7 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Gabim: Ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.",
"mail" : "email",
"Test email settings" : "Testoni rregullimet e email-it",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.",
"Expire after " : "Skadon pas ",
"days" : "ditësh",
"Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh",
diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json
index 6dc15be6dcd..8a1eef595c8 100644
--- a/apps/settings/l10n/sq.json
+++ b/apps/settings/l10n/sq.json
@@ -216,7 +216,7 @@
"Last job execution ran %s. Something seems wrong." : "Ekzekutimi i punës së fundit vazhdoi %s. Diçka shkoi keq.",
"Last job ran %s." : "Puna e fundit vazhdoi %s.",
"Background job didn’t run yet!" : "Puna ne background nuk ka filluar akoma!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.",
+ "Recommended" : "E rekomanduar",
"The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Për të bërë këtë ekzekutim ju duhet shtesa PHP POSIX. Shikoni {linkstart} dokumentacionin e PHP {linkend} pë më shumë detaje.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.",
@@ -263,6 +263,7 @@
"Error: This app can not be enabled because it makes the server unstable" : "Gabim: Ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.",
"mail" : "email",
"Test email settings" : "Testoni rregullimet e email-it",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.",
"Expire after " : "Skadon pas ",
"days" : "ditësh",
"Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh",
diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js
index bc3b1b46eb0..06a15dc2ccd 100644
--- a/apps/settings/l10n/sr.js
+++ b/apps/settings/l10n/sr.js
@@ -148,7 +148,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Препоручене апликације су развијене за и од стране заједнице. Нуде главне функционалности и спремне су за продукциону употребу.",
"Featured" : "Препоручене",
"Update to {update}" : "Ажурирај на {update}",
- "Update all" : "Ажурирај све",
"Results from other categories" : "Резултати из других категорија",
"No apps found for your version" : "Нема апликација за вашу верзију",
"Disable all" : "Искључи све",
@@ -346,11 +345,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Неки послови се нису извршили од %s. Размислите о преласку на системски крон сервис.",
"Last job ran %s." : "Последњи посао покренут %s.",
"Background job didn’t run yet!" : "Послови у позадини се још нису извршили!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптималне перформансе, битно је да правилно подесите послове у позадини. За веће инстанце, 'крон' је препоручено подешавање. Погледајте документацију за више информација.",
"Pick background job setting" : "Одаберите поставке позадинског посла",
- "Execute one task with each page loaded." : "Изврши један задатак са сваком учитаном страницом.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php је регистрован код вебкрон сервиса за позивање cron.php сваких 5 минута преко HTTP протокола.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Користите системски крон сервис за позивање cron.php фајла сваких 5 минута.",
+ "Recommended" : "Препоручено",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Да бисте ово покренули, потребна је PHP POSIX екстензија. Погледајте {linkstart}PHP документацију{linkend} за више детаља.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Као администратор, можете фино подешавати понашања дељења. Погледајте документацију за више информација.",
@@ -398,6 +394,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "Поред лозинке, користите и други фактор да повећате безбедност Вашег налога.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Инсталирање и ажурирање апликација кроз продавницу или здруженом дељењу у облаку",
"You need to set your user email before being able to send test emails." : "Морате поставити адресу е-поште пре слања тестне поруке.",
+ "Update all" : "Ажурирај све",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Повлачење овог токена може онемогућити удаљено брисање овог уређаја, ако оно још није започето.",
"Nextcloud iOS app" : "Некстклауд iOS апликација",
"Nextcloud Android app" : "Некстклауд Андроид апликација",
@@ -412,6 +409,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Грешка: ова апликација не може да се укључи јер је због ње цео сервер нестабилан",
"mail" : "пошта",
"Test email settings" : "Тестирај поставке е-поште",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптималне перформансе, битно је да правилно подесите послове у позадини. За веће инстанце, 'крон' је препоручено подешавање. Погледајте документацију за више информација.",
+ "Execute one task with each page loaded." : "Изврши један задатак са сваком учитаном страницом.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php је регистрован код вебкрон сервиса за позивање cron.php сваких 5 минута преко HTTP протокола.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Користите системски крон сервис за позивање cron.php фајла сваких 5 минута.",
"Expire after " : "Истиче након",
"days" : "дана",
"Allow users to share via link" : "Дозволи корисницима да деле путем везе",
diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json
index 5da29495a75..154d0f05d98 100644
--- a/apps/settings/l10n/sr.json
+++ b/apps/settings/l10n/sr.json
@@ -146,7 +146,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Препоручене апликације су развијене за и од стране заједнице. Нуде главне функционалности и спремне су за продукциону употребу.",
"Featured" : "Препоручене",
"Update to {update}" : "Ажурирај на {update}",
- "Update all" : "Ажурирај све",
"Results from other categories" : "Резултати из других категорија",
"No apps found for your version" : "Нема апликација за вашу верзију",
"Disable all" : "Искључи све",
@@ -344,11 +343,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Неки послови се нису извршили од %s. Размислите о преласку на системски крон сервис.",
"Last job ran %s." : "Последњи посао покренут %s.",
"Background job didn’t run yet!" : "Послови у позадини се још нису извршили!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптималне перформансе, битно је да правилно подесите послове у позадини. За веће инстанце, 'крон' је препоручено подешавање. Погледајте документацију за више информација.",
"Pick background job setting" : "Одаберите поставке позадинског посла",
- "Execute one task with each page loaded." : "Изврши један задатак са сваком учитаном страницом.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php је регистрован код вебкрон сервиса за позивање cron.php сваких 5 минута преко HTTP протокола.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Користите системски крон сервис за позивање cron.php фајла сваких 5 минута.",
+ "Recommended" : "Препоручено",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Да бисте ово покренули, потребна је PHP POSIX екстензија. Погледајте {linkstart}PHP документацију{linkend} за више детаља.",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Као администратор, можете фино подешавати понашања дељења. Погледајте документацију за више информација.",
@@ -396,6 +392,7 @@
"Use a second factor besides your password to increase security for your account." : "Поред лозинке, користите и други фактор да повећате безбедност Вашег налога.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Инсталирање и ажурирање апликација кроз продавницу или здруженом дељењу у облаку",
"You need to set your user email before being able to send test emails." : "Морате поставити адресу е-поште пре слања тестне поруке.",
+ "Update all" : "Ажурирај све",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Повлачење овог токена може онемогућити удаљено брисање овог уређаја, ако оно још није започето.",
"Nextcloud iOS app" : "Некстклауд iOS апликација",
"Nextcloud Android app" : "Некстклауд Андроид апликација",
@@ -410,6 +407,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Грешка: ова апликација не може да се укључи јер је због ње цео сервер нестабилан",
"mail" : "пошта",
"Test email settings" : "Тестирај поставке е-поште",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптималне перформансе, битно је да правилно подесите послове у позадини. За веће инстанце, 'крон' је препоручено подешавање. Погледајте документацију за више информација.",
+ "Execute one task with each page loaded." : "Изврши један задатак са сваком учитаном страницом.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php је регистрован код вебкрон сервиса за позивање cron.php сваких 5 минута преко HTTP протокола.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Користите системски крон сервис за позивање cron.php фајла сваких 5 минута.",
"Expire after " : "Истиче након",
"days" : "дана",
"Allow users to share via link" : "Дозволи корисницима да деле путем везе",
diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js
index f2154a7f78a..160e5ceb083 100644
--- a/apps/settings/l10n/sv.js
+++ b/apps/settings/l10n/sv.js
@@ -165,7 +165,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Utvalda appar utvecklas av och inom gemenskapen. De erbjuder central funktionalitet och är redo för produktionsanvändning.",
"Featured" : "Utvalda",
"Update to {update}" : "Uppdatera till {update}",
- "Update all" : "Uppdatera alla",
"Results from other categories" : "Resultat från andra kategorier",
"No apps found for your version" : "Inga appar funna för din version",
"Disable all" : "Inaktivera alla",
@@ -410,11 +409,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Vissa jobb utfördes inte sedan %s. Överväg att byta till system cron.",
"Last job ran %s." : "Senaste jobbet kördes %s.",
"Background job didn’t run yet!" : "Bakgrundsjobb har inte kört ännu!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "För optimal prestanda är det viktigt att konfigurera bakgrundsjobb korrekt. För större instanser 'Cron' är den rekommenderade inställningen. Vänligen se dokumentationen för mer information.",
"Pick background job setting" : "Välj inställning för bakgrundsjobb",
- "Execute one task with each page loaded." : "Utför en uppgift med varje sida inläst.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php är registrerat hos en webcron-tjänst att köra cron.php var 5: e minut över HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 5: e minut.",
+ "Recommended" : "Rekomenderad",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php behöver exekveras av systemanvändaren \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "För att köra detta behöver du PHP POSIX-tillägget. Se {linkstart}PHP dokumentation{linkend} för mer detaljer.",
"You need to enable the File sharing App." : "Du måste aktivera fildelnings-appen.",
@@ -479,6 +475,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." : "Om du använder tredje-parts applikationer för att ansluta till Nextcloud vänligen skapa och konfigurera ett applösenord för varje innan två-faktor autentisering aktiveras.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installerar och uppdaterar appar via appbutiken eller federerad molndelning",
"You need to set your user email before being able to send test emails." : "Du behöver ställa in din användares e-postadress före du kan skicka test e-post.",
+ "Update all" : "Uppdatera alla",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Återkallning kan förhindra att enheten rensas om inte rensningen redan har startat.",
"Nextcloud iOS app" : "Nextcloud iOS-app",
"Nextcloud Android app" : "Nextcloud Android-app",
@@ -493,6 +490,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Fel: Denna app kan inte aktiveras eftersom det gör servern instabil",
"mail" : "e-post",
"Test email settings" : "Testa e-postinställningar",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "För optimal prestanda är det viktigt att konfigurera bakgrundsjobb korrekt. För större instanser 'Cron' är den rekommenderade inställningen. Vänligen se dokumentationen för mer information.",
+ "Execute one task with each page loaded." : "Utför en uppgift med varje sida inläst.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php är registrerat hos en webcron-tjänst att köra cron.php var 5: e minut över HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 5: e minut.",
"Expire after " : "Förfaller efter",
"days" : "dagar",
"Allow users to share via link" : "Tillåt användare att dela via länk",
diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json
index 6bf5739f0c9..2d3dc33d09c 100644
--- a/apps/settings/l10n/sv.json
+++ b/apps/settings/l10n/sv.json
@@ -163,7 +163,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Utvalda appar utvecklas av och inom gemenskapen. De erbjuder central funktionalitet och är redo för produktionsanvändning.",
"Featured" : "Utvalda",
"Update to {update}" : "Uppdatera till {update}",
- "Update all" : "Uppdatera alla",
"Results from other categories" : "Resultat från andra kategorier",
"No apps found for your version" : "Inga appar funna för din version",
"Disable all" : "Inaktivera alla",
@@ -408,11 +407,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Vissa jobb utfördes inte sedan %s. Överväg att byta till system cron.",
"Last job ran %s." : "Senaste jobbet kördes %s.",
"Background job didn’t run yet!" : "Bakgrundsjobb har inte kört ännu!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "För optimal prestanda är det viktigt att konfigurera bakgrundsjobb korrekt. För större instanser 'Cron' är den rekommenderade inställningen. Vänligen se dokumentationen för mer information.",
"Pick background job setting" : "Välj inställning för bakgrundsjobb",
- "Execute one task with each page loaded." : "Utför en uppgift med varje sida inläst.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php är registrerat hos en webcron-tjänst att köra cron.php var 5: e minut över HTTP.",
- "Use system cron service to call the cron.php file every 5 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 5: e minut.",
+ "Recommended" : "Rekomenderad",
"The cron.php needs to be executed by the system user \"%s\"." : "Cron.php behöver exekveras av systemanvändaren \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "För att köra detta behöver du PHP POSIX-tillägget. Se {linkstart}PHP dokumentation{linkend} för mer detaljer.",
"You need to enable the File sharing App." : "Du måste aktivera fildelnings-appen.",
@@ -477,6 +473,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." : "Om du använder tredje-parts applikationer för att ansluta till Nextcloud vänligen skapa och konfigurera ett applösenord för varje innan två-faktor autentisering aktiveras.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installerar och uppdaterar appar via appbutiken eller federerad molndelning",
"You need to set your user email before being able to send test emails." : "Du behöver ställa in din användares e-postadress före du kan skicka test e-post.",
+ "Update all" : "Uppdatera alla",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Återkallning kan förhindra att enheten rensas om inte rensningen redan har startat.",
"Nextcloud iOS app" : "Nextcloud iOS-app",
"Nextcloud Android app" : "Nextcloud Android-app",
@@ -491,6 +488,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Fel: Denna app kan inte aktiveras eftersom det gör servern instabil",
"mail" : "e-post",
"Test email settings" : "Testa e-postinställningar",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "För optimal prestanda är det viktigt att konfigurera bakgrundsjobb korrekt. För större instanser 'Cron' är den rekommenderade inställningen. Vänligen se dokumentationen för mer information.",
+ "Execute one task with each page loaded." : "Utför en uppgift med varje sida inläst.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php är registrerat hos en webcron-tjänst att köra cron.php var 5: e minut över HTTP.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 5: e minut.",
"Expire after " : "Förfaller efter",
"days" : "dagar",
"Allow users to share via link" : "Tillåt användare att dela via länk",
diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js
index 335d3532bb2..db931f3dd85 100644
--- a/apps/settings/l10n/th.js
+++ b/apps/settings/l10n/th.js
@@ -99,7 +99,6 @@ OC.L10N.register(
"Supported" : "รองรับ",
"Featured" : "แนะนำ",
"Update to {update}" : "อัปเดตเป็น {update}",
- "Update all" : "อัปเดตทั้งหมด",
"Results from other categories" : "ผลลัพธ์จากหมวดหมู่อื่น ๆ",
"No apps found for your version" : "ไม่พบแอปสำหรับรุ่นของคุณ",
"Disable all" : "ปิดใช้งานทั้งหมด",
@@ -301,6 +300,7 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "คุณจำเป็นต้องโอนย้ายคีย์การเข้ารหัสของคุณจากการเข้ารหัสเก่า (ownCloud <= 8.0) ไปใหม่ กรุณาเปิดใช้งาน \"โมดูลการเข้ารหัสเริ่มต้น\" และเรียกใช้ 'occ encryption:migrate'",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "คุณจำเป็นต้องโอนย้ายคีย์การเข้ารหัสของคุณจากการเข้ารหัสเก่า (ownCloud <= 8.0) ไปใหม่",
"Start migration" : "เริ่มการโยกย้าย",
+ "Recommended" : "แนะนำ",
"Allow apps to use the Share API" : "อนุญาตให้แอปสามารถใช้ API แชร์",
"Set default expiration date for shares" : "ตั้งวันหมดอายุค่าเริ่มต้นสำหรับการแชร์",
"Expire after" : "หมดอายุหลังจาก",
@@ -332,6 +332,7 @@ OC.L10N.register(
"Change password" : "เปลี่ยนรหัสผ่าน",
"installing and updating apps via the app store or Federated Cloud Sharing" : "กำลังติดตั้งและอัพเดทแอพพลิเคชันผ่าแอพสโตร์หรือคลาวด์ในเครือ",
"You need to set your user email before being able to send test emails." : "คุณจำเป็นต้องตั้งค่าอีเมลผู้ใช้ของคุณก่อนที่จะสามารถส่งอีเมลทดสอบ",
+ "Update all" : "อัปเดตทั้งหมด",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "การเพิกถอนโทเค็นนี้อาจทำให้ไม่สามารถล้างอุปกรณ์ของคุณได้หากการล้างยังไม่เริ่ม",
"Nextcloud iOS app" : "แอป Nextcloud สำหรับ iOS",
"Nextcloud Android app" : "แอป Nextcloud สำหรับ Android",
diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json
index 93c4f9fb1b1..eb43b3bbd72 100644
--- a/apps/settings/l10n/th.json
+++ b/apps/settings/l10n/th.json
@@ -97,7 +97,6 @@
"Supported" : "รองรับ",
"Featured" : "แนะนำ",
"Update to {update}" : "อัปเดตเป็น {update}",
- "Update all" : "อัปเดตทั้งหมด",
"Results from other categories" : "ผลลัพธ์จากหมวดหมู่อื่น ๆ",
"No apps found for your version" : "ไม่พบแอปสำหรับรุ่นของคุณ",
"Disable all" : "ปิดใช้งานทั้งหมด",
@@ -299,6 +298,7 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "คุณจำเป็นต้องโอนย้ายคีย์การเข้ารหัสของคุณจากการเข้ารหัสเก่า (ownCloud <= 8.0) ไปใหม่ กรุณาเปิดใช้งาน \"โมดูลการเข้ารหัสเริ่มต้น\" และเรียกใช้ 'occ encryption:migrate'",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "คุณจำเป็นต้องโอนย้ายคีย์การเข้ารหัสของคุณจากการเข้ารหัสเก่า (ownCloud <= 8.0) ไปใหม่",
"Start migration" : "เริ่มการโยกย้าย",
+ "Recommended" : "แนะนำ",
"Allow apps to use the Share API" : "อนุญาตให้แอปสามารถใช้ API แชร์",
"Set default expiration date for shares" : "ตั้งวันหมดอายุค่าเริ่มต้นสำหรับการแชร์",
"Expire after" : "หมดอายุหลังจาก",
@@ -330,6 +330,7 @@
"Change password" : "เปลี่ยนรหัสผ่าน",
"installing and updating apps via the app store or Federated Cloud Sharing" : "กำลังติดตั้งและอัพเดทแอพพลิเคชันผ่าแอพสโตร์หรือคลาวด์ในเครือ",
"You need to set your user email before being able to send test emails." : "คุณจำเป็นต้องตั้งค่าอีเมลผู้ใช้ของคุณก่อนที่จะสามารถส่งอีเมลทดสอบ",
+ "Update all" : "อัปเดตทั้งหมด",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "การเพิกถอนโทเค็นนี้อาจทำให้ไม่สามารถล้างอุปกรณ์ของคุณได้หากการล้างยังไม่เริ่ม",
"Nextcloud iOS app" : "แอป Nextcloud สำหรับ iOS",
"Nextcloud Android app" : "แอป Nextcloud สำหรับ Android",
diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js
index 1c1963a6a71..97ed20fde70 100644
--- a/apps/settings/l10n/tr.js
+++ b/apps/settings/l10n/tr.js
@@ -178,13 +178,13 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Öne çıkarılmış uygulamalar topluluk tarafından geliştirilmiştir. Temel işlevleri yerine getirirler ve üretim ortamında kullanılabilirler.",
"Featured" : "Öne çıkarılmış",
"Update to {update}" : "{update} sürümüne güncelle",
- "Update all" : "Tümünü güncelle",
"All apps are up-to-date." : "Tüm uygulamalar güncel",
"Results from other categories" : "Diğer kategorilerden sonuçlar",
"No apps found for your version" : "Sürümünüze uygun bir uygulama bulunamadı",
"Disable all" : "Tümünü devre dışı bırak",
"Enable all" : "Tümünü etkinleştir",
"_%n app has an update available_::_%n apps have an update available_" : ["%n uygulama için güncelleme yayınlanmış","%n uygulama için güncelleme yayınlanmış"],
+ "_Update_::_Update all_" : ["Güncelle","Tümünü güncelle"],
"Marked for remote wipe" : "Uzaktan silme için işaretlendi",
"Device settings" : "Aygıt ayarları",
"Allow filesystem access" : "Dosya sistemine erişilebilsin",
@@ -434,11 +434,11 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Bazı görevler %s zamanından beri çalışmadı. Lütfen sistem zamanlanmış görevlerini (cron) kullanımayı düşünün.",
"Last job ran %s." : "Son görev çalışması: %s.",
"Background job didn’t run yet!" : "Arka plan görevi henüz yürütülmemiş!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için arka plan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.",
"Pick background job setting" : "Arka plan görevi ayarlarını seçin",
- "Execute one task with each page loaded." : "Her sayfa yüklemesinde bir görev yürütülsün.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php, HTTP üzerinden 5 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.",
- "Use system cron service to call the cron.php file every 5 minutes." : "5 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Her sayfa yüklendiğinde bir görrev yürütülür. Kullanım şekli: Tek kullanıcılı kopya.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php, HTTP üzerinden her 5 dakikada bir cron.php sayfasını çağıran bir webcron hizmetinde kayıtlıdır. Kullanım şekli: Çok küçük kopya (kullanıma bağlı olarak 1–5 kullanıcı).",
+ "Recommended" : "Önerilen",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "5 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılır. Tüm kopyalar için önerilir.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php dosyası \"%s\" sistem kullanıcısı tarafından yürütülmelidir.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Bunu çalıştıraiblmek için PHP POSIX eklentisi gereklidir. Ayrıntılı bilgi almak için {linkstart}PHP belgelerine{linkend} bakabilirsiniz.",
"You need to enable the File sharing App." : "Dosya paylaşımı uygulamasını etkinleştirmelisiniz.",
@@ -508,6 +508,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." : "Nextcloud bağlantısı kurmak için üçüncü taraf uygulamaları kullanıyorsanız, lütfen iki aşamalı kimlik doğrulamasını etkinleştirmeden önce her biri için bir uygulama parolası oluşturduğunuzdan ve yapılandırdığınızdan emin olun.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Uygulama mağazası ve Birleşik Bulut Paylaşımından uygulama kurma ve güncelleme",
"You need to set your user email before being able to send test emails." : "Sınama e-postaları göndermeden önce kullanıcı e-postasını ayarlamalısınız.",
+ "Update all" : "Tümünü güncelle",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Silme işlemi henüz başlamamış ise bu kodun geri çekilmesi aygıtınızın silinmesini engelleyebilir.",
"Nextcloud iOS app" : "Nextcloud iOS uygulaması",
"Nextcloud Android app" : "Nextcloud Android uygulaması",
@@ -522,6 +523,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Hata: Bu uygulama sunucuda kararsızlığa yol açtığından etkinleştirilemez",
"mail" : "posta",
"Test email settings" : "E-posta ayarlarını sına",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için arka plan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.",
+ "Execute one task with each page loaded." : "Her sayfa yüklemesinde bir görev yürütülsün.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php, HTTP üzerinden 5 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "5 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.",
"Expire after " : "Kullanım süresi",
"days" : "gün sonra dolsun",
"Allow users to share via link" : "Kullanıcılar bağlantı ile paylaşabilsin",
diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json
index c75c8b1c0e4..0f93a6df1ff 100644
--- a/apps/settings/l10n/tr.json
+++ b/apps/settings/l10n/tr.json
@@ -176,13 +176,13 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Öne çıkarılmış uygulamalar topluluk tarafından geliştirilmiştir. Temel işlevleri yerine getirirler ve üretim ortamında kullanılabilirler.",
"Featured" : "Öne çıkarılmış",
"Update to {update}" : "{update} sürümüne güncelle",
- "Update all" : "Tümünü güncelle",
"All apps are up-to-date." : "Tüm uygulamalar güncel",
"Results from other categories" : "Diğer kategorilerden sonuçlar",
"No apps found for your version" : "Sürümünüze uygun bir uygulama bulunamadı",
"Disable all" : "Tümünü devre dışı bırak",
"Enable all" : "Tümünü etkinleştir",
"_%n app has an update available_::_%n apps have an update available_" : ["%n uygulama için güncelleme yayınlanmış","%n uygulama için güncelleme yayınlanmış"],
+ "_Update_::_Update all_" : ["Güncelle","Tümünü güncelle"],
"Marked for remote wipe" : "Uzaktan silme için işaretlendi",
"Device settings" : "Aygıt ayarları",
"Allow filesystem access" : "Dosya sistemine erişilebilsin",
@@ -432,11 +432,11 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "Bazı görevler %s zamanından beri çalışmadı. Lütfen sistem zamanlanmış görevlerini (cron) kullanımayı düşünün.",
"Last job ran %s." : "Son görev çalışması: %s.",
"Background job didn’t run yet!" : "Arka plan görevi henüz yürütülmemiş!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için arka plan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.",
"Pick background job setting" : "Arka plan görevi ayarlarını seçin",
- "Execute one task with each page loaded." : "Her sayfa yüklemesinde bir görev yürütülsün.",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php, HTTP üzerinden 5 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.",
- "Use system cron service to call the cron.php file every 5 minutes." : "5 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Her sayfa yüklendiğinde bir görrev yürütülür. Kullanım şekli: Tek kullanıcılı kopya.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php, HTTP üzerinden her 5 dakikada bir cron.php sayfasını çağıran bir webcron hizmetinde kayıtlıdır. Kullanım şekli: Çok küçük kopya (kullanıma bağlı olarak 1–5 kullanıcı).",
+ "Recommended" : "Önerilen",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "5 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılır. Tüm kopyalar için önerilir.",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php dosyası \"%s\" sistem kullanıcısı tarafından yürütülmelidir.",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Bunu çalıştıraiblmek için PHP POSIX eklentisi gereklidir. Ayrıntılı bilgi almak için {linkstart}PHP belgelerine{linkend} bakabilirsiniz.",
"You need to enable the File sharing App." : "Dosya paylaşımı uygulamasını etkinleştirmelisiniz.",
@@ -506,6 +506,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." : "Nextcloud bağlantısı kurmak için üçüncü taraf uygulamaları kullanıyorsanız, lütfen iki aşamalı kimlik doğrulamasını etkinleştirmeden önce her biri için bir uygulama parolası oluşturduğunuzdan ve yapılandırdığınızdan emin olun.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Uygulama mağazası ve Birleşik Bulut Paylaşımından uygulama kurma ve güncelleme",
"You need to set your user email before being able to send test emails." : "Sınama e-postaları göndermeden önce kullanıcı e-postasını ayarlamalısınız.",
+ "Update all" : "Tümünü güncelle",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Silme işlemi henüz başlamamış ise bu kodun geri çekilmesi aygıtınızın silinmesini engelleyebilir.",
"Nextcloud iOS app" : "Nextcloud iOS uygulaması",
"Nextcloud Android app" : "Nextcloud Android uygulaması",
@@ -520,6 +521,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "Hata: Bu uygulama sunucuda kararsızlığa yol açtığından etkinleştirilemez",
"mail" : "posta",
"Test email settings" : "E-posta ayarlarını sına",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için arka plan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.",
+ "Execute one task with each page loaded." : "Her sayfa yüklemesinde bir görev yürütülsün.",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php, HTTP üzerinden 5 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.",
+ "Use system cron service to call the cron.php file every 5 minutes." : "5 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.",
"Expire after " : "Kullanım süresi",
"days" : "gün sonra dolsun",
"Allow users to share via link" : "Kullanıcılar bağlantı ile paylaşabilsin",
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index 8c9427392a7..3113feeaea3 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -128,7 +128,6 @@ OC.L10N.register(
"Supported" : "Підтримано",
"Featured" : "Функціональні",
"Update to {update}" : "Оновити до {update}",
- "Update all" : "Оновити всі",
"Results from other categories" : "Результати з інших категорій",
"No apps found for your version" : "Відсутні застосунки для вашої версії",
"Disable all" : "Вимкнути все",
@@ -296,6 +295,7 @@ OC.L10N.register(
"Select default encryption module:" : "Обрати модуль шифрування за замовчуванням:",
"Start migration" : "Розпочати міграцію",
"Last job ran %s." : "Останнє завдання запускалось %s.",
+ "Recommended" : "Рекомендуємо",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Як адміністратор ви можете точно налаштувати поведінку спільного використання. Будь ласка, перегляньте документацію для отримання додаткової інформації.",
"Allow apps to use the Share API" : "Дозволити застосункам використовувати API спільного доступу",
"Enforce expiration date" : "Термін дії обов'язковий",
@@ -331,6 +331,7 @@ OC.L10N.register(
"Change password" : "Змінити пароль",
"installing and updating apps via the app store or Federated Cloud Sharing" : "встановлення та оновлення застосунків через крамницю застосунків або об’єднання хмарних сховищ",
"You need to set your user email before being able to send test emails." : "Перед надсиланням тестових листів ви повинні вказати свою email адресу.",
+ "Update all" : "Оновити всі",
"Nextcloud iOS app" : "Застосунок Nextcloud для iOS",
"Nextcloud Android app" : "Застосунок Nextcloud для Android",
"Nextcloud Talk for iOS" : "Застосунок Talk для iOS",
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index bdb646a9698..f1610f1f932 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -126,7 +126,6 @@
"Supported" : "Підтримано",
"Featured" : "Функціональні",
"Update to {update}" : "Оновити до {update}",
- "Update all" : "Оновити всі",
"Results from other categories" : "Результати з інших категорій",
"No apps found for your version" : "Відсутні застосунки для вашої версії",
"Disable all" : "Вимкнути все",
@@ -294,6 +293,7 @@
"Select default encryption module:" : "Обрати модуль шифрування за замовчуванням:",
"Start migration" : "Розпочати міграцію",
"Last job ran %s." : "Останнє завдання запускалось %s.",
+ "Recommended" : "Рекомендуємо",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Як адміністратор ви можете точно налаштувати поведінку спільного використання. Будь ласка, перегляньте документацію для отримання додаткової інформації.",
"Allow apps to use the Share API" : "Дозволити застосункам використовувати API спільного доступу",
"Enforce expiration date" : "Термін дії обов'язковий",
@@ -329,6 +329,7 @@
"Change password" : "Змінити пароль",
"installing and updating apps via the app store or Federated Cloud Sharing" : "встановлення та оновлення застосунків через крамницю застосунків або об’єднання хмарних сховищ",
"You need to set your user email before being able to send test emails." : "Перед надсиланням тестових листів ви повинні вказати свою email адресу.",
+ "Update all" : "Оновити всі",
"Nextcloud iOS app" : "Застосунок Nextcloud для iOS",
"Nextcloud Android app" : "Застосунок Nextcloud для Android",
"Nextcloud Talk for iOS" : "Застосунок Talk для iOS",
diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js
index 20351a7bc2d..abb830239c4 100644
--- a/apps/settings/l10n/zh_CN.js
+++ b/apps/settings/l10n/zh_CN.js
@@ -167,7 +167,6 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "特色应用由社区并在社区内开发。 它们提供了中心功能,并准备投入生产使用。",
"Featured" : "精选",
"Update to {update}" : "更新至 {update}",
- "Update all" : "全部更新",
"Results from other categories" : "来自其他类别的结果",
"No apps found for your version" : "未找到适合当前版本的应用",
"Disable all" : "禁用全部",
@@ -419,11 +418,8 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "自 %s 以来,有些作业没有执行。 请考虑切换到系统计划任务。",
"Last job ran %s." : "上次定时任务执行于:%s。",
"Background job didn’t run yet!" : "后台任务当前没有运行!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "为了优化性能,正确配置后台任务非常重要。对于较大的实例,推荐配置为 'Cron'。详情请参考相关文档。",
"Pick background job setting" : "选择后台任务设置",
- "Execute one task with each page loaded." : "每个页面加载后执行一个任务。",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php注册到 webcron 服务上,每5分钟通过HTTP执行一次cron.php。",
- "Use system cron service to call the cron.php file every 5 minutes." : "使用系统定时任务服务每5分钟执行一次cron.php文件。",
+ "Recommended" : "推荐",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "为了运行该功能,您需要 PHP posix 扩展。请参考 {linkstart}PHP 文档{linkend} 获取更多信息。",
"You need to enable the File sharing App." : "你需要启用 File 共享应用",
@@ -488,6 +484,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." : "如果您使用第三方应用程序连接到 Nextcloud,请确保在启用第二因素身份验证之前为每个应用程序创建和配置应用程序密码。",
"installing and updating apps via the app store or Federated Cloud Sharing" : "通过应用程序商店或联合云共享安装和更新应用程序",
"You need to set your user email before being able to send test emails." : "在发送测试邮件前您需要设置您的电子邮件地址。",
+ "Update all" : "全部更新",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "如果擦除操作还未开始,撤销此令牌可能会妨碍对您设备的擦除操作",
"Nextcloud iOS app" : "Nextcloud iOS 应用",
"Nextcloud Android app" : "Nextcloud Android 应用",
@@ -502,6 +499,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "错误:无法启用应用因为它会导致服务器不稳定",
"mail" : "邮件",
"Test email settings" : "测试电子邮件设置",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "为了优化性能,正确配置后台任务非常重要。对于较大的实例,推荐配置为 'Cron'。详情请参考相关文档。",
+ "Execute one task with each page loaded." : "每个页面加载后执行一个任务。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php注册到 webcron 服务上,每5分钟通过HTTP执行一次cron.php。",
+ "Use system cron service to call the cron.php file every 5 minutes." : "使用系统定时任务服务每5分钟执行一次cron.php文件。",
"Expire after " : "过期于下列日期后",
"days" : "天",
"Allow users to share via link" : "允许用户通过链接共享文件",
diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json
index cc2ec83df65..fbf65c0196d 100644
--- a/apps/settings/l10n/zh_CN.json
+++ b/apps/settings/l10n/zh_CN.json
@@ -165,7 +165,6 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "特色应用由社区并在社区内开发。 它们提供了中心功能,并准备投入生产使用。",
"Featured" : "精选",
"Update to {update}" : "更新至 {update}",
- "Update all" : "全部更新",
"Results from other categories" : "来自其他类别的结果",
"No apps found for your version" : "未找到适合当前版本的应用",
"Disable all" : "禁用全部",
@@ -417,11 +416,8 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "自 %s 以来,有些作业没有执行。 请考虑切换到系统计划任务。",
"Last job ran %s." : "上次定时任务执行于:%s。",
"Background job didn’t run yet!" : "后台任务当前没有运行!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "为了优化性能,正确配置后台任务非常重要。对于较大的实例,推荐配置为 'Cron'。详情请参考相关文档。",
"Pick background job setting" : "选择后台任务设置",
- "Execute one task with each page loaded." : "每个页面加载后执行一个任务。",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php注册到 webcron 服务上,每5分钟通过HTTP执行一次cron.php。",
- "Use system cron service to call the cron.php file every 5 minutes." : "使用系统定时任务服务每5分钟执行一次cron.php文件。",
+ "Recommended" : "推荐",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "为了运行该功能,您需要 PHP posix 扩展。请参考 {linkstart}PHP 文档{linkend} 获取更多信息。",
"You need to enable the File sharing App." : "你需要启用 File 共享应用",
@@ -486,6 +482,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." : "如果您使用第三方应用程序连接到 Nextcloud,请确保在启用第二因素身份验证之前为每个应用程序创建和配置应用程序密码。",
"installing and updating apps via the app store or Federated Cloud Sharing" : "通过应用程序商店或联合云共享安装和更新应用程序",
"You need to set your user email before being able to send test emails." : "在发送测试邮件前您需要设置您的电子邮件地址。",
+ "Update all" : "全部更新",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "如果擦除操作还未开始,撤销此令牌可能会妨碍对您设备的擦除操作",
"Nextcloud iOS app" : "Nextcloud iOS 应用",
"Nextcloud Android app" : "Nextcloud Android 应用",
@@ -500,6 +497,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "错误:无法启用应用因为它会导致服务器不稳定",
"mail" : "邮件",
"Test email settings" : "测试电子邮件设置",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "为了优化性能,正确配置后台任务非常重要。对于较大的实例,推荐配置为 'Cron'。详情请参考相关文档。",
+ "Execute one task with each page loaded." : "每个页面加载后执行一个任务。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php注册到 webcron 服务上,每5分钟通过HTTP执行一次cron.php。",
+ "Use system cron service to call the cron.php file every 5 minutes." : "使用系统定时任务服务每5分钟执行一次cron.php文件。",
"Expire after " : "过期于下列日期后",
"days" : "天",
"Allow users to share via link" : "允许用户通过链接共享文件",
diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js
index 06a3cfba184..8c2067dd773 100644
--- a/apps/settings/l10n/zh_HK.js
+++ b/apps/settings/l10n/zh_HK.js
@@ -178,13 +178,13 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "精選應用程式是由社群開發的。它們提供了相當重要的功能,並已準備好在正式環境使用。",
"Featured" : "精選",
"Update to {update}" : "更新到 {update}",
- "Update all" : "更新全部",
"All apps are up-to-date." : "所有應用程式都是最新的。",
"Results from other categories" : "其他分類的結果",
"No apps found for your version" : "沒有找到適合您的版本的應用程式",
"Disable all" : "全部停用",
"Enable all" : "全部啟用",
"_%n app has an update available_::_%n apps have an update available_" : ["%n 個應用程式有可用的更新"],
+ "_Update_::_Update all_" : ["更新全部"],
"Marked for remote wipe" : "標記為可遠端抹除",
"Device settings" : "裝置設定",
"Allow filesystem access" : "允許檔案系統的存取",
@@ -434,11 +434,11 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "從 %s 開始,有一些工作未執行。請考慮切換為系統 cron。",
"Last job ran %s." : "上次後台作業執行於 %s",
"Background job didn’t run yet!" : "後台作業從未執行!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定後台作業非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。",
"Pick background job setting" : "挑選後台作業設定",
- "Execute one task with each page loaded." : "每個頁面載入時執行一個工作。",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php 在 webcron 服務中註冊,每5分鐘透過 HTTP 執行 cron.php。",
- "Use system cron service to call the cron.php file every 5 minutes." : "使用系統 cron 每5分鐘執行 cron.php。",
+ "Execute one task with each page loaded. Use case: Single user instance." : "每個頁面載入時執行一次任務。使用情境:單使用者站台。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php 註冊了一個 webcron 服務,該服務將通過 HTTP 每 5 分鐘執行一次 cron.php。 用例:非常小的實例(1-5 個用戶,具體取決於使用情況)。",
+ "Recommended" : "建議",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "使用系統 cron 服務每 5 分鐘調用一次 cron.php。 推薦用於所有實例。",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統用戶「%s」執行。",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "要執行這個,您需要 PHP POSIX 擴充元件。請查閱 {linkstart}PHP 說明文件{linkend} 以取得更多資訊。",
"You need to enable the File sharing App." : "您需要啟用檔案分享應用程式。",
@@ -508,6 +508,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." : "如果您使用第三方應用程式來連線到 Nextcloud,請確保在啟用雙重認證前為每個應用程式設定應用程式密碼。",
"installing and updating apps via the app store or Federated Cloud Sharing" : "透過應用程式中心或是聯盟式雲端分享來安裝、更新應用程式",
"You need to set your user email before being able to send test emails." : "您必須先設定您的用戶電子郵件,然後才能傳送測試郵件。",
+ "Update all" : "更新全部",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "如果還沒開始抹除,則撤銷此權杖可能會導致無法抹除您的裝置。",
"Nextcloud iOS app" : "Nextcloud iOS 應用程式",
"Nextcloud Android app" : "Nextcloud Android 應用程式",
@@ -522,6 +523,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它造成伺服器不穩定",
"mail" : "電郵地址",
"Test email settings" : "測試電子郵件設定",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定後台作業非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。",
+ "Execute one task with each page loaded." : "每個頁面載入時執行一個工作。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php 在 webcron 服務中註冊,每5分鐘透過 HTTP 執行 cron.php。",
+ "Use system cron service to call the cron.php file every 5 minutes." : "使用系統 cron 每5分鐘執行 cron.php。",
"Expire after " : "將在此日期後過期: ",
"days" : "天",
"Allow users to share via link" : "允許用戶透過連結分享",
diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json
index 948cfb9361d..a8984e55866 100644
--- a/apps/settings/l10n/zh_HK.json
+++ b/apps/settings/l10n/zh_HK.json
@@ -176,13 +176,13 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "精選應用程式是由社群開發的。它們提供了相當重要的功能,並已準備好在正式環境使用。",
"Featured" : "精選",
"Update to {update}" : "更新到 {update}",
- "Update all" : "更新全部",
"All apps are up-to-date." : "所有應用程式都是最新的。",
"Results from other categories" : "其他分類的結果",
"No apps found for your version" : "沒有找到適合您的版本的應用程式",
"Disable all" : "全部停用",
"Enable all" : "全部啟用",
"_%n app has an update available_::_%n apps have an update available_" : ["%n 個應用程式有可用的更新"],
+ "_Update_::_Update all_" : ["更新全部"],
"Marked for remote wipe" : "標記為可遠端抹除",
"Device settings" : "裝置設定",
"Allow filesystem access" : "允許檔案系統的存取",
@@ -432,11 +432,11 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "從 %s 開始,有一些工作未執行。請考慮切換為系統 cron。",
"Last job ran %s." : "上次後台作業執行於 %s",
"Background job didn’t run yet!" : "後台作業從未執行!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定後台作業非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。",
"Pick background job setting" : "挑選後台作業設定",
- "Execute one task with each page loaded." : "每個頁面載入時執行一個工作。",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php 在 webcron 服務中註冊,每5分鐘透過 HTTP 執行 cron.php。",
- "Use system cron service to call the cron.php file every 5 minutes." : "使用系統 cron 每5分鐘執行 cron.php。",
+ "Execute one task with each page loaded. Use case: Single user instance." : "每個頁面載入時執行一次任務。使用情境:單使用者站台。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php 註冊了一個 webcron 服務,該服務將通過 HTTP 每 5 分鐘執行一次 cron.php。 用例:非常小的實例(1-5 個用戶,具體取決於使用情況)。",
+ "Recommended" : "建議",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "使用系統 cron 服務每 5 分鐘調用一次 cron.php。 推薦用於所有實例。",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統用戶「%s」執行。",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "要執行這個,您需要 PHP POSIX 擴充元件。請查閱 {linkstart}PHP 說明文件{linkend} 以取得更多資訊。",
"You need to enable the File sharing App." : "您需要啟用檔案分享應用程式。",
@@ -506,6 +506,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." : "如果您使用第三方應用程式來連線到 Nextcloud,請確保在啟用雙重認證前為每個應用程式設定應用程式密碼。",
"installing and updating apps via the app store or Federated Cloud Sharing" : "透過應用程式中心或是聯盟式雲端分享來安裝、更新應用程式",
"You need to set your user email before being able to send test emails." : "您必須先設定您的用戶電子郵件,然後才能傳送測試郵件。",
+ "Update all" : "更新全部",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "如果還沒開始抹除,則撤銷此權杖可能會導致無法抹除您的裝置。",
"Nextcloud iOS app" : "Nextcloud iOS 應用程式",
"Nextcloud Android app" : "Nextcloud Android 應用程式",
@@ -520,6 +521,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它造成伺服器不穩定",
"mail" : "電郵地址",
"Test email settings" : "測試電子郵件設定",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定後台作業非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。",
+ "Execute one task with each page loaded." : "每個頁面載入時執行一個工作。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php 在 webcron 服務中註冊,每5分鐘透過 HTTP 執行 cron.php。",
+ "Use system cron service to call the cron.php file every 5 minutes." : "使用系統 cron 每5分鐘執行 cron.php。",
"Expire after " : "將在此日期後過期: ",
"days" : "天",
"Allow users to share via link" : "允許用戶透過連結分享",
diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js
index 953831585fa..65521a17f50 100644
--- a/apps/settings/l10n/zh_TW.js
+++ b/apps/settings/l10n/zh_TW.js
@@ -178,13 +178,13 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "精選應用程式是由社群開發的。它們提供了相當重要的功能,並已準備好在正式環境使用。",
"Featured" : "精選",
"Update to {update}" : "更新到 {update}",
- "Update all" : "更新全部",
"All apps are up-to-date." : "所有應用程式都是最新的。",
"Results from other categories" : "其他分類的結果",
"No apps found for your version" : "沒有找到適合您的版本的應用程式",
"Disable all" : "全部停用",
"Enable all" : "全部啟用",
"_%n app has an update available_::_%n apps have an update available_" : ["%n 個應用程式有可用的更新"],
+ "_Update_::_Update all_" : ["更新全部"],
"Marked for remote wipe" : "標記為可遠端抹除",
"Device settings" : "裝置設定",
"Allow filesystem access" : "允許檔案系統的存取",
@@ -434,11 +434,11 @@ OC.L10N.register(
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "從 %s 開始,有一些工作未執行。請考慮切換為系統 cron。",
"Last job ran %s." : "上次背景工作執行於 %s",
"Background job didn’t run yet!" : "背景工作從未執行!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定背景工作非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。",
"Pick background job setting" : "挑選背景工作設定",
- "Execute one task with each page loaded." : "每個頁面載入時執行一個工作。",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php 在 webcron 服務中註冊,每5分鐘透過 HTTP 呼叫 cron.php。",
- "Use system cron service to call the cron.php file every 5 minutes." : "使用系統 cron 每5分鐘呼叫 cron.php。",
+ "Execute one task with each page loaded. Use case: Single user instance." : "每個頁面載入時執行一次任務。使用情境:單使用者站台。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php 在 webcron 服務中註冊,每五分鐘透過 HTTP 呼叫一次 cron.php。使用情境:非常小的站台(一到五個使用者,取決於使用量)。",
+ "Recommended" : "建議",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "使用系統 cron 服務來每五分鐘呼叫一次 cron.php 檔案。建議所有站台使用。",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統使用者「%s」執行。",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "要執行這個,您需要 PHP POSIX 擴充元件。請查閱 {linkstart}PHP 說明文件{linkend} 以取得更多資訊。",
"You need to enable the File sharing App." : "您必須啟用檔案分享應用程式。",
@@ -508,6 +508,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." : "如果您使用第三方應用程式來連線到 Nextcloud,請確保在啟用雙因素驗證前為每個應用程式設定應用程式密碼。",
"installing and updating apps via the app store or Federated Cloud Sharing" : "透過應用程式中心或是聯盟式雲端分享來安裝、更新應用程式",
"You need to set your user email before being able to send test emails." : "您必須先設定您的使用者電子郵件,然後才能傳送測試郵件。",
+ "Update all" : "更新全部",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "如果還沒開始抹除,則撤銷此權杖可能會導致無法抹除您的裝置。",
"Nextcloud iOS app" : "Nextcloud iOS 應用程式",
"Nextcloud Android app" : "Nextcloud Android 應用程式",
@@ -522,6 +523,10 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它造成伺服器不穩定",
"mail" : "電子郵件",
"Test email settings" : "測試電子郵件設定",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定背景工作非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。",
+ "Execute one task with each page loaded." : "每個頁面載入時執行一個工作。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php 在 webcron 服務中註冊,每5分鐘透過 HTTP 呼叫 cron.php。",
+ "Use system cron service to call the cron.php file every 5 minutes." : "使用系統 cron 每5分鐘呼叫 cron.php。",
"Expire after " : "在什麼時候過期",
"days" : "天",
"Allow users to share via link" : "允許使用者透過連結分享",
diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json
index 3c273a6f930..9cdc047d6d2 100644
--- a/apps/settings/l10n/zh_TW.json
+++ b/apps/settings/l10n/zh_TW.json
@@ -176,13 +176,13 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "精選應用程式是由社群開發的。它們提供了相當重要的功能,並已準備好在正式環境使用。",
"Featured" : "精選",
"Update to {update}" : "更新到 {update}",
- "Update all" : "更新全部",
"All apps are up-to-date." : "所有應用程式都是最新的。",
"Results from other categories" : "其他分類的結果",
"No apps found for your version" : "沒有找到適合您的版本的應用程式",
"Disable all" : "全部停用",
"Enable all" : "全部啟用",
"_%n app has an update available_::_%n apps have an update available_" : ["%n 個應用程式有可用的更新"],
+ "_Update_::_Update all_" : ["更新全部"],
"Marked for remote wipe" : "標記為可遠端抹除",
"Device settings" : "裝置設定",
"Allow filesystem access" : "允許檔案系統的存取",
@@ -432,11 +432,11 @@
"Some jobs didn’t execute since %s. Please consider switching to system cron." : "從 %s 開始,有一些工作未執行。請考慮切換為系統 cron。",
"Last job ran %s." : "上次背景工作執行於 %s",
"Background job didn’t run yet!" : "背景工作從未執行!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定背景工作非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。",
"Pick background job setting" : "挑選背景工作設定",
- "Execute one task with each page loaded." : "每個頁面載入時執行一個工作。",
- "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php 在 webcron 服務中註冊,每5分鐘透過 HTTP 呼叫 cron.php。",
- "Use system cron service to call the cron.php file every 5 minutes." : "使用系統 cron 每5分鐘呼叫 cron.php。",
+ "Execute one task with each page loaded. Use case: Single user instance." : "每個頁面載入時執行一次任務。使用情境:單使用者站台。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php 在 webcron 服務中註冊,每五分鐘透過 HTTP 呼叫一次 cron.php。使用情境:非常小的站台(一到五個使用者,取決於使用量)。",
+ "Recommended" : "建議",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "使用系統 cron 服務來每五分鐘呼叫一次 cron.php 檔案。建議所有站台使用。",
"The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統使用者「%s」執行。",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "要執行這個,您需要 PHP POSIX 擴充元件。請查閱 {linkstart}PHP 說明文件{linkend} 以取得更多資訊。",
"You need to enable the File sharing App." : "您必須啟用檔案分享應用程式。",
@@ -506,6 +506,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." : "如果您使用第三方應用程式來連線到 Nextcloud,請確保在啟用雙因素驗證前為每個應用程式設定應用程式密碼。",
"installing and updating apps via the app store or Federated Cloud Sharing" : "透過應用程式中心或是聯盟式雲端分享來安裝、更新應用程式",
"You need to set your user email before being able to send test emails." : "您必須先設定您的使用者電子郵件,然後才能傳送測試郵件。",
+ "Update all" : "更新全部",
"Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "如果還沒開始抹除,則撤銷此權杖可能會導致無法抹除您的裝置。",
"Nextcloud iOS app" : "Nextcloud iOS 應用程式",
"Nextcloud Android app" : "Nextcloud Android 應用程式",
@@ -520,6 +521,10 @@
"Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它造成伺服器不穩定",
"mail" : "電子郵件",
"Test email settings" : "測試電子郵件設定",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定背景工作非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。",
+ "Execute one task with each page loaded." : "每個頁面載入時執行一個工作。",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php 在 webcron 服務中註冊,每5分鐘透過 HTTP 呼叫 cron.php。",
+ "Use system cron service to call the cron.php file every 5 minutes." : "使用系統 cron 每5分鐘呼叫 cron.php。",
"Expire after " : "在什麼時候過期",
"days" : "天",
"Allow users to share via link" : "允許使用者透過連結分享",
diff --git a/apps/settings/lib/Controller/CheckSetupController.php b/apps/settings/lib/Controller/CheckSetupController.php
index b9f176f97c5..36532878922 100644
--- a/apps/settings/lib/Controller/CheckSetupController.php
+++ b/apps/settings/lib/Controller/CheckSetupController.php
@@ -513,7 +513,7 @@ Raw output
empty($status['opcache_statistics']['max_cached_keys']) ||
($status['opcache_statistics']['num_cached_keys'] / $status['opcache_statistics']['max_cached_keys'] > 0.9)
) {
- $recommendations[] = $this->l10n->t('The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>.', [($this->iniGetWrapper->getNumeric('opcache.max_accelerated_files') ?: 'currently')]);
+ $recommendations[] = $this->l10n->t('The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>.', [($this->iniGetWrapper->getNumeric('opcache.max_accelerated_files') ?: 'currently')]);
}
if (
diff --git a/apps/settings/src/components/AppList.vue b/apps/settings/src/components/AppList.vue
index d32f3b08102..3a0c1fe51d0 100644
--- a/apps/settings/src/components/AppList.vue
+++ b/apps/settings/src/components/AppList.vue
@@ -30,7 +30,7 @@
id="app-list-update-all"
type="primary"
@click="updateAll">
- {{ t('settings', 'Update all') }}
+ {{ n('settings', 'Update', 'Update all', counter) }}
</Button>
</div>
@@ -125,10 +125,10 @@ export default {
return this.$store.getters.loading('list')
},
hasPendingUpdate() {
- return this.apps.filter(app => app.update).length > 1
+ return this.apps.filter(app => app.update).length > 0
},
showUpdateAll() {
- return this.hasPendingUpdate && ['installed', 'updates'].includes(this.category)
+ return this.hasPendingUpdate && this.useListView
},
apps() {
const apps = this.$store.getters.getAllApps
diff --git a/apps/settings/templates/settings/admin/server.php b/apps/settings/templates/settings/admin/server.php
index b5382c92551..f3b8dc4aaad 100644
--- a/apps/settings/templates/settings/admin/server.php
+++ b/apps/settings/templates/settings/admin/server.php
@@ -71,7 +71,7 @@ script('settings', [
title="<?php p($l->t('Open documentation'));?>"
href="<?php p(link_to_docs('admin-background-jobs')); ?>"></a>
- <p class="settings-hint"><?php p($l->t('For optimal performance it\'s important to configure background jobs correctly. For bigger instances \'Cron\' is the recommended setting. Please see the documentation for more information.'));?></p>
+ <p class="settings-hint"><?php p($l->t('For the server to work properly, it\'s important to configure background jobs correctly. "Cron" is the recommended setting. Please see the documentation for more information.'));?></p>
<form action="#">
<fieldset>
<legend class="hidden-visually"><?php p($l->t('Pick background job setting'));?></legend>
@@ -81,7 +81,7 @@ script('settings', [
print_unescaped('checked="checked"');
} ?>>
<label for="backgroundjobs_ajax">AJAX</label><br/>
- <em><?php p($l->t("Execute one task with each page loaded.")); ?></em>
+ <em><?php p($l->t("Execute one task with each page loaded. Use case: Single user instance.")); ?></em>
</p>
<p>
<input type="radio" name="mode" value="webcron" class="radio"
@@ -89,7 +89,7 @@ script('settings', [
print_unescaped('checked="checked"');
} ?>>
<label for="backgroundjobs_webcron">Webcron</label><br/>
- <em><?php p($l->t("cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP.")); ?></em>
+ <em><?php p($l->t("cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage).")); ?></em>
</p>
<p>
<input type="radio" name="mode" value="cron" class="radio"
@@ -99,8 +99,8 @@ script('settings', [
if (!$_['cli_based_cron_possible']) {
print_unescaped('disabled');
}?>>
- <label for="backgroundjobs_cron">Cron</label><br/>
- <em><?php p($l->t("Use system cron service to call the cron.php file every 5 minutes.")); ?>
+ <label for="backgroundjobs_cron">Cron (<?php p($l->t("Recommended")); ?>)</label><br/>
+ <em><?php p($l->t("Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances.")); ?>
<?php if ($_['cli_based_cron_possible']) {
p($l->t('The cron.php needs to be executed by the system user "%s".', [$_['cli_based_cron_user']]));
} else {
diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css
index f7bf3a20d09..4bd9fb13bb8 100644
--- a/apps/theming/css/default.css
+++ b/apps/theming/css/default.css
@@ -1,4 +1,4 @@
-:root {
+:root {
--color-main-background: #ffffff;
--color-main-background-rgb: 255,255,255;
--color-main-background-translucent: rgba(var(--color-main-background-rgb), .97);
@@ -10,25 +10,25 @@
--color-placeholder-dark: #cccccc;
--color-primary: #0082c9;
--color-primary-text: #ffffff;
- --color-primary-hover: #198ece;
- --color-primary-light: #72bae1;
+ --color-primary-hover: #329bd3;
+ --color-primary-light: #e5f2f9;
--color-primary-light-text: #0082c9;
- --color-primary-light-hover: #0f567d;
+ --color-primary-light-hover: #1e2b32;
--color-primary-text-dark: #ededed;
--color-primary-element: #0082c9;
--color-primary-element-hover: #198ece;
--color-primary-element-light: #17adff;
- --color-primary-element-lighter: #6cb7df;
+ --color-primary-element-lighter: #d8ecf6;
--color-main-text: #222222;
--color-text-maxcontrast: #767676;
--color-text-light: #222222;
--color-text-lighter: #767676;
--color-error: #e9322d;
- --color-error-hover: #eb4642;
+ --color-error-hover: #ed5a56;
--color-warning: #eca700;
- --color-warning-hover: #edaf19;
+ --color-warning-hover: #efb832;
--color-success: #46ba61;
- --color-success-hover: #58c070;
+ --color-success-hover: #6ac780;
--color-loading-light: #cccccc;
--color-loading-dark: #444444;
--color-box-shadow-rgb: 77,77,77;
diff --git a/apps/theming/img/default-source.svg b/apps/theming/img/default-source.svg
new file mode 100644
index 00000000000..89711e2a0c8
--- /dev/null
+++ b/apps/theming/img/default-source.svg
@@ -0,0 +1,13 @@
+<svg width="800" height="500" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+ <!-- Use this file to generate the default.jpg theme preview -->
+
+ <!-- Half rectangle light mask -->
+ <defs><mask id="a"><path d="M0 0h800L0 500Z" fill="#fff"/></mask></defs>
+ <!-- Dark and light images link -->
+ <image width="800" height="500" xlink:href="dark.jpg"/>
+ <image width="800" height="500" xlink:href="light.jpg" mask="url(#a)" fill="#fff"/>
+ <!-- White opacity layer -->
+ <path fill="#fff" opacity=".35" d="M0 0h800v500H0z"/>
+ <!-- Moon/sun icon -->
+ <path d="M358.82 162.36a58 58 0 0 0-26.63 48.81c0 20.6 10.74 38.6 26.9 48.81A48.85 48.85 0 0 1 310 211.17a48.82 48.81 0 0 1 48.82-48.81m102.69 13.3 12.7 12.7L336 326.55l-12.7-12.7 138.2-138.18m-54.85 21.57-13.14-8.26-12.78 8.88 3.73-15.1-12.34-9.4 15.53-1.06 5.15-14.65 5.95 14.47 15.35.27-11.98 10.02 4.53 14.83m-29.3 32.04-10.29-6.48-9.94 6.92 3.02-11.72-9.68-7.36 12.07-.8 4-11.45 4.53 11.27 12.07.27-9.32 7.72 3.55 11.63m83.52 35.14a48.82 48.81 0 0 1-48.82 48.82 48.7 48.7 0 0 1-28.93-9.5l68.25-68.25a48.7 48.7 0 0 1 9.5 28.93m-39.06 58.4 24.59-10.2-2.13 29.73-22.46-19.53m38.44-23.96 10.2-24.59L490 296.82l-29.73 2.04m10.2-44.02-10.11-24.68L490 232.3l-19.53 22.55m-92.75 57.78 24.59 10.2-22.46 19.44z" stroke="#000"/>
+</svg>
diff --git a/apps/theming/img/default.jpg b/apps/theming/img/default.jpg
index ad3fafd96f2..bbea0e905b9 100644
--- a/apps/theming/img/default.jpg
+++ b/apps/theming/img/default.jpg
Binary files differ
diff --git a/apps/theming/img/light.jpg b/apps/theming/img/light.jpg
new file mode 100644
index 00000000000..ad3fafd96f2
--- /dev/null
+++ b/apps/theming/img/light.jpg
Binary files differ
diff --git a/apps/theming/l10n/bg.js b/apps/theming/l10n/bg.js
index e8d6e91a163..68b4ab93be1 100644
--- a/apps/theming/l10n/bg.js
+++ b/apps/theming/l10n/bg.js
@@ -26,9 +26,16 @@ OC.L10N.register(
"No file uploaded" : "Няма качен файл",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Вече използвате персонализирана тема. Настройките на приложението за теми могат да бъдат презаписани от това.",
"Theming" : "Теми",
+ "Appearance and accessibility" : "Изглед и достъпност",
+ "Dark theme with high contrast mode" : "Тъмна тема с режим на висок контраст",
+ "Enable dark high contrast mode" : "Активиране на тъмен режим с висок контраст",
+ "Similar to the high contrast mode, but with dark colours." : "Подобно на режима с висок контраст, но с тъмни цветове.",
"Dark theme" : "Tъмна Tема",
"Enable dark theme" : "Активиране на тъмна тема",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Тъмна тема, която облекчава очите ви, като намалява яркостта. Все още е в процес на разработка, затова, моля, докладвайте за всички проблеми, които откриете.",
+ "Light theme" : "Светла тема",
+ "Enable the default light theme" : "Активиране на светлата тема по подразбиране",
+ "The default light appearance." : "Светъл изглед по подразбиране.",
"Dyslexia font" : "Шрифт за дислексия",
"Enable dyslexia font" : "Активирай шрифт за дислексия",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic е безплатен шрифт, предназначен за смекчаване на някои от често срещаните грешки при четенето, причинени от дислексия.",
diff --git a/apps/theming/l10n/bg.json b/apps/theming/l10n/bg.json
index 7a5b3c7fb0d..92347b4a4a1 100644
--- a/apps/theming/l10n/bg.json
+++ b/apps/theming/l10n/bg.json
@@ -24,9 +24,16 @@
"No file uploaded" : "Няма качен файл",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Вече използвате персонализирана тема. Настройките на приложението за теми могат да бъдат презаписани от това.",
"Theming" : "Теми",
+ "Appearance and accessibility" : "Изглед и достъпност",
+ "Dark theme with high contrast mode" : "Тъмна тема с режим на висок контраст",
+ "Enable dark high contrast mode" : "Активиране на тъмен режим с висок контраст",
+ "Similar to the high contrast mode, but with dark colours." : "Подобно на режима с висок контраст, но с тъмни цветове.",
"Dark theme" : "Tъмна Tема",
"Enable dark theme" : "Активиране на тъмна тема",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Тъмна тема, която облекчава очите ви, като намалява яркостта. Все още е в процес на разработка, затова, моля, докладвайте за всички проблеми, които откриете.",
+ "Light theme" : "Светла тема",
+ "Enable the default light theme" : "Активиране на светлата тема по подразбиране",
+ "The default light appearance." : "Светъл изглед по подразбиране.",
"Dyslexia font" : "Шрифт за дислексия",
"Enable dyslexia font" : "Активирай шрифт за дислексия",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic е безплатен шрифт, предназначен за смекчаване на някои от често срещаните грешки при четенето, причинени от дислексия.",
diff --git a/apps/theming/l10n/de_DE.js b/apps/theming/l10n/de_DE.js
index 027472830ea..c5d55b4c4e5 100644
--- a/apps/theming/l10n/de_DE.js
+++ b/apps/theming/l10n/de_DE.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"theming",
{
"Loading preview…" : "Lade Vorschau…",
- "Admin" : "Administrator",
+ "Admin" : "Administration",
"Saved" : "Gespeichert",
"a safe home for all your data" : "Ein sicheres Zuhause für Ihre Daten",
"Name cannot be empty" : "Der Name darf nicht leer sein",
diff --git a/apps/theming/l10n/de_DE.json b/apps/theming/l10n/de_DE.json
index 6e0ebd146cb..fe85219fba5 100644
--- a/apps/theming/l10n/de_DE.json
+++ b/apps/theming/l10n/de_DE.json
@@ -1,6 +1,6 @@
{ "translations": {
"Loading preview…" : "Lade Vorschau…",
- "Admin" : "Administrator",
+ "Admin" : "Administration",
"Saved" : "Gespeichert",
"a safe home for all your data" : "Ein sicheres Zuhause für Ihre Daten",
"Name cannot be empty" : "Der Name darf nicht leer sein",
diff --git a/apps/theming/l10n/fi.js b/apps/theming/l10n/fi.js
index 9f861b71781..8bbee26ed27 100644
--- a/apps/theming/l10n/fi.js
+++ b/apps/theming/l10n/fi.js
@@ -26,9 +26,16 @@ OC.L10N.register(
"No file uploaded" : "Ei tiedostoa lähetetty",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Käytät jo mukautettua teemaa. Teemoitussovelluksen asetukset saatetaan ohittaa.",
"Theming" : "Teema",
+ "Appearance and accessibility" : "Ulkoasu ja saavutettavuus",
+ "Dark theme with high contrast mode" : "Tumma teema korkean kontrastin tilalla",
+ "Enable dark high contrast mode" : "Ota käyttöön tumma korkean kontrastin tila",
+ "Similar to the high contrast mode, but with dark colours." : "Samankaltainen korkean kontrastin tilan kanssa, mutta tummien värien kera.",
"Dark theme" : "Tumma teema",
"Enable dark theme" : "Käytä tummaa teemaa",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Tumma teema helpottaa silmien rasitusta vähentämällä kokonaiskirkkautta. Teemaa kehitetään edelleen, joten ilmoitathan mahdollisesti kohtaamasi ongelmat.",
+ "Light theme" : "Vaalea teema",
+ "Enable the default light theme" : "Ota käyttöön oletusarvoinen vaalea teema",
+ "The default light appearance." : "Oletusarvoinen vaalea ulkoasu.",
"Dyslexia font" : "Lukihäiriökirjasin",
"Enable dyslexia font" : "Käytä lukihäiriökirjasinta",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic on vapaa kirjasin, joka on suunniteltu lieventämään lukihäiriön aiheuttamia lukuvirheitä.",
diff --git a/apps/theming/l10n/fi.json b/apps/theming/l10n/fi.json
index 4bb8e9a5525..87b9662bd9c 100644
--- a/apps/theming/l10n/fi.json
+++ b/apps/theming/l10n/fi.json
@@ -24,9 +24,16 @@
"No file uploaded" : "Ei tiedostoa lähetetty",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Käytät jo mukautettua teemaa. Teemoitussovelluksen asetukset saatetaan ohittaa.",
"Theming" : "Teema",
+ "Appearance and accessibility" : "Ulkoasu ja saavutettavuus",
+ "Dark theme with high contrast mode" : "Tumma teema korkean kontrastin tilalla",
+ "Enable dark high contrast mode" : "Ota käyttöön tumma korkean kontrastin tila",
+ "Similar to the high contrast mode, but with dark colours." : "Samankaltainen korkean kontrastin tilan kanssa, mutta tummien värien kera.",
"Dark theme" : "Tumma teema",
"Enable dark theme" : "Käytä tummaa teemaa",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Tumma teema helpottaa silmien rasitusta vähentämällä kokonaiskirkkautta. Teemaa kehitetään edelleen, joten ilmoitathan mahdollisesti kohtaamasi ongelmat.",
+ "Light theme" : "Vaalea teema",
+ "Enable the default light theme" : "Ota käyttöön oletusarvoinen vaalea teema",
+ "The default light appearance." : "Oletusarvoinen vaalea ulkoasu.",
"Dyslexia font" : "Lukihäiriökirjasin",
"Enable dyslexia font" : "Käytä lukihäiriökirjasinta",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic on vapaa kirjasin, joka on suunniteltu lieventämään lukihäiriön aiheuttamia lukuvirheitä.",
diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js
index 3224f35efb0..a7068117cb5 100644
--- a/apps/theming/l10n/hu.js
+++ b/apps/theming/l10n/hu.js
@@ -26,9 +26,16 @@ OC.L10N.register(
"No file uploaded" : "Nincs fájl feltöltve",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Már egyéni témát használ. Lehet, hogy a témázó alkalmazás beállításai felülírták.",
"Theming" : "Témázás",
+ "Appearance and accessibility" : "Megjelenés és akadálymentesítés",
+ "Dark theme with high contrast mode" : "Sötét téma magas kontrasztú móddal",
+ "Enable dark high contrast mode" : "Sötét, magas kontrasztú mód engedélyezése",
+ "Similar to the high contrast mode, but with dark colours." : "Hasonló a magas kontrasztú módhoz, de sötét színekkel.",
"Dark theme" : "Sötét téma",
"Enable dark theme" : "Sötét téma engedélyezése",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "A sötét téma csökkenti a szemek terhelését az átlagos fényesség és fényerő csökkentésével. Még mindig fejlesztés alatt áll, így jelentse ha problémát talál.",
+ "Light theme" : "Világos téma",
+ "Enable the default light theme" : "Alapértelmezett világos téma engedélyezése",
+ "The default light appearance." : "Az alapértelmezett világos megjelenés.",
"Dyslexia font" : "Diszlexia betűkészlet",
"Enable dyslexia font" : "Diszlexia betűkészlet engedélyezése",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "Az OpenDyslexic egy szabad betűkészlet, amely egyes, diszlexia által okozott, gyakori olvasási hibák csökkentésére lett tervezve.",
diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json
index e43a460e469..3e0c08ba237 100644
--- a/apps/theming/l10n/hu.json
+++ b/apps/theming/l10n/hu.json
@@ -24,9 +24,16 @@
"No file uploaded" : "Nincs fájl feltöltve",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Már egyéni témát használ. Lehet, hogy a témázó alkalmazás beállításai felülírták.",
"Theming" : "Témázás",
+ "Appearance and accessibility" : "Megjelenés és akadálymentesítés",
+ "Dark theme with high contrast mode" : "Sötét téma magas kontrasztú móddal",
+ "Enable dark high contrast mode" : "Sötét, magas kontrasztú mód engedélyezése",
+ "Similar to the high contrast mode, but with dark colours." : "Hasonló a magas kontrasztú módhoz, de sötét színekkel.",
"Dark theme" : "Sötét téma",
"Enable dark theme" : "Sötét téma engedélyezése",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "A sötét téma csökkenti a szemek terhelését az átlagos fényesség és fényerő csökkentésével. Még mindig fejlesztés alatt áll, így jelentse ha problémát talál.",
+ "Light theme" : "Világos téma",
+ "Enable the default light theme" : "Alapértelmezett világos téma engedélyezése",
+ "The default light appearance." : "Az alapértelmezett világos megjelenés.",
"Dyslexia font" : "Diszlexia betűkészlet",
"Enable dyslexia font" : "Diszlexia betűkészlet engedélyezése",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "Az OpenDyslexic egy szabad betűkészlet, amely egyes, diszlexia által okozott, gyakori olvasási hibák csökkentésére lett tervezve.",
diff --git a/apps/theming/l10n/it.js b/apps/theming/l10n/it.js
index cc110c3aba6..022d69dc0fc 100644
--- a/apps/theming/l10n/it.js
+++ b/apps/theming/l10n/it.js
@@ -26,9 +26,16 @@ OC.L10N.register(
"No file uploaded" : "Nessun file caricato",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Stai già utilizzando un tema personalizzato. Le impostazioni dell'applicazione dei temi potrebbero essere sovrascritte.",
"Theming" : "Tema",
+ "Appearance and accessibility" : "Aspetto e accessibilità",
+ "Dark theme with high contrast mode" : "Tema scuro con modalità di contrasto elevato",
+ "Enable dark high contrast mode" : "Abilita la modalità scuro ad alto contrasto",
+ "Similar to the high contrast mode, but with dark colours." : "Simile alla modalità a contrasto elevato, ma con colori scuri.",
"Dark theme" : "Tema scuro",
"Enable dark theme" : "Abilita il tema scuro",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Un tema scuro per facilitare i tuoi occhi riducendo la luminosità complessiva. È ancora in fase di sviluppo, per cui ti chiediamo di segnalare qualsiasi problema tu possa trovare.",
+ "Light theme" : "Tema leggero",
+ "Enable the default light theme" : "Abilita il tema leggero predefinito",
+ "The default light appearance." : "L'aspetto predefinito del tema leggero.",
"Dyslexia font" : "Carattere per dislessici",
"Enable dyslexia font" : "Abilita il carattere per dislessici",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic è un carattere libero progettato per mitigare alcuni dei comuni errori di lettura causati dalla dislessia.",
diff --git a/apps/theming/l10n/it.json b/apps/theming/l10n/it.json
index 76a6af7d62c..9879e68c0cd 100644
--- a/apps/theming/l10n/it.json
+++ b/apps/theming/l10n/it.json
@@ -24,9 +24,16 @@
"No file uploaded" : "Nessun file caricato",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Stai già utilizzando un tema personalizzato. Le impostazioni dell'applicazione dei temi potrebbero essere sovrascritte.",
"Theming" : "Tema",
+ "Appearance and accessibility" : "Aspetto e accessibilità",
+ "Dark theme with high contrast mode" : "Tema scuro con modalità di contrasto elevato",
+ "Enable dark high contrast mode" : "Abilita la modalità scuro ad alto contrasto",
+ "Similar to the high contrast mode, but with dark colours." : "Simile alla modalità a contrasto elevato, ma con colori scuri.",
"Dark theme" : "Tema scuro",
"Enable dark theme" : "Abilita il tema scuro",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Un tema scuro per facilitare i tuoi occhi riducendo la luminosità complessiva. È ancora in fase di sviluppo, per cui ti chiediamo di segnalare qualsiasi problema tu possa trovare.",
+ "Light theme" : "Tema leggero",
+ "Enable the default light theme" : "Abilita il tema leggero predefinito",
+ "The default light appearance." : "L'aspetto predefinito del tema leggero.",
"Dyslexia font" : "Carattere per dislessici",
"Enable dyslexia font" : "Abilita il carattere per dislessici",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic è un carattere libero progettato per mitigare alcuni dei comuni errori di lettura causati dalla dislessia.",
diff --git a/apps/theming/l10n/pl.js b/apps/theming/l10n/pl.js
index 3099f7af9d1..360178b9092 100644
--- a/apps/theming/l10n/pl.js
+++ b/apps/theming/l10n/pl.js
@@ -26,9 +26,16 @@ OC.L10N.register(
"No file uploaded" : "Nie wysłano pliku",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Używasz już własnego motywu. Ustawienia aplikacji Theming mogą zostać nadpisane.",
"Theming" : "Motyw",
+ "Appearance and accessibility" : "Wygląd i dostępność",
+ "Dark theme with high contrast mode" : "Ciemny motyw z trybem wysokiego kontrastu",
+ "Enable dark high contrast mode" : "Włącz ciemny tryb wysokiego kontrastu",
+ "Similar to the high contrast mode, but with dark colours." : "Podobny do trybu wysokiego kontrastu, ale z ciemnymi kolorami.",
"Dark theme" : "Ciemny motyw",
"Enable dark theme" : "Włącz ciemny motyw",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Ciemny motyw, który łagodzi zmęczenie oczu, zmniejszając ogólną jasność. Nadal jest w fazie rozwoju, więc zgłaszaj wszelkie zauważone błędy.",
+ "Light theme" : "Jasny motyw",
+ "Enable the default light theme" : "Włącz domyślny jasny motyw",
+ "The default light appearance." : "Domyślny jasny wygląd.",
"Dyslexia font" : "Czcionka dla dyslektyków",
"Enable dyslexia font" : "Włącz czcionkę dla dyslektyków",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic to darmowa czcionka zaprojektowana w celu zmniejszenia niektórych typowych błędów w czytaniu spowodowanych dysleksją.",
diff --git a/apps/theming/l10n/pl.json b/apps/theming/l10n/pl.json
index 28f0fbcaa07..b10824a9a00 100644
--- a/apps/theming/l10n/pl.json
+++ b/apps/theming/l10n/pl.json
@@ -24,9 +24,16 @@
"No file uploaded" : "Nie wysłano pliku",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Używasz już własnego motywu. Ustawienia aplikacji Theming mogą zostać nadpisane.",
"Theming" : "Motyw",
+ "Appearance and accessibility" : "Wygląd i dostępność",
+ "Dark theme with high contrast mode" : "Ciemny motyw z trybem wysokiego kontrastu",
+ "Enable dark high contrast mode" : "Włącz ciemny tryb wysokiego kontrastu",
+ "Similar to the high contrast mode, but with dark colours." : "Podobny do trybu wysokiego kontrastu, ale z ciemnymi kolorami.",
"Dark theme" : "Ciemny motyw",
"Enable dark theme" : "Włącz ciemny motyw",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Ciemny motyw, który łagodzi zmęczenie oczu, zmniejszając ogólną jasność. Nadal jest w fazie rozwoju, więc zgłaszaj wszelkie zauważone błędy.",
+ "Light theme" : "Jasny motyw",
+ "Enable the default light theme" : "Włącz domyślny jasny motyw",
+ "The default light appearance." : "Domyślny jasny wygląd.",
"Dyslexia font" : "Czcionka dla dyslektyków",
"Enable dyslexia font" : "Włącz czcionkę dla dyslektyków",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic to darmowa czcionka zaprojektowana w celu zmniejszenia niektórych typowych błędów w czytaniu spowodowanych dysleksją.",
diff --git a/apps/theming/l10n/zh_TW.js b/apps/theming/l10n/zh_TW.js
index 36f4118e63a..515ab376714 100644
--- a/apps/theming/l10n/zh_TW.js
+++ b/apps/theming/l10n/zh_TW.js
@@ -26,9 +26,16 @@ OC.L10N.register(
"No file uploaded" : "未上傳檔案",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "您已經在使用自訂佈景主題。佈景主題應用程式設定可能會被覆寫。",
"Theming" : "佈景主題",
+ "Appearance and accessibility" : "外觀與無障礙存取",
+ "Dark theme with high contrast mode" : "有高對比模式的深色主題",
+ "Enable dark high contrast mode" : "啟用深色高對比模式",
+ "Similar to the high contrast mode, but with dark colours." : "類似於高對比模式,但顏色較深。",
"Dark theme" : "深色主題",
"Enable dark theme" : "啟用深色主題",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "黑暗風格的主題,通過降低整體亮度來舒緩對您眼睛的刺激。深色主題仍在開發中,如發現任何問題,煩請報告。",
+ "Light theme" : "淺色佈景主題",
+ "Enable the default light theme" : "啟用預設的淺色佈景主題",
+ "The default light appearance." : "預設的淺色外觀。",
"Dyslexia font" : "閱讀障礙字型",
"Enable dyslexia font" : "啟用閱讀障礙字型",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic 是一種免費的字型,目的在降低因拼音文字閱讀障礙引起的一些常見閱讀錯誤。",
diff --git a/apps/theming/l10n/zh_TW.json b/apps/theming/l10n/zh_TW.json
index 47cc4012090..4ced46098e8 100644
--- a/apps/theming/l10n/zh_TW.json
+++ b/apps/theming/l10n/zh_TW.json
@@ -24,9 +24,16 @@
"No file uploaded" : "未上傳檔案",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "您已經在使用自訂佈景主題。佈景主題應用程式設定可能會被覆寫。",
"Theming" : "佈景主題",
+ "Appearance and accessibility" : "外觀與無障礙存取",
+ "Dark theme with high contrast mode" : "有高對比模式的深色主題",
+ "Enable dark high contrast mode" : "啟用深色高對比模式",
+ "Similar to the high contrast mode, but with dark colours." : "類似於高對比模式,但顏色較深。",
"Dark theme" : "深色主題",
"Enable dark theme" : "啟用深色主題",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "黑暗風格的主題,通過降低整體亮度來舒緩對您眼睛的刺激。深色主題仍在開發中,如發現任何問題,煩請報告。",
+ "Light theme" : "淺色佈景主題",
+ "Enable the default light theme" : "啟用預設的淺色佈景主題",
+ "The default light appearance." : "預設的淺色外觀。",
"Dyslexia font" : "閱讀障礙字型",
"Enable dyslexia font" : "啟用閱讀障礙字型",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic 是一種免費的字型,目的在降低因拼音文字閱讀障礙引起的一些常見閱讀錯誤。",
diff --git a/apps/theming/lib/Service/ThemesService.php b/apps/theming/lib/Service/ThemesService.php
index 01ebc3fb504..43977721e76 100644
--- a/apps/theming/lib/Service/ThemesService.php
+++ b/apps/theming/lib/Service/ThemesService.php
@@ -29,6 +29,7 @@ use OCA\Theming\Themes\DarkTheme;
use OCA\Theming\Themes\DefaultTheme;
use OCA\Theming\Themes\DyslexiaFont;
use OCA\Theming\Themes\HighContrastTheme;
+use OCA\Theming\Themes\LightTheme;
use OCP\IConfig;
use OCP\IUser;
use OCP\IUserSession;
@@ -43,6 +44,7 @@ class ThemesService {
public function __construct(IUserSession $userSession,
IConfig $config,
DefaultTheme $defaultTheme,
+ LightTheme $lightTheme,
DarkTheme $darkTheme,
HighContrastTheme $highContrastTheme,
DarkHighContrastTheme $darkHighContrastTheme,
@@ -53,6 +55,7 @@ class ThemesService {
// Register themes
$this->themesProviders = [
$defaultTheme->getId() => $defaultTheme,
+ $lightTheme->getId() => $lightTheme,
$darkTheme->getId() => $darkTheme,
$highContrastTheme->getId() => $highContrastTheme,
$darkHighContrastTheme->getId() => $darkHighContrastTheme,
diff --git a/apps/theming/lib/Themes/DarkTheme.php b/apps/theming/lib/Themes/DarkTheme.php
index f0cacfc1696..b2dc1dcea72 100644
--- a/apps/theming/lib/Themes/DarkTheme.php
+++ b/apps/theming/lib/Themes/DarkTheme.php
@@ -69,6 +69,11 @@ class DarkTheme extends DefaultTheme implements ITheme {
'--color-placeholder-light' => $this->util->lighten($colorMainBackground, 10),
'--color-placeholder-dark' => $this->util->lighten($colorMainBackground, 20),
+ '--color-primary-hover' => $this->util->mix($this->primaryColor, $colorMainBackground, 60),
+ '--color-primary-light' => $this->util->mix($this->primaryColor, $colorMainBackground, -80),
+ '--color-primary-element-hover' => $this->util->mix($this->util->elementColor($this->primaryColor), $colorMainBackground, 80),
+ '--color-primary-element-lighter' => $this->util->mix($this->util->elementColor($this->primaryColor), $colorMainBackground, -70),
+
'--color-text-maxcontrast' => $this->util->darken($colorMainText, 30),
'--color-text-light' => $this->util->darken($colorMainText, 10),
'--color-text-lighter' => $this->util->darken($colorMainText, 20),
diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php
index 7efd8f133d7..b13e481907a 100644
--- a/apps/theming/lib/Themes/DefaultTheme.php
+++ b/apps/theming/lib/Themes/DefaultTheme.php
@@ -67,15 +67,15 @@ class DefaultTheme implements ITheme {
}
public function getTitle(): string {
- return $this->l->t('Light theme');
+ return $this->l->t('System default theme');
}
public function getEnableLabel(): string {
- return $this->l->t('Enable the default light theme');
+ return $this->l->t('Enable the system default');
}
public function getDescription(): string {
- return $this->l->t('The default light appearance.');
+ return $this->l->t('Using the default system appearance.');
}
public function getMediaQuery(): string {
@@ -108,16 +108,16 @@ class DefaultTheme implements ITheme {
// primary related colours
'--color-primary' => $this->primaryColor,
'--color-primary-text' => $this->util->invertTextColor($this->primaryColor) ? '#000000' : '#ffffff',
- '--color-primary-hover' => $this->util->mix($this->primaryColor, $colorMainBackground, 80),
- '--color-primary-light' => $this->util->mix($this->primaryColor, $colorMainBackground, 10),
+ '--color-primary-hover' => $this->util->mix($this->primaryColor, $colorMainBackground, 60),
+ '--color-primary-light' => $this->util->mix($this->primaryColor, $colorMainBackground, -80),
'--color-primary-light-text' => $this->primaryColor,
- '--color-primary-light-hover' => $this->util->mix($this->primaryColor, $colorMainText, 10),
+ '--color-primary-light-hover' => $this->util->mix($this->primaryColor, $colorMainText, -80),
'--color-primary-text-dark' => $this->util->darken($this->util->invertTextColor($this->primaryColor) ? '#000000' : '#ffffff', 7),
// used for buttons, inputs...
'--color-primary-element' => $this->util->elementColor($this->primaryColor),
'--color-primary-element-hover' => $this->util->mix($this->util->elementColor($this->primaryColor), $colorMainBackground, 80),
'--color-primary-element-light' => $this->util->lighten($this->util->elementColor($this->primaryColor), 15),
- '--color-primary-element-lighter' => $this->util->mix($this->util->elementColor($this->primaryColor), $colorMainBackground, 15),
+ '--color-primary-element-lighter' => $this->util->mix($this->util->elementColor($this->primaryColor), $colorMainBackground, -70),
// max contrast for WCAG compliance
'--color-main-text' => $colorMainText,
@@ -127,11 +127,11 @@ class DefaultTheme implements ITheme {
// info/warning/success feedback colours
'--color-error' => '#e9322d',
- '--color-error-hover' => $this->util->mix('#e9322d', $colorMainBackground, 80),
+ '--color-error-hover' => $this->util->mix('#e9322d', $colorMainBackground, 60),
'--color-warning' => '#eca700',
- '--color-warning-hover' => $this->util->mix('#eca700', $colorMainBackground, 80),
+ '--color-warning-hover' => $this->util->mix('#eca700', $colorMainBackground, 60),
'--color-success' => '#46ba61',
- '--color-success-hover' => $this->util->mix('#46ba61', $colorMainBackground, 80),
+ '--color-success-hover' => $this->util->mix('#46ba61', $colorMainBackground, 60),
// used for the icon loading animation
'--color-loading-light' => '#cccccc',
diff --git a/apps/theming/lib/Themes/LightTheme.php b/apps/theming/lib/Themes/LightTheme.php
new file mode 100644
index 00000000000..e988f612226
--- /dev/null
+++ b/apps/theming/lib/Themes/LightTheme.php
@@ -0,0 +1,61 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\Theming\Themes;
+
+use OCA\Theming\ImageManager;
+use OCA\Theming\ThemingDefaults;
+use OCA\Theming\Util;
+use OCA\Theming\ITheme;
+use OCA\Theming\Themes\DefaultTheme;
+use OCP\IConfig;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+
+class LightTheme extends DefaultTheme implements ITheme {
+
+ public function getId(): string {
+ return 'light';
+ }
+
+ public function getType(): int {
+ return ITheme::TYPE_THEME;
+ }
+
+ public function getTitle(): string {
+ return $this->l->t('Light theme');
+ }
+
+ public function getEnableLabel(): string {
+ return $this->l->t('Enable the default light theme');
+ }
+
+ public function getDescription(): string {
+ return $this->l->t('The default light appearance.');
+ }
+
+ public function getMediaQuery(): string {
+ return '(prefers-color-scheme: light)';
+ }
+}
diff --git a/apps/theming/tests/Controller/UserThemeControllerTest.php b/apps/theming/tests/Controller/UserThemeControllerTest.php
index b925085bf41..952cd012210 100644
--- a/apps/theming/tests/Controller/UserThemeControllerTest.php
+++ b/apps/theming/tests/Controller/UserThemeControllerTest.php
@@ -30,6 +30,7 @@ use OCA\Theming\Themes\DefaultTheme;
use OCA\Theming\Themes\DyslexiaFont;
use OCA\Theming\Themes\HighContrastTheme;
use OCA\Theming\Service\ThemesService;
+use OCA\Theming\Themes\LightTheme;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSBadRequestException;
use OCP\IConfig;
@@ -63,6 +64,7 @@ class UserThemeControllerTest extends TestCase {
$this->themes = [
'default' => $this->createMock(DefaultTheme::class),
+ 'light' => $this->createMock(LightTheme::class),
'dark' => $this->createMock(DarkTheme::class),
'highcontrast' => $this->createMock(HighContrastTheme::class),
'dark-highcontrast' => $this->createMock(DarkHighContrastTheme::class),
@@ -91,6 +93,7 @@ class UserThemeControllerTest extends TestCase {
public function dataTestThemes() {
return [
['default'],
+ ['light'],
['dark'],
['highcontrast'],
['dark-highcontrast'],
diff --git a/apps/theming/tests/Service/ThemesServiceTest.php b/apps/theming/tests/Service/ThemesServiceTest.php
index 56f96d29637..5865875cbb8 100644
--- a/apps/theming/tests/Service/ThemesServiceTest.php
+++ b/apps/theming/tests/Service/ThemesServiceTest.php
@@ -31,6 +31,7 @@ use OCA\Theming\Themes\DefaultTheme;
use OCA\Theming\Themes\DyslexiaFont;
use OCA\Theming\Themes\HighContrastTheme;
use OCA\Theming\Service\ThemesService;
+use OCA\Theming\Themes\LightTheme;
use OCA\Theming\ThemingDefaults;
use OCA\Theming\Util;
use OCP\AppFramework\Http\DataResponse;
@@ -81,6 +82,7 @@ class ThemesServiceTest extends TestCase {
public function testGetThemes() {
$expected = [
'default',
+ 'light',
'dark',
'highcontrast',
'dark-highcontrast',
@@ -92,6 +94,7 @@ class ThemesServiceTest extends TestCase {
public function dataTestEnableTheme() {
return [
+ ['default', [], ['default']],
['dark', [], ['dark']],
['dark', ['dark'], ['dark']],
['opendyslexic', ['dark'], ['dark', 'opendyslexic']],
@@ -207,6 +210,14 @@ class ThemesServiceTest extends TestCase {
$this->config,
$l10n,
),
+ 'light' => new LightTheme(
+ $util,
+ $this->themingDefaults,
+ $urlGenerator,
+ $imageManager,
+ $this->config,
+ $l10n,
+ ),
'dark' => new DarkTheme(
$util,
$this->themingDefaults,
diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php
index 486e7c7a1e5..160efdba142 100644
--- a/apps/theming/tests/Themes/DefaultThemeTest.php
+++ b/apps/theming/tests/Themes/DefaultThemeTest.php
@@ -97,15 +97,15 @@ class DefaultThemeTest extends TestCase {
}
public function testGetTitle() {
- $this->assertEquals('Light theme', $this->defaultTheme->getTitle());
+ $this->assertEquals('System default theme', $this->defaultTheme->getTitle());
}
public function testGetEnableLabel() {
- $this->assertEquals('Enable the default light theme', $this->defaultTheme->getEnableLabel());
+ $this->assertEquals('Enable the system default', $this->defaultTheme->getEnableLabel());
}
public function testGetDescription() {
- $this->assertEquals('The default light appearance.', $this->defaultTheme->getDescription());
+ $this->assertEquals('Using the default system appearance.', $this->defaultTheme->getDescription());
}
public function testGetMediaQuery() {
@@ -127,7 +127,7 @@ class DefaultThemeTest extends TestCase {
$variables .= " $variable: $value;" . PHP_EOL;
};
- $css = ":root { " . PHP_EOL . "$variables}" . PHP_EOL;
+ $css = ":root {" . PHP_EOL . "$variables}" . PHP_EOL;
$fallbackCss = file_get_contents(__DIR__ . '/../../css/default.css');
$this->assertEquals($css, $fallbackCss);
diff --git a/apps/updatenotification/l10n/bg.js b/apps/updatenotification/l10n/bg.js
index 366b94e67cb..0c8e87b469e 100644
--- a/apps/updatenotification/l10n/bg.js
+++ b/apps/updatenotification/l10n/bg.js
@@ -16,6 +16,7 @@ OC.L10N.register(
"Apps missing compatible version" : "Липсва съвместима версия на приложенията",
"View in store" : "Преглед в магазина",
"Apps with compatible version" : "Приложения със съвместима версия",
+ "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Моля, имайте предвид, че уеб актуализатора не се препоръчва за използване от повече от 100 потребители! Моля, вместо това използвайте програмата за актуализиране на командния ред!",
"Open updater" : "Отвори актуализиращата програма",
"Download now" : "Свали сега",
"Please use the command line updater to update." : "Моля, използвайте програмата за актуализиране на командния ред, за да актуализирате.",
@@ -23,6 +24,7 @@ OC.L10N.register(
"The update check is not yet finished. Please refresh the page." : "Проверката за актуализации не е приключила. Заредете страницата отново.",
"Your version is up to date." : "Ползвате последната версия.",
"A non-default update server is in use to be checked for updates:" : "Проверката за налични актуализации се извършва чрез сървър, който е различен от стандартния:",
+ "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Можете да промените канала за актуализиране по-долу, който също засяга страницата за управление на приложения. Например, след като преминете към бета канала, актуализациите на бета приложенията ще ви бъдат предложени в страницата за управление на приложенията.",
"Update channel:" : "Канал за актуализиране:",
"You can always update to a newer version. But you can never downgrade to a more stable version." : "Винаги може да актуализирате до по-нова версия. Но не може да се върнете до по-стабилна (по-стара) версия.",
"Notify members of the following groups about available updates:" : "Известявай следните групи при наличие на актуализация:",
@@ -35,6 +37,7 @@ OC.L10N.register(
"Checking apps for compatible versions" : "Проверка на приложенията за съвместими версии",
"Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Моля, уверете се, че в config.php не е зададено <samp>appstoreenabled</samp> на false.",
"Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Свързването с магазина за приложения App Store не е възможно или изобщо не са върнати актуализации. Търсете ръчно за актуализации или се уверете, че вашият сървър има достъп до интернет и може да се свърже с App Store.",
+ "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "<strong>Всички</strong> приложения имат налична съвместима версия за тази версия на Nextcloud.",
"View changelog" : "Преглед на списъка с промени",
"Enterprise" : "Предприятие",
"For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package." : "За професионална употреба. Осигурява винаги най-новото ниво на корекция, но няма да се актуализира веднага до следващото голямо издание. Тази актуализация се случва, след като Nextcloud GmbH направи допълнително подсилване и тестване за широкомащабни и критични за мисията внедрявания. Този канал е достъпен само за клиенти и доставчици на пакета Nextcloud Enterprise.",
@@ -42,6 +45,7 @@ OC.L10N.register(
"The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Последната стабилна версия. Подходяща е за ежедневно ползване и се актуализации до последната главна версия.",
"Beta" : "Бета",
"A pre-release version only for testing new features, not for production environments." : "Версия само за тестване на нови функционалности, която не е подходяща за ползване в производствена среда.",
+ "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["<strong>%n</strong> приложения нямат налична съвместима версия за тази версия на Nextcloud.","<strong>%n</strong> от приложенията нямат налична съвместима версия за тази версия на Nextcloud."],
"Apps missing updates" : "Приложения без актуализация",
"Apps with available updates" : "Приложенията, с налични актуализации",
"Only notification for app updates are available." : "Налични са само известия за актуализации на приложенията.",
diff --git a/apps/updatenotification/l10n/bg.json b/apps/updatenotification/l10n/bg.json
index 88a1d48ac8b..b6c8a79222a 100644
--- a/apps/updatenotification/l10n/bg.json
+++ b/apps/updatenotification/l10n/bg.json
@@ -14,6 +14,7 @@
"Apps missing compatible version" : "Липсва съвместима версия на приложенията",
"View in store" : "Преглед в магазина",
"Apps with compatible version" : "Приложения със съвместима версия",
+ "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Моля, имайте предвид, че уеб актуализатора не се препоръчва за използване от повече от 100 потребители! Моля, вместо това използвайте програмата за актуализиране на командния ред!",
"Open updater" : "Отвори актуализиращата програма",
"Download now" : "Свали сега",
"Please use the command line updater to update." : "Моля, използвайте програмата за актуализиране на командния ред, за да актуализирате.",
@@ -21,6 +22,7 @@
"The update check is not yet finished. Please refresh the page." : "Проверката за актуализации не е приключила. Заредете страницата отново.",
"Your version is up to date." : "Ползвате последната версия.",
"A non-default update server is in use to be checked for updates:" : "Проверката за налични актуализации се извършва чрез сървър, който е различен от стандартния:",
+ "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Можете да промените канала за актуализиране по-долу, който също засяга страницата за управление на приложения. Например, след като преминете към бета канала, актуализациите на бета приложенията ще ви бъдат предложени в страницата за управление на приложенията.",
"Update channel:" : "Канал за актуализиране:",
"You can always update to a newer version. But you can never downgrade to a more stable version." : "Винаги може да актуализирате до по-нова версия. Но не може да се върнете до по-стабилна (по-стара) версия.",
"Notify members of the following groups about available updates:" : "Известявай следните групи при наличие на актуализация:",
@@ -33,6 +35,7 @@
"Checking apps for compatible versions" : "Проверка на приложенията за съвместими версии",
"Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Моля, уверете се, че в config.php не е зададено <samp>appstoreenabled</samp> на false.",
"Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Свързването с магазина за приложения App Store не е възможно или изобщо не са върнати актуализации. Търсете ръчно за актуализации или се уверете, че вашият сървър има достъп до интернет и може да се свърже с App Store.",
+ "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "<strong>Всички</strong> приложения имат налична съвместима версия за тази версия на Nextcloud.",
"View changelog" : "Преглед на списъка с промени",
"Enterprise" : "Предприятие",
"For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package." : "За професионална употреба. Осигурява винаги най-новото ниво на корекция, но няма да се актуализира веднага до следващото голямо издание. Тази актуализация се случва, след като Nextcloud GmbH направи допълнително подсилване и тестване за широкомащабни и критични за мисията внедрявания. Този канал е достъпен само за клиенти и доставчици на пакета Nextcloud Enterprise.",
@@ -40,6 +43,7 @@
"The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Последната стабилна версия. Подходяща е за ежедневно ползване и се актуализации до последната главна версия.",
"Beta" : "Бета",
"A pre-release version only for testing new features, not for production environments." : "Версия само за тестване на нови функционалности, която не е подходяща за ползване в производствена среда.",
+ "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["<strong>%n</strong> приложения нямат налична съвместима версия за тази версия на Nextcloud.","<strong>%n</strong> от приложенията нямат налична съвместима версия за тази версия на Nextcloud."],
"Apps missing updates" : "Приложения без актуализация",
"Apps with available updates" : "Приложенията, с налични актуализации",
"Only notification for app updates are available." : "Налични са само известия за актуализации на приложенията.",
diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js
index f286300d44e..f5f3ced3519 100644
--- a/apps/updatenotification/l10n/de.js
+++ b/apps/updatenotification/l10n/de.js
@@ -54,6 +54,6 @@ OC.L10N.register(
"<strong>All</strong> apps have an update for this version available" : "Für <strong>alle</strong> Apps steht eine Aktualisierung zur Verfügung",
"_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["Für <strong>%n</strong> App steht keine Aktualisierung für diese Version zur Verfügung","Für <strong>%n</strong> Apps stehen keine Aktualisierungen für diese Version zur Verfügung"],
"<strong>All</strong> apps have a compatible version for this Nextcloud version available" : "Für <strong>alle</strong> Apps steht eine kompatible Version zur Verfügung",
- "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["Für <strong>%n</strong> App steht eine kompatible Version zur Verfügung","Für <strong>%n</strong> Apps steht eine kompatible Version zur Verfügung"]
+ "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["Für <strong>%n</strong> App steht keine kompatible Version zur Verfügung","Für <strong>%n</strong> Apps steht keine kompatible Version zur Verfügung"]
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json
index 5f2a0bbc674..d92ea5d60e2 100644
--- a/apps/updatenotification/l10n/de.json
+++ b/apps/updatenotification/l10n/de.json
@@ -52,6 +52,6 @@
"<strong>All</strong> apps have an update for this version available" : "Für <strong>alle</strong> Apps steht eine Aktualisierung zur Verfügung",
"_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["Für <strong>%n</strong> App steht keine Aktualisierung für diese Version zur Verfügung","Für <strong>%n</strong> Apps stehen keine Aktualisierungen für diese Version zur Verfügung"],
"<strong>All</strong> apps have a compatible version for this Nextcloud version available" : "Für <strong>alle</strong> Apps steht eine kompatible Version zur Verfügung",
- "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["Für <strong>%n</strong> App steht eine kompatible Version zur Verfügung","Für <strong>%n</strong> Apps steht eine kompatible Version zur Verfügung"]
+ "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["Für <strong>%n</strong> App steht keine kompatible Version zur Verfügung","Für <strong>%n</strong> Apps steht keine kompatible Version zur Verfügung"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/it.js b/apps/updatenotification/l10n/it.js
index 2fd6e1e9599..cc8aec29ba8 100644
--- a/apps/updatenotification/l10n/it.js
+++ b/apps/updatenotification/l10n/it.js
@@ -16,6 +16,7 @@ OC.L10N.register(
"Apps missing compatible version" : "Applicazioni senza versione compatibile",
"View in store" : "Visualizza nel negozio",
"Apps with compatible version" : "Applicazioni con versione compatibile",
+ "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Tieni presente che il programma di aggiornamento web non è consigliato con più di 100 utenti! Si prega di utilizzare, invece, il programma di aggiornamento tramite riga di comando!",
"Open updater" : "Apri strumento di aggiornamento",
"Download now" : "Scarica ora",
"Please use the command line updater to update." : "Usa lo strumento di aggiornamento da riga di comando per aggiornare.",
diff --git a/apps/updatenotification/l10n/it.json b/apps/updatenotification/l10n/it.json
index 813053c23e9..1bd5ffb00cc 100644
--- a/apps/updatenotification/l10n/it.json
+++ b/apps/updatenotification/l10n/it.json
@@ -14,6 +14,7 @@
"Apps missing compatible version" : "Applicazioni senza versione compatibile",
"View in store" : "Visualizza nel negozio",
"Apps with compatible version" : "Applicazioni con versione compatibile",
+ "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Tieni presente che il programma di aggiornamento web non è consigliato con più di 100 utenti! Si prega di utilizzare, invece, il programma di aggiornamento tramite riga di comando!",
"Open updater" : "Apri strumento di aggiornamento",
"Download now" : "Scarica ora",
"Please use the command line updater to update." : "Usa lo strumento di aggiornamento da riga di comando per aggiornare.",
diff --git a/apps/user_status/css/user-status-menu.scss b/apps/user_status/css/user-status-menu.scss
index 09dfd3124f8..0591bf15748 100644
--- a/apps/user_status/css/user-status-menu.scss
+++ b/apps/user_status/css/user-status-menu.scss
@@ -24,10 +24,6 @@
@include icon-color('app', 'user_status', $color-black, 1);
}
-body.theme--dark .icon-user-status {
- @include icon-color('app', 'user_status', $color-white, 1);
-}
-
.icon-user-status-online {
background-image: url('../img/user-status-online.svg');
}
@@ -44,7 +40,3 @@ body.theme--dark .icon-user-status {
.icon-user-status-invisible {
@include icon-color('user-status-invisible', 'user_status', $color-black, 1);
}
-
-body.theme--dark .icon-user-status-invisible {
- @include icon-color('user-status-invisible', 'user_status', $color-white, 1);
-}
diff --git a/apps/user_status/src/views/Dashboard.vue b/apps/user_status/src/views/Dashboard.vue
index 629a28abeb5..b8f68d77fdc 100644
--- a/apps/user_status/src/views/Dashboard.vue
+++ b/apps/user_status/src/views/Dashboard.vue
@@ -37,8 +37,10 @@
</DashboardWidgetItem>
</template>
<template #empty-content>
- <EmptyContent id="user_status-widget-empty-content"
- icon="icon-user-status">
+ <EmptyContent id="user_status-widget-empty-content">
+ <template #icon>
+ <div class="icon-user-status" />
+ </template>
{{ t('user_status', 'No recent status changes') }}
</EmptyContent>
</template>
@@ -47,9 +49,9 @@
<script>
import { DashboardWidget, DashboardWidgetItem } from '@nextcloud/vue-dashboard'
+import { loadState } from '@nextcloud/initial-state'
import Avatar from '@nextcloud/vue/dist/Components/Avatar'
import EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'
-import { loadState } from '@nextcloud/initial-state'
import moment from '@nextcloud/moment'
export default {
@@ -118,5 +120,11 @@ export default {
#user_status-widget-empty-content {
text-align: center;
margin-top: 5vh;
+ .icon-user-status {
+ width: 64px;
+ height: 64px;
+ background-size: 64px;
+ filter: var(--background-invert-if-dark);
+ }
}
</style>
diff --git a/apps/weather_status/l10n/bg.js b/apps/weather_status/l10n/bg.js
index 257258847e3..4875bcab0bb 100644
--- a/apps/weather_status/l10n/bg.js
+++ b/apps/weather_status/l10n/bg.js
@@ -11,6 +11,28 @@ OC.L10N.register(
"Detect location" : "Откриване на местоположение",
"Set custom address" : "Задаване на персонализиран адрес",
"Favorites" : "Любими",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} по късно днес небето ще е ясно",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ясно",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} по късно днес ще е облачно",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} облачно",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} по-късно днес времето ще е хубаво",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} хубаво време",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} по късно днес ще има частична облачност",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} частична облачност",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} по късно днес ще е мъгливо",
+ "{temperature} {unit} foggy" : "{temperature} {unit} мъгливо",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} по късно днес ще има слаби валежи",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} слаби валежи",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} по късно днес ще има валежи",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} дъжд",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} по късно днес ще има силни валежи",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} силни валежи",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} по късно днес ще има превалявания от дъжд",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} превалявания от дъжд",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} по късно днес ще има леки превалявания от дъжд",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} леки превалявания от дъжд",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} по късно днес ще има обилни превалявания от дъжд",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} обилни превалявания от дъжд",
"More weather for {adr}" : "Още за времето за {adr}",
"Loading weather" : "Зареждане на времето",
"Remove from favorites" : "Премахни от любимите",
@@ -26,8 +48,8 @@ OC.L10N.register(
"Set location for weather" : "Задаване на местоположение за метеорологично време",
"{temperature} {unit} Clear sky at {time}" : "{temperature} {unit} Ясно небе в {time}",
"{temperature} {unit} Cloudy at {time}" : "{temperature} {unit} Облачно в {time}",
- "{temperature} {unit} Fair day at {time}" : "{temperature} {unit} Задоволителен ден в {time}",
- "{temperature} {unit} Fair night at {time}" : "{temperature} {unit} Задоволителна нощ в {time}",
+ "{temperature} {unit} Fair day at {time}" : "{temperature} {unit} Хубаво време през деня в {time}",
+ "{temperature} {unit} Fair night at {time}" : "{temperature} {unit} Хубаво време през нощта в {time}",
"{temperature} {unit} Partly cloudy at {time}" : "{temperature} {unit} Частична облачност в {time}",
"{temperature} {unit} Foggy at {time}" : "{temperature} {unit} Мъгливо в {time}",
"{temperature} {unit} Light rain at {time}" : "{temperature} {unit} Слаб дъжд в {time}",
diff --git a/apps/weather_status/l10n/bg.json b/apps/weather_status/l10n/bg.json
index dee4a8fbea7..d227bf466ea 100644
--- a/apps/weather_status/l10n/bg.json
+++ b/apps/weather_status/l10n/bg.json
@@ -9,6 +9,28 @@
"Detect location" : "Откриване на местоположение",
"Set custom address" : "Задаване на персонализиран адрес",
"Favorites" : "Любими",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} по късно днес небето ще е ясно",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ясно",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} по късно днес ще е облачно",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} облачно",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} по-късно днес времето ще е хубаво",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} хубаво време",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} по късно днес ще има частична облачност",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} частична облачност",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} по късно днес ще е мъгливо",
+ "{temperature} {unit} foggy" : "{temperature} {unit} мъгливо",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} по късно днес ще има слаби валежи",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} слаби валежи",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} по късно днес ще има валежи",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} дъжд",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} по късно днес ще има силни валежи",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} силни валежи",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} по късно днес ще има превалявания от дъжд",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} превалявания от дъжд",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} по късно днес ще има леки превалявания от дъжд",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} леки превалявания от дъжд",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} по късно днес ще има обилни превалявания от дъжд",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} обилни превалявания от дъжд",
"More weather for {adr}" : "Още за времето за {adr}",
"Loading weather" : "Зареждане на времето",
"Remove from favorites" : "Премахни от любимите",
@@ -24,8 +46,8 @@
"Set location for weather" : "Задаване на местоположение за метеорологично време",
"{temperature} {unit} Clear sky at {time}" : "{temperature} {unit} Ясно небе в {time}",
"{temperature} {unit} Cloudy at {time}" : "{temperature} {unit} Облачно в {time}",
- "{temperature} {unit} Fair day at {time}" : "{temperature} {unit} Задоволителен ден в {time}",
- "{temperature} {unit} Fair night at {time}" : "{temperature} {unit} Задоволителна нощ в {time}",
+ "{temperature} {unit} Fair day at {time}" : "{temperature} {unit} Хубаво време през деня в {time}",
+ "{temperature} {unit} Fair night at {time}" : "{temperature} {unit} Хубаво време през нощта в {time}",
"{temperature} {unit} Partly cloudy at {time}" : "{temperature} {unit} Частична облачност в {time}",
"{temperature} {unit} Foggy at {time}" : "{temperature} {unit} Мъгливо в {time}",
"{temperature} {unit} Light rain at {time}" : "{temperature} {unit} Слаб дъжд в {time}",
diff --git a/apps/weather_status/l10n/de.js b/apps/weather_status/l10n/de.js
index a5418ee4237..7d9339c2a8e 100644
--- a/apps/weather_status/l10n/de.js
+++ b/apps/weather_status/l10n/de.js
@@ -45,7 +45,7 @@ OC.L10N.register(
"There was an error setting the location." : "Es ist ein Fehler beim Festlegen des Standortes aufgetreten.",
"There was an error saving the mode." : "Es ist ein Fehler beim Festlegen des Modus aufgetreten.",
"There was an error using personal address." : "Es ist ein Fehler beim Verwenden der persönlichen Adresse aufgetreten.",
- "Set location for weather" : "Stelle Standort für Wetter ein.",
+ "Set location for weather" : "Standort für Wetterinformationen einstellen",
"{temperature} {unit} Clear sky at {time}" : "{temperature} {unit} Klarer Himmel um {time}",
"{temperature} {unit} Cloudy at {time}" : "{temperature} {unit} Bewölkt um {time}",
"{temperature} {unit} Fair day at {time}" : "{temperature} {unit} Heiterer Tag um {time}",
diff --git a/apps/weather_status/l10n/de.json b/apps/weather_status/l10n/de.json
index cddfd88b461..a950dc8d4d7 100644
--- a/apps/weather_status/l10n/de.json
+++ b/apps/weather_status/l10n/de.json
@@ -43,7 +43,7 @@
"There was an error setting the location." : "Es ist ein Fehler beim Festlegen des Standortes aufgetreten.",
"There was an error saving the mode." : "Es ist ein Fehler beim Festlegen des Modus aufgetreten.",
"There was an error using personal address." : "Es ist ein Fehler beim Verwenden der persönlichen Adresse aufgetreten.",
- "Set location for weather" : "Stelle Standort für Wetter ein.",
+ "Set location for weather" : "Standort für Wetterinformationen einstellen",
"{temperature} {unit} Clear sky at {time}" : "{temperature} {unit} Klarer Himmel um {time}",
"{temperature} {unit} Cloudy at {time}" : "{temperature} {unit} Bewölkt um {time}",
"{temperature} {unit} Fair day at {time}" : "{temperature} {unit} Heiterer Tag um {time}",
diff --git a/apps/weather_status/src/App.vue b/apps/weather_status/src/App.vue
index 8b96a520ef7..89482f61124 100644
--- a/apps/weather_status/src/App.vue
+++ b/apps/weather_status/src/App.vue
@@ -521,9 +521,6 @@ export default {
.icon-weather-status {
background-image: url('./../img/app-dark.svg');
}
-body.theme--dark .icon-weather-status {
- background-image: url('./../img/app.svg');
-}
.icon-clearsky-day {
background-image: url('./../img/sun.svg');
}
diff --git a/build/integration/sharing_features/sharing-v1-video-verification.feature b/build/integration/sharing_features/sharing-v1-video-verification.feature
index 9dd5261244f..cc4be425aab 100644
--- a/build/integration/sharing_features/sharing-v1-video-verification.feature
+++ b/build/integration/sharing_features/sharing-v1-video-verification.feature
@@ -3,7 +3,7 @@ Feature: sharing
Background:
Given using api version "1"
Given using old dav path
- Given invoking occ with "app:enable spreed"
+ Given invoking occ with "app:enable --force spreed"
Given the command was successful
Scenario: Creating a link share with send password by Talk
diff --git a/composer.json b/composer.json
index 929ded70796..69ac5821c92 100644
--- a/composer.json
+++ b/composer.json
@@ -25,8 +25,7 @@
"ext-pdo": "*",
"ext-simplexml": "*",
"ext-xmlreader": "*",
- "ext-zip": "*",
- "mexitek/phpcolors": "^1.0"
+ "ext-zip": "*"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4"
diff --git a/composer.lock b/composer.lock
index 69042da683c..0898d151e57 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,62 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "8f8b099365b3839a80b19e266c4ba5e4",
- "packages": [
- {
- "name": "mexitek/phpcolors",
- "version": "v1.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/mexitek/phpColors.git",
- "reference": "4043974240ca7dc3c2bec3c158588148b605b206"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mexitek/phpColors/zipball/4043974240ca7dc3c2bec3c158588148b605b206",
- "reference": "4043974240ca7dc3c2bec3c158588148b605b206",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0"
- },
- "require-dev": {
- "nette/tester": "^2.3",
- "squizlabs/php_codesniffer": "^3.5"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Arlo Carreon",
- "homepage": "http://arlocarreon.com",
- "role": "creator"
- }
- ],
- "description": "A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.",
- "homepage": "http://mexitek.github.com/phpColors/",
- "keywords": [
- "color",
- "css",
- "design",
- "frontend",
- "ui"
- ],
- "support": {
- "issues": "https://github.com/mexitek/phpColors/issues",
- "source": "https://github.com/mexitek/phpColors"
- },
- "time": "2021-11-26T13:19:08+00:00"
- }
- ],
+ "content-hash": "8333c8a239fe5ccec285dfbccc17cca4",
+ "packages": [],
"packages-dev": [
{
"name": "bamarni/composer-bin-plugin",
@@ -130,5 +76,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.2.0"
+ "plugin-api-version": "2.3.0"
}
diff --git a/config/config.sample.php b/config/config.sample.php
index 54d3d46070a..d4facbfeaff 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -1467,6 +1467,8 @@ $CONFIG = [
'region' => 'RegionOne',
// The Identity / Keystone endpoint
'url' => 'http://8.21.28.222:5000/v2.0',
+ // uploadPartSize: size of the uploaded chunks, defaults to 524288000
+ 'uploadPartSize' => 524288000,
// required on dev-/trystack
'tenantName' => 'facebook100000123456789',
// dev-/trystack uses swift by default, the lib defaults to 'cloudFiles'
diff --git a/core/Command/Db/Migrations/GenerateCommand.php b/core/Command/Db/Migrations/GenerateCommand.php
index 1710816cbba..9790a96a0fd 100644
--- a/core/Command/Db/Migrations/GenerateCommand.php
+++ b/core/Command/Db/Migrations/GenerateCommand.php
@@ -28,6 +28,7 @@ use OC\DB\Connection;
use OC\DB\MigrationService;
use OC\Migration\ConsoleOutput;
use OCP\App\IAppManager;
+use OCP\Util;
use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
use Symfony\Component\Console\Command\Command;
@@ -35,6 +36,7 @@ use Symfony\Component\Console\Exception\RuntimeException;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ConfirmationQuestion;
class GenerateCommand extends Command implements CompletionAwareInterface {
protected static $_templateSimple =
@@ -140,6 +142,36 @@ class {{classname}} extends SimpleMigrationStep {
return 1;
}
+ if ($appName === 'core') {
+ $fullVersion = implode('.', Util::getVersion());
+ } else {
+ try {
+ $fullVersion = $this->appManager->getAppVersion($appName, false);
+ } catch (\Throwable $e) {
+ $fullVersion = '';
+ }
+ }
+
+ if ($fullVersion) {
+ [$major, $minor] = explode('.', $fullVersion);
+ $shouldVersion = (int)$major * 1000 + (int)$minor;
+ if ($version !== $shouldVersion) {
+ $output->writeln('<comment>Unexpected migration version for current version: ' . $fullVersion . '</comment>');
+ $output->writeln('<comment> - Pattern: XYYY </comment>');
+ $output->writeln('<comment> - Expected: ' . $shouldVersion . '</comment>');
+ $output->writeln('<comment> - Actual: ' . $version . '</comment>');
+
+ if ($input->isInteractive()) {
+ $helper = $this->getHelper('question');
+ $question = new ConfirmationQuestion('Continue with your given version? (y/n) [n] ', false);
+
+ if (!$helper->ask($input, $output, $question)) {
+ return 1;
+ }
+ }
+ }
+ }
+
$ms = new MigrationService($appName, $this->connection, new ConsoleOutput($output));
$date = date('YmdHis');
diff --git a/core/Migrations/Version240000Date20220202150027.php b/core/Migrations/Version24000Date20220202150027.php
index b13afa67d1e..76a3ae8c73c 100644
--- a/core/Migrations/Version240000Date20220202150027.php
+++ b/core/Migrations/Version24000Date20220202150027.php
@@ -13,7 +13,7 @@ use OCP\Migration\SimpleMigrationStep;
/**
* Auto-generated migration step: Please modify to your needs!
*/
-class Version240000Date20220202150027 extends SimpleMigrationStep {
+class Version24000Date20220202150027 extends SimpleMigrationStep {
/**
* @param IOutput $output
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
diff --git a/core/Migrations/Version240000Date20220404230027.php b/core/Migrations/Version24000Date20220404230027.php
index f45f8d5b500..a650fcb7021 100644
--- a/core/Migrations/Version240000Date20220404230027.php
+++ b/core/Migrations/Version24000Date20220404230027.php
@@ -30,9 +30,9 @@ use OCP\Migration\SimpleMigrationStep;
/**
* Add oc_file_metadata table
- * @see OC\Metadata\FileMetadata
+ * @see \OC\Metadata\FileMetadata
*/
-class Version240000Date20220404230027 extends SimpleMigrationStep {
+class Version24000Date20220404230027 extends SimpleMigrationStep {
/**
* @param IOutput $output
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
diff --git a/core/Migrations/Version24000Date20220425072957.php b/core/Migrations/Version24000Date20220425072957.php
new file mode 100644
index 00000000000..87d62873c6b
--- /dev/null
+++ b/core/Migrations/Version24000Date20220425072957.php
@@ -0,0 +1,53 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Core\Migrations;
+
+use Closure;
+use OCP\DB\ISchemaWrapper;
+use OCP\Migration\IOutput;
+use OCP\Migration\SimpleMigrationStep;
+
+class Version24000Date20220425072957 extends SimpleMigrationStep {
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ * @return null|ISchemaWrapper
+ */
+ public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ $table = $schema->getTable('mounts');
+ if (!$table->hasIndex('mount_user_storage')) {
+ $table->addIndex(['storage_id', 'user_id'], 'mount_user_storage');
+ return $schema;
+ }
+
+ return null;
+ }
+}
diff --git a/core/css/apps.scss b/core/css/apps.scss
index 84179a94633..8d753eb8d23 100644
--- a/core/css/apps.scss
+++ b/core/css/apps.scss
@@ -166,7 +166,6 @@ kbd {
&,
> a {
background-color: var(--color-primary-light);
- color: var(--color-primary-text);
}
}
diff --git a/core/l10n/bg.js b/core/l10n/bg.js
index d462e2585a9..088eaccaa93 100644
--- a/core/l10n/bg.js
+++ b/core/l10n/bg.js
@@ -187,8 +187,10 @@ OC.L10N.register(
"{user} has not added any info yet" : "{user} все още не е добавил никаква информация",
"Error opening the user status modal, try hard refreshing the page" : "Грешка при отваряне на модалния статус на потребителя, опитайте настоятелно да опресните страницата",
"Reset search" : "Рестартирай търсенето",
+ "Start search" : "Начало на търсене",
"Search for {name} only" : "Търсене само за {name}",
"No results for {query}" : "Няма резултати за {query}",
+ "Press enter to start searching" : "Натиснете въведи, за начало на търсенето",
"Start typing to search" : "Започнете да пишете, за търсене",
"Loading more results …" : "Зарежда още резултати…",
"Load more results" : "Зареждане на още резултати",
diff --git a/core/l10n/bg.json b/core/l10n/bg.json
index c960272bb0a..098d52eb6e1 100644
--- a/core/l10n/bg.json
+++ b/core/l10n/bg.json
@@ -185,8 +185,10 @@
"{user} has not added any info yet" : "{user} все още не е добавил никаква информация",
"Error opening the user status modal, try hard refreshing the page" : "Грешка при отваряне на модалния статус на потребителя, опитайте настоятелно да опресните страницата",
"Reset search" : "Рестартирай търсенето",
+ "Start search" : "Начало на търсене",
"Search for {name} only" : "Търсене само за {name}",
"No results for {query}" : "Няма резултати за {query}",
+ "Press enter to start searching" : "Натиснете въведи, за начало на търсенето",
"Start typing to search" : "Започнете да пишете, за търсене",
"Loading more results …" : "Зарежда още резултати…",
"Load more results" : "Зареждане на още резултати",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 3bd4706fc4b..5cbc4646492 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -187,8 +187,10 @@ OC.L10N.register(
"{user} has not added any info yet" : "{user} hat noch keine Infos hinzugefügt",
"Error opening the user status modal, try hard refreshing the page" : "Fehler beim Modal-öffnen des Benutzerstatus, versuche die Seite zu aktualisieren",
"Reset search" : "Suche zurücksetzen",
+ "Start search" : "Suche starten",
"Search for {name} only" : "Nur nach {name} suchen",
"No results for {query}" : "Keine Suchergebnisse zu {query}",
+ "Press enter to start searching" : "Zum Suchen Enter drücken",
"Start typing to search" : "Beginne mit der Eingabe, um zu suchen",
"Loading more results …" : "Lade weitere Ergebnisse…",
"Load more results" : "Weitere Ergebnisse laden",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index 8053d64abd5..6706b3c38e4 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -185,8 +185,10 @@
"{user} has not added any info yet" : "{user} hat noch keine Infos hinzugefügt",
"Error opening the user status modal, try hard refreshing the page" : "Fehler beim Modal-öffnen des Benutzerstatus, versuche die Seite zu aktualisieren",
"Reset search" : "Suche zurücksetzen",
+ "Start search" : "Suche starten",
"Search for {name} only" : "Nur nach {name} suchen",
"No results for {query}" : "Keine Suchergebnisse zu {query}",
+ "Press enter to start searching" : "Zum Suchen Enter drücken",
"Start typing to search" : "Beginne mit der Eingabe, um zu suchen",
"Loading more results …" : "Lade weitere Ergebnisse…",
"Load more results" : "Weitere Ergebnisse laden",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 12aeb22ebb7..c8e2199a11f 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -138,9 +138,9 @@ OC.L10N.register(
"Log in" : "Anmelden",
"Logging in …" : "Melde an…",
"Server side authentication failed!" : "Serverseitige Authentifizierung fehlgeschlagen!",
- "Please contact your administrator." : "Bitte kontaktieren Sie Ihren Administrator.",
+ "Please contact your administrator." : "Bitte kontaktieren Sie Ihre Administration.",
"An internal error occurred." : "Es ist ein interner Fehler aufgetreten.",
- "Please try again or contact your administrator." : "Bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihren Administrator.",
+ "Please try again or contact your administrator." : "Bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihre Administration.",
"Username or email" : "Benutzername oder E-Mail",
"Password" : "Passwort",
"Toggle password visibility" : "Passwortsichtbarkeit umschalten",
@@ -155,7 +155,7 @@ OC.L10N.register(
"Reset password" : "Passwort zurücksetzen",
"A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Eine Nachricht zum Zurücksetzen des Passworts wurde an die in diesem Konto hinterlegte E-Mail-Adresse gesendet. Wenn Sie diese nicht erhalten haben, prüfen Sie bitte den Spam/Junk-Ordner oder kontaktieren Sie Ihren lokalen Administrator für weitere Hilfe.",
"If it is not there ask your local administrator." : "Wenn Sie keine E-Mail bekommen haben, wenden Sie sich bitte an Ihren lokalen Administrator.",
- "Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktieren Sie Ihren Administrator.",
+ "Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktieren Sie Ihre Administration.",
"Password cannot be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihren Administrator.",
"Back to login" : "Zurück zur Anmeldung",
"New password" : "Neues Passwort",
@@ -187,7 +187,7 @@ OC.L10N.register(
"{user} has not added any info yet" : "{user} hat noch keine Infos hinzugefügt",
"Error opening the user status modal, try hard refreshing the page" : "Fehler beim Modal-öffnen des Benutzerstatus, versuchen Sie die Seite zu aktualisieren",
"Reset search" : "Suche zurücksetzen",
- "Start search" : "Starte Suche",
+ "Start search" : "Suche starten",
"Search for {name} only" : "Nur nach {name} suchen",
"No results for {query}" : "Keine Suchergebnisse zu {query}",
"Press enter to start searching" : "Eingabetaste zum Starten der Suche drücken",
@@ -275,7 +275,7 @@ OC.L10N.register(
"Personal" : "Persönlich",
"Users" : "Benutzer",
"Apps" : "Apps",
- "Admin" : "Administrator",
+ "Admin" : "Administration",
"Help" : "Hilfe",
"Access forbidden" : "Zugriff verboten",
"Profile not found" : "Profil nicht gefunden",
@@ -303,7 +303,7 @@ OC.L10N.register(
"Security warning" : "Sicherheitswarnung",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "Informationen zur richtigen Einrichtung Ihres Servers können Sie der <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">Dokumentation</a> entnehmen.",
- "Create an <strong>admin account</strong>" : "<strong>Administrator-Konto</strong> anlegen",
+ "Create an <strong>admin account</strong>" : "<strong>Administrationskonto</strong> anlegen",
"Username" : "Benutzername",
"Show password" : "Passwort anzeigen",
"Storage & database" : "Speicher & Datenbank",
@@ -390,7 +390,7 @@ OC.L10N.register(
"Maintenance mode" : "Wartungsmodus",
"This %s instance is currently in maintenance mode, which may take a while." : "Diese %s-Instanz befindet sich gerade im Wartungsmodus, was eine Weile dauern kann.",
"This page will refresh itself when the instance is available again." : "Diese Seite aktualisiert sich automatisch, sobald Nextcloud wieder verfügbar ist.",
- "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktieren Sie Ihren Systemadministrator, wenn diese Meldung dauerhaft oder unerwartet erscheint.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktieren Sie Ihre Systemadministration, wenn diese Meldung dauerhaft oder unerwartet erscheint.",
"Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden",
"Couldn't reset password because the token is expired" : "Das Passwort konnte aufgrund eines abgelaufenen Tokens nicht zurückgesetzt werden",
"Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Prüft, ob das Datenbankschema aktualisiert werden kann (dies kann je nach Datenbankgröße sehr lange dauern)",
@@ -428,7 +428,7 @@ OC.L10N.register(
"Continue to Nextcloud" : "Weiter zur Nextcloud",
"_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Das Update war erfolgreich. Sie werden in %n Sekunde zur Nextcloud weitergeleitet.","Das Update war erfolgreich. Sie werden in %n Sekunden zur Nextcloud weitergeleitet."],
"A password reset message has been sent to the e-mail address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Eine Nachricht zum Zurücksetzen des Passworts wurde an die in diesem Konto hinterlegte E-Mail-Adresse gesendet. Wenn Sie diese nicht erhalten haben, prüfen Sie bitte den Spam/Junk-Ordner oder kontaktieren Sie Ihren lokalen Administrator für weitere Hilfe.",
- "Password can not be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihren Administrator.",
+ "Password can not be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihre Administration.",
"Could not fetch list of apps from the app store." : "Liste der Apps kann nicht vom App Store abgerufen werden",
"Can't install this app because it is not compatible" : "App kann nicht installiert werden, da sie inkompatibel ist",
"Can't install this app" : "App kann nicht installiert werden",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index c94204e7aa4..73114e10942 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -136,9 +136,9 @@
"Log in" : "Anmelden",
"Logging in …" : "Melde an…",
"Server side authentication failed!" : "Serverseitige Authentifizierung fehlgeschlagen!",
- "Please contact your administrator." : "Bitte kontaktieren Sie Ihren Administrator.",
+ "Please contact your administrator." : "Bitte kontaktieren Sie Ihre Administration.",
"An internal error occurred." : "Es ist ein interner Fehler aufgetreten.",
- "Please try again or contact your administrator." : "Bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihren Administrator.",
+ "Please try again or contact your administrator." : "Bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihre Administration.",
"Username or email" : "Benutzername oder E-Mail",
"Password" : "Passwort",
"Toggle password visibility" : "Passwortsichtbarkeit umschalten",
@@ -153,7 +153,7 @@
"Reset password" : "Passwort zurücksetzen",
"A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Eine Nachricht zum Zurücksetzen des Passworts wurde an die in diesem Konto hinterlegte E-Mail-Adresse gesendet. Wenn Sie diese nicht erhalten haben, prüfen Sie bitte den Spam/Junk-Ordner oder kontaktieren Sie Ihren lokalen Administrator für weitere Hilfe.",
"If it is not there ask your local administrator." : "Wenn Sie keine E-Mail bekommen haben, wenden Sie sich bitte an Ihren lokalen Administrator.",
- "Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktieren Sie Ihren Administrator.",
+ "Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktieren Sie Ihre Administration.",
"Password cannot be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihren Administrator.",
"Back to login" : "Zurück zur Anmeldung",
"New password" : "Neues Passwort",
@@ -185,7 +185,7 @@
"{user} has not added any info yet" : "{user} hat noch keine Infos hinzugefügt",
"Error opening the user status modal, try hard refreshing the page" : "Fehler beim Modal-öffnen des Benutzerstatus, versuchen Sie die Seite zu aktualisieren",
"Reset search" : "Suche zurücksetzen",
- "Start search" : "Starte Suche",
+ "Start search" : "Suche starten",
"Search for {name} only" : "Nur nach {name} suchen",
"No results for {query}" : "Keine Suchergebnisse zu {query}",
"Press enter to start searching" : "Eingabetaste zum Starten der Suche drücken",
@@ -273,7 +273,7 @@
"Personal" : "Persönlich",
"Users" : "Benutzer",
"Apps" : "Apps",
- "Admin" : "Administrator",
+ "Admin" : "Administration",
"Help" : "Hilfe",
"Access forbidden" : "Zugriff verboten",
"Profile not found" : "Profil nicht gefunden",
@@ -301,7 +301,7 @@
"Security warning" : "Sicherheitswarnung",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "Informationen zur richtigen Einrichtung Ihres Servers können Sie der <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">Dokumentation</a> entnehmen.",
- "Create an <strong>admin account</strong>" : "<strong>Administrator-Konto</strong> anlegen",
+ "Create an <strong>admin account</strong>" : "<strong>Administrationskonto</strong> anlegen",
"Username" : "Benutzername",
"Show password" : "Passwort anzeigen",
"Storage & database" : "Speicher & Datenbank",
@@ -388,7 +388,7 @@
"Maintenance mode" : "Wartungsmodus",
"This %s instance is currently in maintenance mode, which may take a while." : "Diese %s-Instanz befindet sich gerade im Wartungsmodus, was eine Weile dauern kann.",
"This page will refresh itself when the instance is available again." : "Diese Seite aktualisiert sich automatisch, sobald Nextcloud wieder verfügbar ist.",
- "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktieren Sie Ihren Systemadministrator, wenn diese Meldung dauerhaft oder unerwartet erscheint.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktieren Sie Ihre Systemadministration, wenn diese Meldung dauerhaft oder unerwartet erscheint.",
"Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden",
"Couldn't reset password because the token is expired" : "Das Passwort konnte aufgrund eines abgelaufenen Tokens nicht zurückgesetzt werden",
"Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Prüft, ob das Datenbankschema aktualisiert werden kann (dies kann je nach Datenbankgröße sehr lange dauern)",
@@ -426,7 +426,7 @@
"Continue to Nextcloud" : "Weiter zur Nextcloud",
"_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Das Update war erfolgreich. Sie werden in %n Sekunde zur Nextcloud weitergeleitet.","Das Update war erfolgreich. Sie werden in %n Sekunden zur Nextcloud weitergeleitet."],
"A password reset message has been sent to the e-mail address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Eine Nachricht zum Zurücksetzen des Passworts wurde an die in diesem Konto hinterlegte E-Mail-Adresse gesendet. Wenn Sie diese nicht erhalten haben, prüfen Sie bitte den Spam/Junk-Ordner oder kontaktieren Sie Ihren lokalen Administrator für weitere Hilfe.",
- "Password can not be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihren Administrator.",
+ "Password can not be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihre Administration.",
"Could not fetch list of apps from the app store." : "Liste der Apps kann nicht vom App Store abgerufen werden",
"Can't install this app because it is not compatible" : "App kann nicht installiert werden, da sie inkompatibel ist",
"Can't install this app" : "App kann nicht installiert werden",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index aed5cd10899..474a84425e9 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -100,8 +100,10 @@ OC.L10N.register(
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Il modulo PHP \"imagick\" non è attivato sebbene l'app dei temi lo sia. Affinché la generazione di favicon funzioni bene, devi installare ed attivare questo modulo.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "I moduli PHP \"gmp\" e/o \"bcmath\" non sono attivati. Se usi l'autenticazione senza password WebAuthn, questi moduli sono necessari.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Al modulo php-imagick manca il supporto SVG. Per una migliore compatibilità si consiglia di installarlo.",
+ "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "In alcune colonne del database manca una conversione in big int. Poiché la modifica dei tipi di colonna su tabelle di grandi dimensioni potrebbe richiedere del tempo, non sono state modificate automaticamente. Eseguendo \"occ db:convert-filecache-bigint\" è possibile applicare manualmente le modifiche in sospeso. Questa operazione deve essere eseguita mentre l'istanza è offline. Per ulteriori dettagli leggi {linkstart} la pagina della documentazione relativa a questo ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite è utilizzato attualmente come database. Per installazioni più grandi consigliamo di passare a un motore di database diverso.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Consigliato particolarmente quando si utilizza il client desktop per la sincronizzazione dei file.",
+ "To migrate to another database use the command line tool: \"occ db:convert-type\", or see the {linkstart}documentation ↗{linkend}." : "Per migrare a un altro database usa lo strumento da riga di comando: \"occ db:convert-type\", oppure consulta la {linkstart}documentazione ↗{linkend}.",
"The PHP memory limit is below the recommended value of 512MB." : "Il limite di memoria di PHP è inferiore al valore consigliato di 512MB.",
"Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:" : "Alcune applicazioni sono di proprietà di un utente diverso da quello del server web. Questo potrebbe verificarsi se le applicazioni sono state installate manualmente. Controlla i permessi delle cartelle delle seguenti applicazioni:",
"MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL. For further details read {linkstart}the documentation page about this ↗{linkend}." : "MySQL è utilizzato come database, ma non supporta caratteri di 4 byte. Per poter gestire i caratteri da 4 byte (come le emoji) senza problemi nei nomi dei file o nei commenti, si consiglia, ad esempio, di abilitare il supporto per i 4 byte in MySQL. Per ulteriori dettagli, leggi {linkstart}la pagina di documentazione relativa{linkend}.",
@@ -185,8 +187,10 @@ OC.L10N.register(
"{user} has not added any info yet" : "{user} non ha ancora aggiunto alcuna informazione",
"Error opening the user status modal, try hard refreshing the page" : "Errore nell'apertura dello stato utente, prova a ricaricare la pagina",
"Reset search" : "Ripristina ricerca",
+ "Start search" : "Avvia ricerca",
"Search for {name} only" : "Cerca solo {name}",
"No results for {query}" : "Nessun risultato per {query}",
+ "Press enter to start searching" : "Premi invio per avviare la ricerca",
"Start typing to search" : "Inizia a digitare per cercare",
"Loading more results …" : "Caricamento di più risultati...",
"Load more results" : "Carica più risultati",
@@ -348,7 +352,10 @@ OC.L10N.register(
"You can close this window." : "Puoi chiudere questa finestra.",
"This share is password-protected" : "Questa condivisione è protetta da password",
"The password is wrong. Try again." : "La password è errata. Prova ancora.",
+ "Please type in your email address to request a temporary password" : "Inserisci il tuo indirizzo email per richiedere una password temporanea",
"Email address" : "Indirizzo email",
+ "Password sent!" : "Password inviata!",
+ "You are not authorized to request a password for this share" : "Non sei autorizzato a richiedere una password per questa condivisione",
"Request password" : "Richiedi password",
"Go to %s" : "Vai a %s",
"Two-factor authentication" : "Autenticazione a due fattori",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 8d57c729b24..6b6b5186633 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -98,8 +98,10 @@
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Il modulo PHP \"imagick\" non è attivato sebbene l'app dei temi lo sia. Affinché la generazione di favicon funzioni bene, devi installare ed attivare questo modulo.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "I moduli PHP \"gmp\" e/o \"bcmath\" non sono attivati. Se usi l'autenticazione senza password WebAuthn, questi moduli sono necessari.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Al modulo php-imagick manca il supporto SVG. Per una migliore compatibilità si consiglia di installarlo.",
+ "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "In alcune colonne del database manca una conversione in big int. Poiché la modifica dei tipi di colonna su tabelle di grandi dimensioni potrebbe richiedere del tempo, non sono state modificate automaticamente. Eseguendo \"occ db:convert-filecache-bigint\" è possibile applicare manualmente le modifiche in sospeso. Questa operazione deve essere eseguita mentre l'istanza è offline. Per ulteriori dettagli leggi {linkstart} la pagina della documentazione relativa a questo ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite è utilizzato attualmente come database. Per installazioni più grandi consigliamo di passare a un motore di database diverso.",
"This is particularly recommended when using the desktop client for file synchronisation." : "Consigliato particolarmente quando si utilizza il client desktop per la sincronizzazione dei file.",
+ "To migrate to another database use the command line tool: \"occ db:convert-type\", or see the {linkstart}documentation ↗{linkend}." : "Per migrare a un altro database usa lo strumento da riga di comando: \"occ db:convert-type\", oppure consulta la {linkstart}documentazione ↗{linkend}.",
"The PHP memory limit is below the recommended value of 512MB." : "Il limite di memoria di PHP è inferiore al valore consigliato di 512MB.",
"Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:" : "Alcune applicazioni sono di proprietà di un utente diverso da quello del server web. Questo potrebbe verificarsi se le applicazioni sono state installate manualmente. Controlla i permessi delle cartelle delle seguenti applicazioni:",
"MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL. For further details read {linkstart}the documentation page about this ↗{linkend}." : "MySQL è utilizzato come database, ma non supporta caratteri di 4 byte. Per poter gestire i caratteri da 4 byte (come le emoji) senza problemi nei nomi dei file o nei commenti, si consiglia, ad esempio, di abilitare il supporto per i 4 byte in MySQL. Per ulteriori dettagli, leggi {linkstart}la pagina di documentazione relativa{linkend}.",
@@ -183,8 +185,10 @@
"{user} has not added any info yet" : "{user} non ha ancora aggiunto alcuna informazione",
"Error opening the user status modal, try hard refreshing the page" : "Errore nell'apertura dello stato utente, prova a ricaricare la pagina",
"Reset search" : "Ripristina ricerca",
+ "Start search" : "Avvia ricerca",
"Search for {name} only" : "Cerca solo {name}",
"No results for {query}" : "Nessun risultato per {query}",
+ "Press enter to start searching" : "Premi invio per avviare la ricerca",
"Start typing to search" : "Inizia a digitare per cercare",
"Loading more results …" : "Caricamento di più risultati...",
"Load more results" : "Carica più risultati",
@@ -346,7 +350,10 @@
"You can close this window." : "Puoi chiudere questa finestra.",
"This share is password-protected" : "Questa condivisione è protetta da password",
"The password is wrong. Try again." : "La password è errata. Prova ancora.",
+ "Please type in your email address to request a temporary password" : "Inserisci il tuo indirizzo email per richiedere una password temporanea",
"Email address" : "Indirizzo email",
+ "Password sent!" : "Password inviata!",
+ "You are not authorized to request a password for this share" : "Non sei autorizzato a richiedere una password per questa condivisione",
"Request password" : "Richiedi password",
"Go to %s" : "Vai a %s",
"Two-factor authentication" : "Autenticazione a due fattori",
diff --git a/core/l10n/vi.js b/core/l10n/vi.js
index eaa20fb979f..6ae433b3e32 100644
--- a/core/l10n/vi.js
+++ b/core/l10n/vi.js
@@ -173,6 +173,7 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Thư mục và file dữ liệu của bạn có thể được truy cập từ internet bởi vì file .htaccess không hoạt động",
"Create an <strong>admin account</strong>" : "Tạo một <strong>tài khoản quản trị</strong>",
"Username" : "Tên đăng nhập",
+ "Show password" : "Hiện mật khẩu",
"Storage & database" : "Lưu trữ & cơ sở dữ liệu",
"Data folder" : "Thư mục dữ liệu",
"Configure the database" : "Cấu hình cơ sở dữ liệu",
diff --git a/core/l10n/vi.json b/core/l10n/vi.json
index 73a0e15fb69..90126576e7a 100644
--- a/core/l10n/vi.json
+++ b/core/l10n/vi.json
@@ -171,6 +171,7 @@
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Thư mục và file dữ liệu của bạn có thể được truy cập từ internet bởi vì file .htaccess không hoạt động",
"Create an <strong>admin account</strong>" : "Tạo một <strong>tài khoản quản trị</strong>",
"Username" : "Tên đăng nhập",
+ "Show password" : "Hiện mật khẩu",
"Storage & database" : "Lưu trữ & cơ sở dữ liệu",
"Data folder" : "Thư mục dữ liệu",
"Configure the database" : "Cấu hình cơ sở dữ liệu",
diff --git a/core/src/profile.js b/core/src/profile.js
index b1e58a2b467..5e3711841a6 100644
--- a/core/src/profile.js
+++ b/core/src/profile.js
@@ -43,4 +43,7 @@ Vue.mixin({
})
const View = Vue.extend(Profile)
-new View().$mount('#vue-profile')
+
+window.addEventListener('DOMContentLoaded', () => {
+ new View().$mount('#vue-profile')
+})
diff --git a/cron.php b/cron.php
index 5095a2c7574..a58ef2c206f 100644
--- a/cron.php
+++ b/cron.php
@@ -147,6 +147,7 @@ try {
break;
}
+ $logger->debug('CLI cron call has selected job with ID ' . strval($job->getId()), ['app' => 'cron']);
$job->execute($jobList, $logger);
// clean up after unclean jobs
\OC_Util::tearDownFS();
@@ -169,6 +170,7 @@ try {
$jobList = \OC::$server->getJobList();
$job = $jobList->getNext();
if ($job != null) {
+ $logger->debug('WebCron call has selected job with ID ' . strval($job->getId()), ['app' => 'cron']);
$job->execute($jobList, $logger);
$jobList->setLastJob($job);
}
diff --git a/dist/core-profile.js b/dist/core-profile.js
index 68c62c349a0..fb38b3809d0 100644
--- a/dist/core-profile.js
+++ b/dist/core-profile.js
@@ -1,3 +1,3 @@
/*! For license information please see core-profile.js.LICENSE.txt */
-!function(){"use strict";var n,e={8948:function(n,e,a){var i,r=a(20144),o=a(22200),A=a(9944),s=a(34741),l=a(17499),c=null===(i=(0,o.getCurrentUser)())?(0,l.IY)().setApp("core").build():(0,l.IY)().setApp("core").setUid(i.uid).build(),d=a(74854),p=a(16453),C=a(79753),u=a(26932),_=a(28017),v=a.n(_),f=a(79440),g=a.n(f),h=a(74466),m=a.n(h),x=a(58022),b=a(59466),y=a(48747),k={name:"PrimaryActionButton",props:{disabled:{type:Boolean,default:!1},href:{type:String,required:!0},icon:{type:String,required:!0},target:{type:String,required:!0,validator:function(t){return["_self","_blank","_parent","_top"].includes(t)}}},computed:{colorPrimaryText:function(){return getComputedStyle(document.body).getPropertyValue("--color-primary-text").trim()}}},w=a(93379),B=a.n(w),E=a(7795),D=a.n(E),S=a(90569),I=a.n(S),P=a(3565),U=a.n(P),z=a(19216),O=a.n(z),Z=a(44589),M=a.n(Z),G=a(53155),q={};q.styleTagTransform=M(),q.setAttributes=U(),q.insert=I().bind(null,"head"),q.domAPI=D(),q.insertStyleElement=O(),B()(G.Z,q),G.Z&&G.Z.locals&&G.Z.locals;var W=a(51900),Y=(0,W.Z)(k,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("a",t._g({staticClass:"profile__primary-action-button",class:{disabled:t.disabled},attrs:{href:t.href,target:t.target,rel:"noopener noreferrer nofollow"}},t.$listeners),[e("img",{staticClass:"icon",class:[t.icon,{"icon-invert":"#ffffff"===t.colorPrimaryText}],attrs:{src:t.icon}}),t._v(" "),t._t("default")],2)}),[],!1,null,"35d5c4b6",null).exports,j=(0,p.loadState)("core","status",{}),T=(0,p.loadState)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1}),$=T.userId,F=T.displayname,J=T.address,K=T.organisation,R=T.role,V=T.headline,H=T.biography,L=T.actions,Q=T.isUserAvatarVisible,N={name:"Profile",components:{AccountIcon:y.Z,ActionLink:m(),Actions:g(),Avatar:v(),MapMarkerIcon:x.Z,PencilIcon:b.default,PrimaryActionButton:Y},data:function(){return{status:j,userId:$,displayname:F,address:J,organisation:K,role:R,headline:V,biography:H,actions:L,isUserAvatarVisible:Q}},computed:{isCurrentUser:function(){var t;return(null===(t=(0,o.getCurrentUser)())||void 0===t?void 0:t.uid)===this.userId},allActions:function(){return this.actions},primaryAction:function(){return this.allActions.length?this.allActions[0]:null},middleActions:function(){return this.allActions.slice(1,4).length?this.allActions.slice(1,4):null},otherActions:function(){return this.allActions.slice(4).length?this.allActions.slice(4):null},settingsUrl:function(){return(0,C.generateUrl)("/settings/user")},colorMainBackground:function(){return getComputedStyle(document.body).getPropertyValue("--color-main-background").trim()},emptyProfileMessage:function(){return this.isCurrentUser?t("core","You have not added any info yet"):t("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted:function(){document.title="".concat(this.displayname||this.userId," - ").concat(document.title),(0,d.subscribe)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy:function(){(0,d.unsubscribe)("user_status:status.updated",this.handleStatusUpdate)},methods:{handleStatusUpdate:function(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal:function(){var n=document.querySelector(".user-status-menu-item__toggle");this.isCurrentUser&&(n?n.click():(0,u.x2)(t("core","Error opening the user status modal, try hard refreshing the page")))}}},X=a(52500),tt={};tt.styleTagTransform=M(),tt.setAttributes=U(),tt.insert=I().bind(null,"head"),tt.domAPI=D(),tt.insertStyleElement=O(),B()(X.Z,tt),X.Z&&X.Z.locals&&X.Z.locals;var nt=a(20075),et={};et.styleTagTransform=M(),et.setAttributes=U(),et.insert=I().bind(null,"head"),et.domAPI=D(),et.insertStyleElement=O(),B()(nt.Z,et),nt.Z&&nt.Z.locals&&nt.Z.locals;var at=(0,W.Z)(N,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"profile"},[e("div",{staticClass:"profile__header"},[e("div",{staticClass:"profile__header__container"},[e("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),e("h2",{staticClass:"profile__header__container__displayname"},[t._v("\n\t\t\t\t"+t._s(t.displayname||t.userId)+"\n\t\t\t\t"),t.isCurrentUser?e("a",{staticClass:"primary profile__header__container__edit-button",attrs:{href:t.settingsUrl}},[e("PencilIcon",{staticClass:"pencil-icon",attrs:{decorative:"",title:"",size:16}}),t._v("\n\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t")],1):t._e()]),t._v(" "),t.status.icon||t.status.message?e("div",{staticClass:"profile__header__container__status-text",class:{interactive:t.isCurrentUser},on:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}},[t._v("\n\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t")]):t._e()])]),t._v(" "),e("div",{staticClass:"profile__content"},[e("div",{staticClass:"profile__sidebar"},[e("Avatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),e("div",{staticClass:"user-actions"},[t.primaryAction?e("PrimaryActionButton",{staticClass:"user-actions__primary",attrs:{href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"user-actions__other"},[t._l(t.middleActions,(function(n){return e("Actions",{key:n.id,staticStyle:{"background-position":"14px center","background-size":"16px","background-repeat":"no-repeat"},style:Object.assign({},{backgroundImage:"url("+n.icon+")"},"#181818"===t.colorMainBackground&&{filter:"invert(1)"}),attrs:{"default-icon":n.icon}},[e("ActionLink",{attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t")])],1)})),t._v(" "),t.otherActions?[e("Actions",{attrs:{"force-menu":!0}},t._l(t.otherActions,(function(n){return e("ActionLink",{key:n.id,class:{"icon-invert":"#181818"===t.colorMainBackground},attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])})),1)]:t._e()],2)],1)],1),t._v(" "),e("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?e("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?e("div",{staticClass:"detail"},[e("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?e("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?e("div",{staticClass:"detail"},[e("p",[e("MapMarkerIcon",{staticClass:"map-icon",attrs:{decorative:"",title:"",size:16}}),t._v("\n\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography?[t.headline?e("div",{staticClass:"profile__blocks-headline"},[e("h3",[t._v(t._s(t.headline))])]):t._e(),t._v(" "),t.biography?e("div",{staticClass:"profile__blocks-biography"},[e("p",[t._v(t._s(t.biography))])]):t._e()]:[e("div",{staticClass:"profile__blocks-empty-info"},[e("AccountIcon",{attrs:{decorative:"",title:"","fill-color":"var(--color-text-maxcontrast)",size:60}}),t._v(" "),e("h3",[t._v(t._s(t.emptyProfileMessage))]),t._v(" "),e("p",[t._v(t._s(t.t("core","The headline and about sections will show up here")))])],1)]],2)])])}),[],!1,null,"6311e07c",null),it=at.exports;a.nc=btoa((0,o.getRequestToken)()),r.default.use(s.default),r.default.mixin({props:{logger:c},methods:{t:A.translate}}),(new(r.default.extend(it))).$mount("#vue-profile")},53155:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}","",{version:3,sources:["webpack://./core/src/components/Profile/PrimaryActionButton.vue"],names:[],mappings:"AAsEA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.profile__primary-action-button {\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\twidth: 188px;\n\theight: 44px;\n\tpadding: 0 16px;\n\tline-height: 44px;\n\ttext-align: center;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-primary-element);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t.icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-bottom: 2px;\n\t\tmargin-right: 4px;\n\n\t\t&.icon-invert {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n}\n"],sourceRoot:""}]),n.Z=o},52500:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAqSA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n"],sourceRoot:""}]),n.Z=o},20075:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,".profile[data-v-6311e07c]{width:100%}.profile__header[data-v-6311e07c]{position:sticky;height:190px;top:-40px}.profile__header__container[data-v-6311e07c]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-6311e07c]{grid-row:1/3}.profile__header__container__displayname[data-v-6311e07c],.profile__header__container__status-text[data-v-6311e07c]{color:var(--color-primary-text)}.profile__header__container__displayname[data-v-6311e07c]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-6311e07c]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-6311e07c]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-6311e07c]:hover,.profile__header__container__edit-button[data-v-6311e07c]:focus,.profile__header__container__edit-button[data-v-6311e07c]:active{color:var(--color-primary-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-6311e07c]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-6311e07c]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-6311e07c]:hover,.profile__header__container__status-text.interactive[data-v-6311e07c]:focus,.profile__header__container__status-text.interactive[data-v-6311e07c]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-6311e07c]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv,.profile__sidebar h2[data-v-6311e07c]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__content[data-v-6311e07c]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-6311e07c]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-6311e07c],.profile__blocks h3[data-v-6311e07c]{overflow-wrap:anywhere}.profile__blocks-details[data-v-6311e07c]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-6311e07c]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-6311e07c]{margin-top:10px}.profile__blocks-headline h3[data-v-6311e07c]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-6311e07c]{white-space:pre-line}.profile__blocks h3[data-v-6311e07c],.profile__blocks p[data-v-6311e07c]{cursor:text}.profile__blocks-empty-info[data-v-6311e07c]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-6311e07c]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-6311e07c]{height:250px;position:unset}.profile__header__container[data-v-6311e07c]{grid-template-columns:unset}.profile__header__container__displayname[data-v-6311e07c]{margin:100px 20px 0px;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-6311e07c]{width:fit-content;display:block;margin:30px auto}.profile__content[data-v-6311e07c]{display:block}.profile__blocks[data-v-6311e07c]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-6311e07c]{margin:0}.profile__sidebar[data-v-6311e07c]{margin:unset;position:unset}}.user-actions[data-v-6311e07c]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-6311e07c]{margin:0 auto}.user-actions__other[data-v-6311e07c]{display:flex;justify-content:center;gap:0 4px}.icon-invert[data-v-6311e07c] .action-link__icon{filter:invert(1)}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAmTA,0BACC,UAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAdiB,CAejB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,+BAAA,CAGD,0DACC,WA7BgB,CA8BhB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,+BAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA3EgB,CA4EhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,gBApJkB,CAqJlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7JkB,CA+JlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,qBAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAKD,iDACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 100px 20px 0px;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 30px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n"],sourceRoot:""}]),n.Z=o}},a={};function i(t){var n=a[t];if(void 0!==n)return n.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,a,r){if(!e){var o=1/0;for(c=0;c<n.length;c++){e=n[c][0],a=n[c][1],r=n[c][2];for(var A=!0,s=0;s<e.length;s++)(!1&r||o>=r)&&Object.keys(i.O).every((function(t){return i.O[t](e[s])}))?e.splice(s--,1):(A=!1,r<o&&(o=r));if(A){n.splice(c--,1);var l=a();void 0!==l&&(t=l)}}return t}r=r||0;for(var c=n.length;c>0&&n[c-1][2]>r;c--)n[c]=n[c-1];n[c]=[e,a,r]},i.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(n,{a:n}),n},i.d=function(t,n){for(var e in n)i.o(n,e)&&!i.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=651,function(){i.b=document.baseURI||self.location.href;var t={651:0};i.O.j=function(n){return 0===t[n]};var n=function(n,e){var a,r,o=e[0],A=e[1],s=e[2],l=0;if(o.some((function(n){return 0!==t[n]}))){for(a in A)i.o(A,a)&&(i.m[a]=A[a]);if(s)var c=s(i)}for(n&&n(e);l<o.length;l++)r=o[l],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}();var r=i.O(void 0,[874],(function(){return i(8948)}));r=i.O(r)}();
-//# sourceMappingURL=core-profile.js.map?v=39c86a82bad70fd5288d \ No newline at end of file
+!function(){"use strict";var n,e={8948:function(n,e,a){var i,r=a(20144),o=a(22200),A=a(9944),s=a(34741),l=a(17499),c=null===(i=(0,o.getCurrentUser)())?(0,l.IY)().setApp("core").build():(0,l.IY)().setApp("core").setUid(i.uid).build(),d=a(74854),p=a(16453),C=a(79753),u=a(26932),_=a(28017),v=a.n(_),f=a(79440),g=a.n(f),h=a(74466),m=a.n(h),x=a(58022),b=a(59466),y=a(48747),k={name:"PrimaryActionButton",props:{disabled:{type:Boolean,default:!1},href:{type:String,required:!0},icon:{type:String,required:!0},target:{type:String,required:!0,validator:function(t){return["_self","_blank","_parent","_top"].includes(t)}}},computed:{colorPrimaryText:function(){return getComputedStyle(document.body).getPropertyValue("--color-primary-text").trim()}}},w=a(93379),B=a.n(w),E=a(7795),D=a.n(E),S=a(90569),I=a.n(S),P=a(3565),U=a.n(P),z=a(19216),O=a.n(z),M=a(44589),Z=a.n(M),G=a(53155),q={};q.styleTagTransform=Z(),q.setAttributes=U(),q.insert=I().bind(null,"head"),q.domAPI=D(),q.insertStyleElement=O(),B()(G.Z,q),G.Z&&G.Z.locals&&G.Z.locals;var W=a(51900),Y=(0,W.Z)(k,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("a",t._g({staticClass:"profile__primary-action-button",class:{disabled:t.disabled},attrs:{href:t.href,target:t.target,rel:"noopener noreferrer nofollow"}},t.$listeners),[e("img",{staticClass:"icon",class:[t.icon,{"icon-invert":"#ffffff"===t.colorPrimaryText}],attrs:{src:t.icon}}),t._v(" "),t._t("default")],2)}),[],!1,null,"35d5c4b6",null).exports,j=(0,p.loadState)("core","status",{}),T=(0,p.loadState)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1}),$=T.userId,F=T.displayname,J=T.address,K=T.organisation,L=T.role,R=T.headline,V=T.biography,H=T.actions,Q=T.isUserAvatarVisible,N={name:"Profile",components:{AccountIcon:y.Z,ActionLink:m(),Actions:g(),Avatar:v(),MapMarkerIcon:x.Z,PencilIcon:b.default,PrimaryActionButton:Y},data:function(){return{status:j,userId:$,displayname:F,address:J,organisation:K,role:L,headline:R,biography:V,actions:H,isUserAvatarVisible:Q}},computed:{isCurrentUser:function(){var t;return(null===(t=(0,o.getCurrentUser)())||void 0===t?void 0:t.uid)===this.userId},allActions:function(){return this.actions},primaryAction:function(){return this.allActions.length?this.allActions[0]:null},middleActions:function(){return this.allActions.slice(1,4).length?this.allActions.slice(1,4):null},otherActions:function(){return this.allActions.slice(4).length?this.allActions.slice(4):null},settingsUrl:function(){return(0,C.generateUrl)("/settings/user")},colorMainBackground:function(){return getComputedStyle(document.body).getPropertyValue("--color-main-background").trim()},emptyProfileMessage:function(){return this.isCurrentUser?t("core","You have not added any info yet"):t("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted:function(){document.title="".concat(this.displayname||this.userId," - ").concat(document.title),(0,d.subscribe)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy:function(){(0,d.unsubscribe)("user_status:status.updated",this.handleStatusUpdate)},methods:{handleStatusUpdate:function(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal:function(){var n=document.querySelector(".user-status-menu-item__toggle");this.isCurrentUser&&(n?n.click():(0,u.x2)(t("core","Error opening the user status modal, try hard refreshing the page")))}}},X=a(52500),tt={};tt.styleTagTransform=Z(),tt.setAttributes=U(),tt.insert=I().bind(null,"head"),tt.domAPI=D(),tt.insertStyleElement=O(),B()(X.Z,tt),X.Z&&X.Z.locals&&X.Z.locals;var nt=a(20075),et={};et.styleTagTransform=Z(),et.setAttributes=U(),et.insert=I().bind(null,"head"),et.domAPI=D(),et.insertStyleElement=O(),B()(nt.Z,et),nt.Z&&nt.Z.locals&&nt.Z.locals;var at=(0,W.Z)(N,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"profile"},[e("div",{staticClass:"profile__header"},[e("div",{staticClass:"profile__header__container"},[e("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),e("h2",{staticClass:"profile__header__container__displayname"},[t._v("\n\t\t\t\t"+t._s(t.displayname||t.userId)+"\n\t\t\t\t"),t.isCurrentUser?e("a",{staticClass:"primary profile__header__container__edit-button",attrs:{href:t.settingsUrl}},[e("PencilIcon",{staticClass:"pencil-icon",attrs:{decorative:"",title:"",size:16}}),t._v("\n\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t")],1):t._e()]),t._v(" "),t.status.icon||t.status.message?e("div",{staticClass:"profile__header__container__status-text",class:{interactive:t.isCurrentUser},on:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}},[t._v("\n\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t")]):t._e()])]),t._v(" "),e("div",{staticClass:"profile__content"},[e("div",{staticClass:"profile__sidebar"},[e("Avatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),e("div",{staticClass:"user-actions"},[t.primaryAction?e("PrimaryActionButton",{staticClass:"user-actions__primary",attrs:{href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"user-actions__other"},[t._l(t.middleActions,(function(n){return e("Actions",{key:n.id,staticStyle:{"background-position":"14px center","background-size":"16px","background-repeat":"no-repeat"},style:Object.assign({},{backgroundImage:"url("+n.icon+")"},"#181818"===t.colorMainBackground&&{filter:"invert(1)"}),attrs:{"default-icon":n.icon}},[e("ActionLink",{attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t")])],1)})),t._v(" "),t.otherActions?[e("Actions",{attrs:{"force-menu":!0}},t._l(t.otherActions,(function(n){return e("ActionLink",{key:n.id,class:{"icon-invert":"#181818"===t.colorMainBackground},attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])})),1)]:t._e()],2)],1)],1),t._v(" "),e("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?e("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?e("div",{staticClass:"detail"},[e("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?e("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?e("div",{staticClass:"detail"},[e("p",[e("MapMarkerIcon",{staticClass:"map-icon",attrs:{decorative:"",title:"",size:16}}),t._v("\n\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography?[t.headline?e("div",{staticClass:"profile__blocks-headline"},[e("h3",[t._v(t._s(t.headline))])]):t._e(),t._v(" "),t.biography?e("div",{staticClass:"profile__blocks-biography"},[e("p",[t._v(t._s(t.biography))])]):t._e()]:[e("div",{staticClass:"profile__blocks-empty-info"},[e("AccountIcon",{attrs:{decorative:"",title:"","fill-color":"var(--color-text-maxcontrast)",size:60}}),t._v(" "),e("h3",[t._v(t._s(t.emptyProfileMessage))]),t._v(" "),e("p",[t._v(t._s(t.t("core","The headline and about sections will show up here")))])],1)]],2)])])}),[],!1,null,"6311e07c",null),it=at.exports;a.nc=btoa((0,o.getRequestToken)()),r.default.use(s.default),r.default.mixin({props:{logger:c},methods:{t:A.translate}});var rt=r.default.extend(it);window.addEventListener("DOMContentLoaded",(function(){(new rt).$mount("#vue-profile")}))},53155:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}","",{version:3,sources:["webpack://./core/src/components/Profile/PrimaryActionButton.vue"],names:[],mappings:"AAsEA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.profile__primary-action-button {\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\twidth: 188px;\n\theight: 44px;\n\tpadding: 0 16px;\n\tline-height: 44px;\n\ttext-align: center;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-primary-element);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t.icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-bottom: 2px;\n\t\tmargin-right: 4px;\n\n\t\t&.icon-invert {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n}\n"],sourceRoot:""}]),n.Z=o},52500:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAqSA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n"],sourceRoot:""}]),n.Z=o},20075:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,".profile[data-v-6311e07c]{width:100%}.profile__header[data-v-6311e07c]{position:sticky;height:190px;top:-40px}.profile__header__container[data-v-6311e07c]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-6311e07c]{grid-row:1/3}.profile__header__container__displayname[data-v-6311e07c],.profile__header__container__status-text[data-v-6311e07c]{color:var(--color-primary-text)}.profile__header__container__displayname[data-v-6311e07c]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-6311e07c]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-6311e07c]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-6311e07c]:hover,.profile__header__container__edit-button[data-v-6311e07c]:focus,.profile__header__container__edit-button[data-v-6311e07c]:active{color:var(--color-primary-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-6311e07c]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-6311e07c]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-6311e07c]:hover,.profile__header__container__status-text.interactive[data-v-6311e07c]:focus,.profile__header__container__status-text.interactive[data-v-6311e07c]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-6311e07c]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv,.profile__sidebar h2[data-v-6311e07c]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__content[data-v-6311e07c]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-6311e07c]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-6311e07c],.profile__blocks h3[data-v-6311e07c]{overflow-wrap:anywhere}.profile__blocks-details[data-v-6311e07c]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-6311e07c]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-6311e07c]{margin-top:10px}.profile__blocks-headline h3[data-v-6311e07c]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-6311e07c]{white-space:pre-line}.profile__blocks h3[data-v-6311e07c],.profile__blocks p[data-v-6311e07c]{cursor:text}.profile__blocks-empty-info[data-v-6311e07c]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-6311e07c]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-6311e07c]{height:250px;position:unset}.profile__header__container[data-v-6311e07c]{grid-template-columns:unset}.profile__header__container__displayname[data-v-6311e07c]{margin:100px 20px 0px;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-6311e07c]{width:fit-content;display:block;margin:30px auto}.profile__content[data-v-6311e07c]{display:block}.profile__blocks[data-v-6311e07c]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-6311e07c]{margin:0}.profile__sidebar[data-v-6311e07c]{margin:unset;position:unset}}.user-actions[data-v-6311e07c]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-6311e07c]{margin:0 auto}.user-actions__other[data-v-6311e07c]{display:flex;justify-content:center;gap:0 4px}.icon-invert[data-v-6311e07c] .action-link__icon{filter:invert(1)}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAmTA,0BACC,UAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAdiB,CAejB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,+BAAA,CAGD,0DACC,WA7BgB,CA8BhB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,+BAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA3EgB,CA4EhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,gBApJkB,CAqJlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7JkB,CA+JlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,qBAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAKD,iDACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 100px 20px 0px;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 30px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n"],sourceRoot:""}]),n.Z=o}},a={};function i(t){var n=a[t];if(void 0!==n)return n.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,a,r){if(!e){var o=1/0;for(c=0;c<n.length;c++){e=n[c][0],a=n[c][1],r=n[c][2];for(var A=!0,s=0;s<e.length;s++)(!1&r||o>=r)&&Object.keys(i.O).every((function(t){return i.O[t](e[s])}))?e.splice(s--,1):(A=!1,r<o&&(o=r));if(A){n.splice(c--,1);var l=a();void 0!==l&&(t=l)}}return t}r=r||0;for(var c=n.length;c>0&&n[c-1][2]>r;c--)n[c]=n[c-1];n[c]=[e,a,r]},i.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(n,{a:n}),n},i.d=function(t,n){for(var e in n)i.o(n,e)&&!i.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=651,function(){i.b=document.baseURI||self.location.href;var t={651:0};i.O.j=function(n){return 0===t[n]};var n=function(n,e){var a,r,o=e[0],A=e[1],s=e[2],l=0;if(o.some((function(n){return 0!==t[n]}))){for(a in A)i.o(A,a)&&(i.m[a]=A[a]);if(s)var c=s(i)}for(n&&n(e);l<o.length;l++)r=o[l],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}();var r=i.O(void 0,[874],(function(){return i(8948)}));r=i.O(r)}();
+//# sourceMappingURL=core-profile.js.map?v=297ddd1c440519837411 \ No newline at end of file
diff --git a/dist/core-profile.js.map b/dist/core-profile.js.map
index f9b76304436..a7c5c95bcea 100644
--- a/dist/core-profile.js.map
+++ b/dist/core-profile.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-profile.js?v=39c86a82bad70fd5288d","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?e5bb","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?4873","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Profile.vue?165e","webpack://nextcloud/./core/src/views/Profile.vue?5f38","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=template&id=6311e07c&scoped=true&","webpack:///nextcloud/core/src/profile.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"profile__primary-action-button\"\n\t\t:class=\"{ 'disabled': disabled }\"\n\t\t:href=\"href\"\n\t\t:target=\"target\"\n\t\trel=\"noopener noreferrer nofollow\"\n\t\tv-on=\"$listeners\">\n\t\t<img class=\"icon\"\n\t\t\t:class=\"[icon, { 'icon-invert': colorPrimaryText === '#ffffff' }]\"\n\t\t\t:src=\"icon\">\n\t\t<slot />\n\t</a>\n</template>\n\n<script>\nexport default {\n\tname: 'PrimaryActionButton',\n\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => ['_self', '_blank', '_parent', '_top'].includes(value),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tcolorPrimaryText() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-primary-text').trim()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.profile__primary-action-button {\n\t\tfont-size: var(--default-font-size);\n\t\tfont-weight: bold;\n\t\twidth: 188px;\n\t\theight: 44px;\n\t\tpadding: 0 16px;\n\t\tline-height: 44px;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\n\t\t.icon {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\t\t\tmargin-bottom: 2px;\n\t\t\tmargin-right: 4px;\n\n\t\t\t&.icon-invert {\n\t\t\t\tfilter: invert(1);\n\t\t\t}\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&\"\nimport script from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35d5c4b6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',_vm._g({staticClass:\"profile__primary-action-button\",class:{ 'disabled': _vm.disabled },attrs:{\"href\":_vm.href,\"target\":_vm.target,\"rel\":\"noopener noreferrer nofollow\"}},_vm.$listeners),[_c('img',{staticClass:\"icon\",class:[_vm.icon, { 'icon-invert': _vm.colorPrimaryText === '#ffffff' }],attrs:{\"src\":_vm.icon}}),_vm._v(\" \"),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"profile\">\n\t\t<div class=\"profile__header\">\n\t\t\t<div class=\"profile__header__container\">\n\t\t\t\t<div class=\"profile__header__container__placeholder\" />\n\t\t\t\t<h2 class=\"profile__header__container__displayname\">\n\t\t\t\t\t{{ displayname || userId }}\n\t\t\t\t\t<a v-if=\"isCurrentUser\"\n\t\t\t\t\t\tclass=\"primary profile__header__container__edit-button\"\n\t\t\t\t\t\t:href=\"settingsUrl\">\n\t\t\t\t\t\t<PencilIcon class=\"pencil-icon\"\n\t\t\t\t\t\t\tdecorative\n\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t{{ t('core', 'Edit Profile') }}\n\t\t\t\t\t</a>\n\t\t\t\t</h2>\n\t\t\t\t<div v-if=\"status.icon || status.message\"\n\t\t\t\t\tclass=\"profile__header__container__status-text\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t@click.prevent.stop=\"openStatusModal\">\n\t\t\t\t\t{{ status.icon }} {{ status.message }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"profile__content\">\n\t\t\t<div class=\"profile__sidebar\">\n\t\t\t\t<Avatar class=\"avatar\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t:show-user-status=\"true\"\n\t\t\t\t\t:show-user-status-compact=\"false\"\n\t\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t\t:is-no-user=\"!isUserAvatarVisible\"\n\t\t\t\t\t@click.native.prevent.stop=\"openStatusModal\" />\n\n\t\t\t\t<div class=\"user-actions\">\n\t\t\t\t\t<!-- When a tel: URL is opened with target=\"_blank\", a blank new tab is opened which is inconsistent with the handling of other URLs so we set target=\"_self\" for the phone action -->\n\t\t\t\t\t<PrimaryActionButton v-if=\"primaryAction\"\n\t\t\t\t\t\tclass=\"user-actions__primary\"\n\t\t\t\t\t\t:href=\"primaryAction.target\"\n\t\t\t\t\t\t:icon=\"primaryAction.icon\"\n\t\t\t\t\t\t:target=\"primaryAction.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t{{ primaryAction.title }}\n\t\t\t\t\t</PrimaryActionButton>\n\t\t\t\t\t<div class=\"user-actions__other\">\n\t\t\t\t\t\t<!-- FIXME Remove inline styles after https://github.com/nextcloud/nextcloud-vue/issues/2315 is fixed -->\n\t\t\t\t\t\t<Actions v-for=\"action in middleActions\"\n\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t:default-icon=\"action.icon\"\n\t\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\t\tbackground-position: 14px center;\n\t\t\t\t\t\t\t\tbackground-size: 16px;\n\t\t\t\t\t\t\t\tbackground-repeat: no-repeat;\"\n\t\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${action.icon})`,\n\t\t\t\t\t\t\t\t...(colorMainBackground === '#181818' && { filter: 'invert(1)' })\n\t\t\t\t\t\t\t}\">\n\t\t\t\t\t\t\t<ActionLink :close-after-click=\"true\"\n\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t</ActionLink>\n\t\t\t\t\t\t</Actions>\n\t\t\t\t\t\t<template v-if=\"otherActions\">\n\t\t\t\t\t\t\t<Actions :force-menu=\"true\">\n\t\t\t\t\t\t\t\t<ActionLink v-for=\"action in otherActions\"\n\t\t\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t\t\t:class=\"{ 'icon-invert': colorMainBackground === '#181818' }\"\n\t\t\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t\t</ActionLink>\n\t\t\t\t\t\t\t</Actions>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"profile__blocks\">\n\t\t\t\t<div v-if=\"organisation || role || address\" class=\"profile__blocks-details\">\n\t\t\t\t\t<div v-if=\"organisation || role\" class=\"detail\">\n\t\t\t\t\t\t<p>{{ organisation }} <span v-if=\"organisation && role\">•</span> {{ role }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"address\" class=\"detail\">\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<MapMarkerIcon class=\"map-icon\"\n\t\t\t\t\t\t\t\tdecorative\n\t\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t\t{{ address }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<template v-if=\"headline || biography\">\n\t\t\t\t\t<div v-if=\"headline\" class=\"profile__blocks-headline\">\n\t\t\t\t\t\t<h3>{{ headline }}</h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"biography\" class=\"profile__blocks-biography\">\n\t\t\t\t\t\t<p>{{ biography }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div class=\"profile__blocks-empty-info\">\n\t\t\t\t\t\t<AccountIcon decorative\n\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\tfill-color=\"var(--color-text-maxcontrast)\"\n\t\t\t\t\t\t\t:size=\"60\" />\n\t\t\t\t\t\t<h3>{{ emptyProfileMessage }}</h3>\n\t\t\t\t\t\t<p>{{ t('core', 'The headline and about sections will show up here') }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError } from '@nextcloud/dialogs'\n\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport MapMarkerIcon from 'vue-material-design-icons/MapMarker'\nimport PencilIcon from 'vue-material-design-icons/Pencil'\nimport AccountIcon from 'vue-material-design-icons/Account'\n\nimport PrimaryActionButton from '../components/Profile/PrimaryActionButton'\n\nconst status = loadState('core', 'status', {})\nconst {\n\tuserId,\n\tdisplayname,\n\taddress,\n\torganisation,\n\trole,\n\theadline,\n\tbiography,\n\tactions,\n\tisUserAvatarVisible,\n} = loadState('core', 'profileParameters', {\n\tuserId: null,\n\tdisplayname: null,\n\taddress: null,\n\torganisation: null,\n\trole: null,\n\theadline: null,\n\tbiography: null,\n\tactions: [],\n\tisUserAvatarVisible: false,\n})\n\nexport default {\n\tname: 'Profile',\n\n\tcomponents: {\n\t\tAccountIcon,\n\t\tActionLink,\n\t\tActions,\n\t\tAvatar,\n\t\tMapMarkerIcon,\n\t\tPencilIcon,\n\t\tPrimaryActionButton,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tstatus,\n\t\t\tuserId,\n\t\t\tdisplayname,\n\t\t\taddress,\n\t\t\torganisation,\n\t\t\trole,\n\t\t\theadline,\n\t\t\tbiography,\n\t\t\tactions,\n\t\t\tisUserAvatarVisible,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisCurrentUser() {\n\t\t\treturn getCurrentUser()?.uid === this.userId\n\t\t},\n\n\t\tallActions() {\n\t\t\treturn this.actions\n\t\t},\n\n\t\tprimaryAction() {\n\t\t\tif (this.allActions.length) {\n\t\t\t\treturn this.allActions[0]\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tmiddleActions() {\n\t\t\tif (this.allActions.slice(1, 4).length) {\n\t\t\t\treturn this.allActions.slice(1, 4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\totherActions() {\n\t\t\tif (this.allActions.slice(4).length) {\n\t\t\t\treturn this.allActions.slice(4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tsettingsUrl() {\n\t\t\treturn generateUrl('/settings/user')\n\t\t},\n\n\t\tcolorMainBackground() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-main-background').trim()\n\t\t},\n\n\t\temptyProfileMessage() {\n\t\t\treturn this.isCurrentUser\n\t\t\t\t? t('core', 'You have not added any info yet')\n\t\t\t\t: t('core', '{user} has not added any info yet', { user: (this.displayname || this.userId) })\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Set the user's displayname or userId in the page title and preserve the default title of \"Nextcloud\" at the end\n\t\tdocument.title = `${this.displayname || this.userId} - ${document.title}`\n\t\tsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tmethods: {\n\t\thandleStatusUpdate(status) {\n\t\t\tif (this.isCurrentUser && status.userId === this.userId) {\n\t\t\t\tthis.status = status\n\t\t\t}\n\t\t},\n\n\t\topenStatusModal() {\n\t\t\tconst statusMenuItem = document.querySelector('.user-status-menu-item__toggle')\n\t\t\t// Changing the user status is only enabled if you are the current user\n\t\t\tif (this.isCurrentUser) {\n\t\t\t\tif (statusMenuItem) {\n\t\t\t\t\tstatusMenuItem.click()\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('core', 'Error opening the user status modal, try hard refreshing the page'))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 100px 20px 0px;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 30px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=6311e07c&scoped=true&\"\nimport script from \"./Profile.vue?vue&type=script&lang=js&\"\nexport * from \"./Profile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6311e07c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"profile\"},[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('h2',{staticClass:\"profile__header__container__displayname\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.displayname || _vm.userId)+\"\\n\\t\\t\\t\\t\"),(_vm.isCurrentUser)?_c('a',{staticClass:\"primary profile__header__container__edit-button\",attrs:{\"href\":_vm.settingsUrl}},[_c('PencilIcon',{staticClass:\"pencil-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\")],1):_vm._e()]),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('div',{staticClass:\"profile__header__container__status-text\",class:{ interactive: _vm.isCurrentUser },on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('Avatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('PrimaryActionButton',{staticClass:\"user-actions__primary\",attrs:{\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"user-actions__other\"},[_vm._l((_vm.middleActions),function(action){return _c('Actions',{key:action.id,staticStyle:{\"background-position\":\"14px center\",\"background-size\":\"16px\",\"background-repeat\":\"no-repeat\"},style:(Object.assign({}, {backgroundImage: (\"url(\" + (action.icon) + \")\")},\n\t\t\t\t\t\t\t(_vm.colorMainBackground === '#181818' && { filter: 'invert(1)' }))),attrs:{\"default-icon\":action.icon}},[_c('ActionLink',{attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),_vm._v(\" \"),(_vm.otherActions)?[_c('Actions',{attrs:{\"force-menu\":true}},_vm._l((_vm.otherActions),function(action){return _c('ActionLink',{key:action.id,class:{ 'icon-invert': _vm.colorMainBackground === '#181818' },attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])}),1)]:_vm._e()],2)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography)?[(_vm.headline)?_c('div',{staticClass:\"profile__blocks-headline\"},[_c('h3',[_vm._v(_vm._s(_vm.headline))])]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('div',{staticClass:\"profile__blocks-biography\"},[_c('p',[_vm._v(_vm._s(_vm.biography))])]):_vm._e()]:[_c('div',{staticClass:\"profile__blocks-empty-info\"},[_c('AccountIcon',{attrs:{\"decorative\":\"\",\"title\":\"\",\"fill-color\":\"var(--color-text-maxcontrast)\",\"size\":60}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.emptyProfileMessage))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.t('core', 'The headline and about sections will show up here')))])],1)]],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from 'v-tooltip'\n\nimport logger from './logger'\n\nimport Profile from './views/Profile'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.use(VTooltip)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(Profile)\nnew View().$mount('#vue-profile')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/Profile/PrimaryActionButton.vue\"],\"names\":[],\"mappings\":\"AAsEA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.profile__primary-action-button {\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\twidth: 188px;\\n\\theight: 44px;\\n\\tpadding: 0 16px;\\n\\tline-height: 44px;\\n\\ttext-align: center;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tcolor: var(--color-primary-text);\\n\\tbackground-color: var(--color-primary-element);\\n\\toverflow: hidden;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\n\\t.icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-bottom: 2px;\\n\\t\\tmargin-right: 4px;\\n\\n\\t\\t&.icon-invert {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAqSA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n// Override header styles\\n#header {\\n\\tbackground-color: transparent !important;\\n\\tbackground-image: none !important;\\n}\\n\\n#content {\\n\\tpadding-top: 0px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".profile[data-v-6311e07c]{width:100%}.profile__header[data-v-6311e07c]{position:sticky;height:190px;top:-40px}.profile__header__container[data-v-6311e07c]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-6311e07c]{grid-row:1/3}.profile__header__container__displayname[data-v-6311e07c],.profile__header__container__status-text[data-v-6311e07c]{color:var(--color-primary-text)}.profile__header__container__displayname[data-v-6311e07c]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-6311e07c]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-6311e07c]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-6311e07c]:hover,.profile__header__container__edit-button[data-v-6311e07c]:focus,.profile__header__container__edit-button[data-v-6311e07c]:active{color:var(--color-primary-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-6311e07c]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-6311e07c]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-6311e07c]:hover,.profile__header__container__status-text.interactive[data-v-6311e07c]:focus,.profile__header__container__status-text.interactive[data-v-6311e07c]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-6311e07c]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv,.profile__sidebar h2[data-v-6311e07c]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__content[data-v-6311e07c]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-6311e07c]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-6311e07c],.profile__blocks h3[data-v-6311e07c]{overflow-wrap:anywhere}.profile__blocks-details[data-v-6311e07c]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-6311e07c]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-6311e07c]{margin-top:10px}.profile__blocks-headline h3[data-v-6311e07c]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-6311e07c]{white-space:pre-line}.profile__blocks h3[data-v-6311e07c],.profile__blocks p[data-v-6311e07c]{cursor:text}.profile__blocks-empty-info[data-v-6311e07c]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-6311e07c]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-6311e07c]{height:250px;position:unset}.profile__header__container[data-v-6311e07c]{grid-template-columns:unset}.profile__header__container__displayname[data-v-6311e07c]{margin:100px 20px 0px;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-6311e07c]{width:fit-content;display:block;margin:30px auto}.profile__content[data-v-6311e07c]{display:block}.profile__blocks[data-v-6311e07c]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-6311e07c]{margin:0}.profile__sidebar[data-v-6311e07c]{margin:unset;position:unset}}.user-actions[data-v-6311e07c]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-6311e07c]{margin:0 auto}.user-actions__other[data-v-6311e07c]{display:flex;justify-content:center;gap:0 4px}.icon-invert[data-v-6311e07c] .action-link__icon{filter:invert(1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAmTA,0BACC,UAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAdiB,CAejB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,+BAAA,CAGD,0DACC,WA7BgB,CA8BhB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,+BAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA3EgB,CA4EhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,gBApJkB,CAqJlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7JkB,CA+JlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,qBAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAKD,iDACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n.profile {\\n\\twidth: 100%;\\n\\n\\t&__header {\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname, &__status-text {\\n\\t\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-top: 128px;\\n\\t\\t\\t\\t// Override the global style declaration\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tcursor: text;\\n\\n\\t\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\t\\tmargin-top: 100px;\\n\\t\\t\\t\\t\\tmargin-bottom: 4px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\tmargin-left: 18px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\tbackground-color: var(--color-primary-text);\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-text);\\n\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\tpadding: 0 18px;\\n\\t\\t\\t\\tfont-size: var(--default-font-size);\\n\\t\\t\\t\\theight: 44px;\\n\\t\\t\\t\\tline-height: 44px;\\n\\t\\t\\t\\tfont-weight: bold;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.pencil-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__status-text {\\n\\t\\t\\t\\twidth: max-content;\\n\\t\\t\\t\\tmax-width: $content-max-width;\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -12px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\n\\t\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: var(--header-height);\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin: -150px 20px 0 0;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t&::v-deep .avatar.avatardiv, h2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\\n\\t\\t\\tbackground-color: var(--color-main-background) !important;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tright: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.interactive.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-top: 10px;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\n\\t\\th3, p {\\n\\t\\t\\tcursor: text;\\n\\t\\t}\\n\\n\\t\\t&-empty-info {\\n\\t\\t\\tmargin-top: 80px;\\n\\t\\t\\tmargin-right: 100px;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 18px;\\n\\t\\t\\t\\tmargin: 8px 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 100px 20px 0px;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\tdisplay: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 30px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\n\\t\\t\\t&-empty-info {\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\\n.icon-invert {\\n\\t&::v-deep .action-link__icon {\\n\\t\\tfilter: invert(1);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 651;","__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\t651: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(8948); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","_g","staticClass","class","disabled","attrs","href","target","$listeners","icon","colorPrimaryText","_v","_t","_s","displayname","userId","settingsUrl","t","_e","status","message","interactive","isCurrentUser","on","$event","preventDefault","stopPropagation","openStatusModal","apply","arguments","isUserAvatarVisible","nativeOn","primaryAction","id","title","_l","action","key","staticStyle","style","Object","assign","backgroundImage","colorMainBackground","filter","organisation","role","address","headline","biography","emptyProfileMessage","__webpack_nonce__","btoa","getRequestToken","Vue","VTooltip","props","logger","methods","Profile","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-profile.js?v=297ddd1c440519837411","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?e5bb","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?4873","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Profile.vue?165e","webpack://nextcloud/./core/src/views/Profile.vue?5f38","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=template&id=6311e07c&scoped=true&","webpack:///nextcloud/core/src/profile.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"profile__primary-action-button\"\n\t\t:class=\"{ 'disabled': disabled }\"\n\t\t:href=\"href\"\n\t\t:target=\"target\"\n\t\trel=\"noopener noreferrer nofollow\"\n\t\tv-on=\"$listeners\">\n\t\t<img class=\"icon\"\n\t\t\t:class=\"[icon, { 'icon-invert': colorPrimaryText === '#ffffff' }]\"\n\t\t\t:src=\"icon\">\n\t\t<slot />\n\t</a>\n</template>\n\n<script>\nexport default {\n\tname: 'PrimaryActionButton',\n\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => ['_self', '_blank', '_parent', '_top'].includes(value),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tcolorPrimaryText() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-primary-text').trim()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.profile__primary-action-button {\n\t\tfont-size: var(--default-font-size);\n\t\tfont-weight: bold;\n\t\twidth: 188px;\n\t\theight: 44px;\n\t\tpadding: 0 16px;\n\t\tline-height: 44px;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\n\t\t.icon {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\t\t\tmargin-bottom: 2px;\n\t\t\tmargin-right: 4px;\n\n\t\t\t&.icon-invert {\n\t\t\t\tfilter: invert(1);\n\t\t\t}\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&\"\nimport script from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35d5c4b6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',_vm._g({staticClass:\"profile__primary-action-button\",class:{ 'disabled': _vm.disabled },attrs:{\"href\":_vm.href,\"target\":_vm.target,\"rel\":\"noopener noreferrer nofollow\"}},_vm.$listeners),[_c('img',{staticClass:\"icon\",class:[_vm.icon, { 'icon-invert': _vm.colorPrimaryText === '#ffffff' }],attrs:{\"src\":_vm.icon}}),_vm._v(\" \"),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"profile\">\n\t\t<div class=\"profile__header\">\n\t\t\t<div class=\"profile__header__container\">\n\t\t\t\t<div class=\"profile__header__container__placeholder\" />\n\t\t\t\t<h2 class=\"profile__header__container__displayname\">\n\t\t\t\t\t{{ displayname || userId }}\n\t\t\t\t\t<a v-if=\"isCurrentUser\"\n\t\t\t\t\t\tclass=\"primary profile__header__container__edit-button\"\n\t\t\t\t\t\t:href=\"settingsUrl\">\n\t\t\t\t\t\t<PencilIcon class=\"pencil-icon\"\n\t\t\t\t\t\t\tdecorative\n\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t{{ t('core', 'Edit Profile') }}\n\t\t\t\t\t</a>\n\t\t\t\t</h2>\n\t\t\t\t<div v-if=\"status.icon || status.message\"\n\t\t\t\t\tclass=\"profile__header__container__status-text\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t@click.prevent.stop=\"openStatusModal\">\n\t\t\t\t\t{{ status.icon }} {{ status.message }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"profile__content\">\n\t\t\t<div class=\"profile__sidebar\">\n\t\t\t\t<Avatar class=\"avatar\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t:show-user-status=\"true\"\n\t\t\t\t\t:show-user-status-compact=\"false\"\n\t\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t\t:is-no-user=\"!isUserAvatarVisible\"\n\t\t\t\t\t@click.native.prevent.stop=\"openStatusModal\" />\n\n\t\t\t\t<div class=\"user-actions\">\n\t\t\t\t\t<!-- When a tel: URL is opened with target=\"_blank\", a blank new tab is opened which is inconsistent with the handling of other URLs so we set target=\"_self\" for the phone action -->\n\t\t\t\t\t<PrimaryActionButton v-if=\"primaryAction\"\n\t\t\t\t\t\tclass=\"user-actions__primary\"\n\t\t\t\t\t\t:href=\"primaryAction.target\"\n\t\t\t\t\t\t:icon=\"primaryAction.icon\"\n\t\t\t\t\t\t:target=\"primaryAction.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t{{ primaryAction.title }}\n\t\t\t\t\t</PrimaryActionButton>\n\t\t\t\t\t<div class=\"user-actions__other\">\n\t\t\t\t\t\t<!-- FIXME Remove inline styles after https://github.com/nextcloud/nextcloud-vue/issues/2315 is fixed -->\n\t\t\t\t\t\t<Actions v-for=\"action in middleActions\"\n\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t:default-icon=\"action.icon\"\n\t\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\t\tbackground-position: 14px center;\n\t\t\t\t\t\t\t\tbackground-size: 16px;\n\t\t\t\t\t\t\t\tbackground-repeat: no-repeat;\"\n\t\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${action.icon})`,\n\t\t\t\t\t\t\t\t...(colorMainBackground === '#181818' && { filter: 'invert(1)' })\n\t\t\t\t\t\t\t}\">\n\t\t\t\t\t\t\t<ActionLink :close-after-click=\"true\"\n\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t</ActionLink>\n\t\t\t\t\t\t</Actions>\n\t\t\t\t\t\t<template v-if=\"otherActions\">\n\t\t\t\t\t\t\t<Actions :force-menu=\"true\">\n\t\t\t\t\t\t\t\t<ActionLink v-for=\"action in otherActions\"\n\t\t\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t\t\t:class=\"{ 'icon-invert': colorMainBackground === '#181818' }\"\n\t\t\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t\t</ActionLink>\n\t\t\t\t\t\t\t</Actions>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"profile__blocks\">\n\t\t\t\t<div v-if=\"organisation || role || address\" class=\"profile__blocks-details\">\n\t\t\t\t\t<div v-if=\"organisation || role\" class=\"detail\">\n\t\t\t\t\t\t<p>{{ organisation }} <span v-if=\"organisation && role\">•</span> {{ role }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"address\" class=\"detail\">\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<MapMarkerIcon class=\"map-icon\"\n\t\t\t\t\t\t\t\tdecorative\n\t\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t\t{{ address }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<template v-if=\"headline || biography\">\n\t\t\t\t\t<div v-if=\"headline\" class=\"profile__blocks-headline\">\n\t\t\t\t\t\t<h3>{{ headline }}</h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"biography\" class=\"profile__blocks-biography\">\n\t\t\t\t\t\t<p>{{ biography }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div class=\"profile__blocks-empty-info\">\n\t\t\t\t\t\t<AccountIcon decorative\n\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\tfill-color=\"var(--color-text-maxcontrast)\"\n\t\t\t\t\t\t\t:size=\"60\" />\n\t\t\t\t\t\t<h3>{{ emptyProfileMessage }}</h3>\n\t\t\t\t\t\t<p>{{ t('core', 'The headline and about sections will show up here') }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError } from '@nextcloud/dialogs'\n\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport MapMarkerIcon from 'vue-material-design-icons/MapMarker'\nimport PencilIcon from 'vue-material-design-icons/Pencil'\nimport AccountIcon from 'vue-material-design-icons/Account'\n\nimport PrimaryActionButton from '../components/Profile/PrimaryActionButton'\n\nconst status = loadState('core', 'status', {})\nconst {\n\tuserId,\n\tdisplayname,\n\taddress,\n\torganisation,\n\trole,\n\theadline,\n\tbiography,\n\tactions,\n\tisUserAvatarVisible,\n} = loadState('core', 'profileParameters', {\n\tuserId: null,\n\tdisplayname: null,\n\taddress: null,\n\torganisation: null,\n\trole: null,\n\theadline: null,\n\tbiography: null,\n\tactions: [],\n\tisUserAvatarVisible: false,\n})\n\nexport default {\n\tname: 'Profile',\n\n\tcomponents: {\n\t\tAccountIcon,\n\t\tActionLink,\n\t\tActions,\n\t\tAvatar,\n\t\tMapMarkerIcon,\n\t\tPencilIcon,\n\t\tPrimaryActionButton,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tstatus,\n\t\t\tuserId,\n\t\t\tdisplayname,\n\t\t\taddress,\n\t\t\torganisation,\n\t\t\trole,\n\t\t\theadline,\n\t\t\tbiography,\n\t\t\tactions,\n\t\t\tisUserAvatarVisible,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisCurrentUser() {\n\t\t\treturn getCurrentUser()?.uid === this.userId\n\t\t},\n\n\t\tallActions() {\n\t\t\treturn this.actions\n\t\t},\n\n\t\tprimaryAction() {\n\t\t\tif (this.allActions.length) {\n\t\t\t\treturn this.allActions[0]\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tmiddleActions() {\n\t\t\tif (this.allActions.slice(1, 4).length) {\n\t\t\t\treturn this.allActions.slice(1, 4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\totherActions() {\n\t\t\tif (this.allActions.slice(4).length) {\n\t\t\t\treturn this.allActions.slice(4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tsettingsUrl() {\n\t\t\treturn generateUrl('/settings/user')\n\t\t},\n\n\t\tcolorMainBackground() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-main-background').trim()\n\t\t},\n\n\t\temptyProfileMessage() {\n\t\t\treturn this.isCurrentUser\n\t\t\t\t? t('core', 'You have not added any info yet')\n\t\t\t\t: t('core', '{user} has not added any info yet', { user: (this.displayname || this.userId) })\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Set the user's displayname or userId in the page title and preserve the default title of \"Nextcloud\" at the end\n\t\tdocument.title = `${this.displayname || this.userId} - ${document.title}`\n\t\tsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tmethods: {\n\t\thandleStatusUpdate(status) {\n\t\t\tif (this.isCurrentUser && status.userId === this.userId) {\n\t\t\t\tthis.status = status\n\t\t\t}\n\t\t},\n\n\t\topenStatusModal() {\n\t\t\tconst statusMenuItem = document.querySelector('.user-status-menu-item__toggle')\n\t\t\t// Changing the user status is only enabled if you are the current user\n\t\t\tif (this.isCurrentUser) {\n\t\t\t\tif (statusMenuItem) {\n\t\t\t\t\tstatusMenuItem.click()\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('core', 'Error opening the user status modal, try hard refreshing the page'))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 100px 20px 0px;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 30px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=6311e07c&scoped=true&\"\nimport script from \"./Profile.vue?vue&type=script&lang=js&\"\nexport * from \"./Profile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6311e07c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"profile\"},[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('h2',{staticClass:\"profile__header__container__displayname\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.displayname || _vm.userId)+\"\\n\\t\\t\\t\\t\"),(_vm.isCurrentUser)?_c('a',{staticClass:\"primary profile__header__container__edit-button\",attrs:{\"href\":_vm.settingsUrl}},[_c('PencilIcon',{staticClass:\"pencil-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\")],1):_vm._e()]),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('div',{staticClass:\"profile__header__container__status-text\",class:{ interactive: _vm.isCurrentUser },on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('Avatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('PrimaryActionButton',{staticClass:\"user-actions__primary\",attrs:{\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"user-actions__other\"},[_vm._l((_vm.middleActions),function(action){return _c('Actions',{key:action.id,staticStyle:{\"background-position\":\"14px center\",\"background-size\":\"16px\",\"background-repeat\":\"no-repeat\"},style:(Object.assign({}, {backgroundImage: (\"url(\" + (action.icon) + \")\")},\n\t\t\t\t\t\t\t(_vm.colorMainBackground === '#181818' && { filter: 'invert(1)' }))),attrs:{\"default-icon\":action.icon}},[_c('ActionLink',{attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),_vm._v(\" \"),(_vm.otherActions)?[_c('Actions',{attrs:{\"force-menu\":true}},_vm._l((_vm.otherActions),function(action){return _c('ActionLink',{key:action.id,class:{ 'icon-invert': _vm.colorMainBackground === '#181818' },attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])}),1)]:_vm._e()],2)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography)?[(_vm.headline)?_c('div',{staticClass:\"profile__blocks-headline\"},[_c('h3',[_vm._v(_vm._s(_vm.headline))])]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('div',{staticClass:\"profile__blocks-biography\"},[_c('p',[_vm._v(_vm._s(_vm.biography))])]):_vm._e()]:[_c('div',{staticClass:\"profile__blocks-empty-info\"},[_c('AccountIcon',{attrs:{\"decorative\":\"\",\"title\":\"\",\"fill-color\":\"var(--color-text-maxcontrast)\",\"size\":60}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.emptyProfileMessage))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.t('core', 'The headline and about sections will show up here')))])],1)]],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from 'v-tooltip'\n\nimport logger from './logger'\n\nimport Profile from './views/Profile'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.use(VTooltip)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(Profile)\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\tnew View().$mount('#vue-profile')\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/Profile/PrimaryActionButton.vue\"],\"names\":[],\"mappings\":\"AAsEA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.profile__primary-action-button {\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\twidth: 188px;\\n\\theight: 44px;\\n\\tpadding: 0 16px;\\n\\tline-height: 44px;\\n\\ttext-align: center;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tcolor: var(--color-primary-text);\\n\\tbackground-color: var(--color-primary-element);\\n\\toverflow: hidden;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\n\\t.icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-bottom: 2px;\\n\\t\\tmargin-right: 4px;\\n\\n\\t\\t&.icon-invert {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAqSA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n// Override header styles\\n#header {\\n\\tbackground-color: transparent !important;\\n\\tbackground-image: none !important;\\n}\\n\\n#content {\\n\\tpadding-top: 0px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".profile[data-v-6311e07c]{width:100%}.profile__header[data-v-6311e07c]{position:sticky;height:190px;top:-40px}.profile__header__container[data-v-6311e07c]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-6311e07c]{grid-row:1/3}.profile__header__container__displayname[data-v-6311e07c],.profile__header__container__status-text[data-v-6311e07c]{color:var(--color-primary-text)}.profile__header__container__displayname[data-v-6311e07c]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-6311e07c]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-6311e07c]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-6311e07c]:hover,.profile__header__container__edit-button[data-v-6311e07c]:focus,.profile__header__container__edit-button[data-v-6311e07c]:active{color:var(--color-primary-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-6311e07c]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-6311e07c]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-6311e07c]:hover,.profile__header__container__status-text.interactive[data-v-6311e07c]:focus,.profile__header__container__status-text.interactive[data-v-6311e07c]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-6311e07c]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv,.profile__sidebar h2[data-v-6311e07c]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__content[data-v-6311e07c]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-6311e07c]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-6311e07c],.profile__blocks h3[data-v-6311e07c]{overflow-wrap:anywhere}.profile__blocks-details[data-v-6311e07c]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-6311e07c]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-6311e07c]{margin-top:10px}.profile__blocks-headline h3[data-v-6311e07c]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-6311e07c]{white-space:pre-line}.profile__blocks h3[data-v-6311e07c],.profile__blocks p[data-v-6311e07c]{cursor:text}.profile__blocks-empty-info[data-v-6311e07c]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-6311e07c]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-6311e07c]{height:250px;position:unset}.profile__header__container[data-v-6311e07c]{grid-template-columns:unset}.profile__header__container__displayname[data-v-6311e07c]{margin:100px 20px 0px;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-6311e07c]{width:fit-content;display:block;margin:30px auto}.profile__content[data-v-6311e07c]{display:block}.profile__blocks[data-v-6311e07c]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-6311e07c]{margin:0}.profile__sidebar[data-v-6311e07c]{margin:unset;position:unset}}.user-actions[data-v-6311e07c]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-6311e07c]{margin:0 auto}.user-actions__other[data-v-6311e07c]{display:flex;justify-content:center;gap:0 4px}.icon-invert[data-v-6311e07c] .action-link__icon{filter:invert(1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAmTA,0BACC,UAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAdiB,CAejB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,+BAAA,CAGD,0DACC,WA7BgB,CA8BhB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,+BAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA3EgB,CA4EhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,gBApJkB,CAqJlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7JkB,CA+JlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,qBAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAKD,iDACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n.profile {\\n\\twidth: 100%;\\n\\n\\t&__header {\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname, &__status-text {\\n\\t\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-top: 128px;\\n\\t\\t\\t\\t// Override the global style declaration\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tcursor: text;\\n\\n\\t\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\t\\tmargin-top: 100px;\\n\\t\\t\\t\\t\\tmargin-bottom: 4px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\tmargin-left: 18px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\tbackground-color: var(--color-primary-text);\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-text);\\n\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\tpadding: 0 18px;\\n\\t\\t\\t\\tfont-size: var(--default-font-size);\\n\\t\\t\\t\\theight: 44px;\\n\\t\\t\\t\\tline-height: 44px;\\n\\t\\t\\t\\tfont-weight: bold;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.pencil-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__status-text {\\n\\t\\t\\t\\twidth: max-content;\\n\\t\\t\\t\\tmax-width: $content-max-width;\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -12px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\n\\t\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: var(--header-height);\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin: -150px 20px 0 0;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t&::v-deep .avatar.avatardiv, h2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\\n\\t\\t\\tbackground-color: var(--color-main-background) !important;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tright: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.interactive.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-top: 10px;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\n\\t\\th3, p {\\n\\t\\t\\tcursor: text;\\n\\t\\t}\\n\\n\\t\\t&-empty-info {\\n\\t\\t\\tmargin-top: 80px;\\n\\t\\t\\tmargin-right: 100px;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 18px;\\n\\t\\t\\t\\tmargin: 8px 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 100px 20px 0px;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\tdisplay: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 30px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\n\\t\\t\\t&-empty-info {\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\\n.icon-invert {\\n\\t&::v-deep .action-link__icon {\\n\\t\\tfilter: invert(1);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 651;","__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\t651: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(8948); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","_g","staticClass","class","disabled","attrs","href","target","$listeners","icon","colorPrimaryText","_v","_t","_s","displayname","userId","settingsUrl","t","_e","status","message","interactive","isCurrentUser","on","$event","preventDefault","stopPropagation","openStatusModal","apply","arguments","isUserAvatarVisible","nativeOn","primaryAction","id","title","_l","action","key","staticStyle","style","Object","assign","backgroundImage","colorMainBackground","filter","organisation","role","address","headline","biography","emptyProfileMessage","__webpack_nonce__","btoa","getRequestToken","Vue","VTooltip","props","logger","methods","View","Profile","window","addEventListener","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/dashboard-main.js b/dist/dashboard-main.js
index 89ef4179f4e..2ae0dc35219 100644
--- a/dist/dashboard-main.js
+++ b/dist/dashboard-main.js
@@ -1,3 +1,3 @@
/*! For license information please see dashboard-main.js.LICENSE.txt */
-!function(){"use strict";var n,e={30320:function(n,e,a){var o=a(20144),r=a(16453),i=a(22200),s=a(47450),d=a.n(s),c=a(9980),l=a.n(c),A=a(4820),u=a(79753),p={data:function(){return{isMobile:this._isMobile()}},beforeMount:function(){window.addEventListener("resize",this._onResize)},beforeDestroy:function(){window.removeEventListener("resize",this._onResize)},methods:{_onResize:function(){this.isMobile=this._isMobile()},_isMobile:function(){return document.documentElement.clientWidth<768}}},g=function(t){return(0,u.generateFilePath)("dashboard","","img/")+t},b=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=window.OCA.Theming.enabledThemes,o=-1!==a.join("").indexOf("dark");return"default"===t?e&&"backgroundColor"!==e?(0,u.generateUrl)("/apps/theming/image/background")+"?v="+window.OCA.Theming.cacheBuster:g(o?"eduardo-neves-pedra-azul.jpg":"kamil-porembinski-clouds.jpg"):"custom"===t?(0,u.generateUrl)("/apps/dashboard/background")+"?v="+n:g(t)};function C(t,n,e,a,o,r,i){try{var s=t[r](i),d=s.value}catch(t){return void e(t)}s.done?n(d):Promise.resolve(d).then(a,o)}function h(t){return function(){var n=this,e=arguments;return new Promise((function(a,o){var r=t.apply(n,e);function i(t){C(r,a,o,i,s,"next",t)}function s(t){C(r,a,o,i,s,"throw",t)}i(void 0)}))}}var f=(0,r.loadState)("dashboard","shippedBackgrounds"),v={name:"BackgroundSettings",props:{background:{type:String,default:"default"},themingDefaultBackground:{type:String,default:""}},data:function(){return{backgroundImage:(0,u.generateUrl)("/apps/dashboard/background")+"?v="+Date.now(),loading:!1}},computed:{shippedBackgrounds:function(){return Object.keys(f).map((function(t){return{name:t,url:g(t),preview:g("previews/"+t),details:f[t]}}))}},methods:{update:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a="custom"===t.type||"default"===t.type?t.type:t.value,n.backgroundImage=b(a,t.version,n.themingDefaultBackground),"color"!==t.type&&("default"!==t.type||"backgroundColor"!==n.themingDefaultBackground)){e.next=6;break}return n.$emit("update:background",t),n.loading=!1,e.abrupt("return");case 6:(o=new Image).onload=function(){n.$emit("update:background",t),n.loading=!1},o.src=n.backgroundImage;case 9:case"end":return e.stop()}}),e)})))()},setDefault:function(){var t=this;return h(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t.loading="default",n.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/default"));case 3:e=n.sent,t.update(e.data);case 5:case"end":return n.stop()}}),n)})))()},setShipped:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=t,e.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/shipped"),{value:t});case 3:a=e.sent,n.update(a.data);case 5:case"end":return e.stop()}}),e)})))()},setFile:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="custom",e.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/custom"),{value:t});case 3:a=e.sent,n.update(a.data);case 5:case"end":return e.stop()}}),e)})))()},pickColor:function(){var t=this;return h(regeneratorRuntime.mark((function n(){var e,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t.loading="color",e=OCA&&OCA.Theming?OCA.Theming.color:"#0082c9",n.next=4,A.default.post((0,u.generateUrl)("/apps/dashboard/background/color"),{value:e});case 4:a=n.sent,t.update(a.data);case 6:case"end":return n.stop()}}),n)})))()},pickFile:function(){var n=this;window.OC.dialogs.filepicker(t("dashboard","Insert from {productName}",{productName:OC.theme.name}),(function(t,e){e===OC.dialogs.FILEPICKER_TYPE_CHOOSE&&n.setFile(t)}),!1,["image/png","image/gif","image/jpeg","image/svg"],!0,OC.dialogs.FILEPICKER_TYPE_CHOOSE)}}},m=v,k=a(93379),x=a.n(k),y=a(7795),w=a.n(y),_=a(90569),S=a.n(_),B=a(3565),D=a.n(B),O=a(19216),E=a.n(O),F=a(44589),G=a.n(F),I=a(56510),T={};T.styleTagTransform=G(),T.setAttributes=D(),T.insert=S().bind(null,"head"),T.domAPI=w(),T.insertStyleElement=E(),x()(I.Z,T),I.Z&&I.Z.locals&&I.Z.locals;var j=a(51900),z=(0,j.Z)(m,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"background-selector"},[e("button",{staticClass:"background filepicker",class:{active:"custom"===t.background},attrs:{tabindex:"0"},on:{click:t.pickFile}},[t._v("\n\t\t"+t._s(t.t("dashboard","Pick from Files"))+"\n\t")]),t._v(" "),e("button",{staticClass:"background default",class:{"icon-loading":"default"===t.loading,active:"default"===t.background},attrs:{tabindex:"0"},on:{click:t.setDefault}},[t._v("\n\t\t"+t._s(t.t("dashboard","Default images"))+"\n\t")]),t._v(" "),e("button",{staticClass:"background color",class:{active:"custom"===t.background},attrs:{tabindex:"0"},on:{click:t.pickColor}},[t._v("\n\t\t"+t._s(t.t("dashboard","Plain background"))+"\n\t")]),t._v(" "),t._l(t.shippedBackgrounds,(function(n){return e("button",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.details.attribution,expression:"shippedBackground.details.attribution"}],key:n.name,staticClass:"background",class:{"icon-loading":t.loading===n.name,active:t.background===n.name},style:{"background-image":"url("+n.preview+")"},attrs:{tabindex:"0"},on:{click:function(e){return t.setShipped(n.name)}}})}))],2)}),[],!1,null,"e4c3a7ca",null).exports,R=(0,r.loadState)("dashboard","panels"),P=(0,r.loadState)("dashboard","firstRun"),U=(0,r.loadState)("dashboard","background"),L=(0,r.loadState)("dashboard","themingDefaultBackground"),N=(0,r.loadState)("dashboard","version"),W=(0,r.loadState)("dashboard","shippedBackgrounds"),M={weather:{text:t("dashboard","Weather"),icon:"icon-weather-status"},status:{text:t("dashboard","Status"),icon:"icon-user-status-online"}},q={name:"App",components:{Modal:d(),Draggable:l(),BackgroundSettings:z},mixins:[p],data:function(){var t,n;return{isAdmin:(0,i.getCurrentUser)().isAdmin,timer:new Date,registeredStatus:[],callbacks:{},callbacksStatus:{},allCallbacksStatus:{},statusInfo:M,enabledStatuses:(0,r.loadState)("dashboard","statuses"),panels:R,firstRun:P,displayName:null===(t=(0,i.getCurrentUser)())||void 0===t?void 0:t.displayName,uid:null===(n=(0,i.getCurrentUser)())||void 0===n?void 0:n.uid,layout:(0,r.loadState)("dashboard","layout").filter((function(t){return R[t]})),modal:!1,appStoreUrl:(0,u.generateUrl)("/settings/apps/dashboard"),statuses:{},background:U,themingDefaultBackground:L,version:N}},computed:{backgroundImage:function(){return b(this.background,this.version,this.themingDefaultBackground)},backgroundStyle:function(){return"default"===this.background&&"backgroundColor"===this.themingDefaultBackground||this.background.match(/#[0-9A-Fa-f]{6}/g)?null:{backgroundImage:"url(".concat(this.backgroundImage,")")}},greeting:function(){var n,e=this.timer.getHours();n=e>=22||e<5?"night":e>=18?"evening":e>=12?"afternoon":"morning";var a={morning:{generic:t("dashboard","Good morning"),withName:t("dashboard","Good morning, {name}",{name:this.displayName},void 0,{escape:!1})},afternoon:{generic:t("dashboard","Good afternoon"),withName:t("dashboard","Good afternoon, {name}",{name:this.displayName},void 0,{escape:!1})},evening:{generic:t("dashboard","Good evening"),withName:t("dashboard","Good evening, {name}",{name:this.displayName},void 0,{escape:!1})},night:{generic:t("dashboard","Hello"),withName:t("dashboard","Hello, {name}",{name:this.displayName},void 0,{escape:!1})}};return{text:this.displayName&&this.uid!==this.displayName?a[n].withName:a[n].generic}},isActive:function(){var t=this;return function(n){return t.layout.indexOf(n.id)>-1}},isStatusActive:function(){var t=this;return function(n){return!(n in t.enabledStatuses)||t.enabledStatuses[n]}},sortedAllStatuses:function(){return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)},sortedPanels:function(){var t=this;return Object.values(this.panels).sort((function(n,e){var a=t.layout.indexOf(n.id),o=t.layout.indexOf(e.id);return-1===a||-1===o?o-a||n.id-e.id:a-o||n.id-e.id}))},sortedRegisteredStatus:function(){return this.registeredStatus.slice().sort(this.sortStatuses)}},watch:{callbacks:function(){this.rerenderPanels()},callbacksStatus:function(){for(var t in this.callbacksStatus){var n=this.$refs["status-"+t];this.statuses[t]&&this.statuses[t].mounted||(n?(this.callbacksStatus[t](n[0]),o.default.set(this.statuses,t,{mounted:!0})):console.error("Failed to register panel in the frontend as no backend data was provided for "+t))}}},mounted:function(){var t=this;this.updateGlobalStyles(),this.updateSkipLink(),window.addEventListener("scroll",this.handleScroll),setInterval((function(){t.timer=new Date}),3e4),this.firstRun&&window.addEventListener("scroll",this.disableFirstrunHint)},destroyed:function(){window.removeEventListener("scroll",this.handleScroll)},methods:{register:function(t,n){o.default.set(this.callbacks,t,n)},registerStatus:function(t,n){var e=this;o.default.set(this.allCallbacksStatus,t,n),this.isStatusActive(t)&&(this.registeredStatus.push(t),this.$nextTick((function(){o.default.set(e.callbacksStatus,t,n)})))},rerenderPanels:function(){for(var t in this.callbacks){var n=this.$refs[t];-1!==this.layout.indexOf(t)&&(this.panels[t]&&this.panels[t].mounted||(n?(this.callbacks[t](n[0],{widget:this.panels[t]}),o.default.set(this.panels[t],"mounted",!0)):console.error("Failed to register panel in the frontend as no backend data was provided for "+t)))}},saveLayout:function(){A.default.post((0,u.generateUrl)("/apps/dashboard/layout"),{layout:this.layout.join(",")})},saveStatuses:function(){A.default.post((0,u.generateUrl)("/apps/dashboard/statuses"),{statuses:JSON.stringify(this.enabledStatuses)})},showModal:function(){this.modal=!0,this.firstRun=!1},closeModal:function(){this.modal=!1},updateCheckbox:function(t,n){var e=this,a=this.layout.indexOf(t.id);!n&&a>-1?this.layout.splice(a,1):this.layout.push(t.id),o.default.set(this.panels[t.id],"mounted",!1),this.saveLayout(),this.$nextTick((function(){return e.rerenderPanels()}))},disableFirstrunHint:function(){var t=this;window.removeEventListener("scroll",this.disableFirstrunHint),setTimeout((function(){t.firstRun=!1}),1e3)},updateBackground:function(t){this.background="custom"===t.type||"default"===t.type?t.type:t.value,this.version=t.version,this.updateGlobalStyles()},updateGlobalStyles:function(){document.body.setAttribute("data-dashboard-background",this.background),window.OCA.Theming.inverted&&document.body.classList.add("dashboard--inverted"),"dark"===(W[this.background]?W[this.background].theming:"light")?document.body.classList.add("dashboard--dark"):document.body.classList.remove("dashboard--dark")},updateSkipLink:function(){document.getElementsByClassName("skip-navigation")[0].setAttribute("href","#app-dashboard")},updateStatusCheckbox:function(t,n){n?this.enableStatus(t):this.disableStatus(t)},enableStatus:function(t){this.enabledStatuses[t]=!0,this.registerStatus(t,this.allCallbacksStatus[t]),this.saveStatuses()},disableStatus:function(t){var n=this;this.enabledStatuses[t]=!1;var e=this.registeredStatus.findIndex((function(n){return n===t}));-1!==e&&(this.registeredStatus.splice(e,1),o.default.set(this.statuses,t,{mounted:!1}),this.$nextTick((function(){o.default.delete(n.callbacksStatus,t)}))),this.saveStatuses()},sortStatuses:function(t,n){var e=t.toLowerCase(),a=n.toLowerCase();return e>a?1:e<a?-1:0},handleScroll:function(){window.scrollY>70?document.body.classList.add("dashboard--scrolled"):document.body.classList.remove("dashboard--scrolled")}}},Z=a(44326),H={};H.styleTagTransform=G(),H.setAttributes=D(),H.insert=S().bind(null,"head"),H.domAPI=w(),H.insertStyleElement=E(),x()(Z.Z,H),Z.Z&&Z.Z.locals&&Z.Z.locals;var Y=(0,j.Z)(q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{style:t.backgroundStyle,attrs:{id:"app-dashboard"}},[e("h2",[t._v(t._s(t.greeting.text))]),t._v(" "),e("ul",{staticClass:"statuses"},t._l(t.sortedRegisteredStatus,(function(t){return e("div",{key:t,attrs:{id:"status-"+t}},[e("div",{ref:"status-"+t,refInFor:!0})])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{handle:".panel--header"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.layout,(function(n){return e("div",{key:t.panels[n].id,staticClass:"panel"},[e("div",{staticClass:"panel--header"},[e("h2",{class:t.panels[n].iconClass},[t._v("\n\t\t\t\t\t"+t._s(t.panels[n].title)+"\n\t\t\t\t")])]),t._v(" "),e("div",{staticClass:"panel--content",class:{loading:!t.panels[n].mounted}},[e("div",{ref:t.panels[n].id,refInFor:!0,attrs:{"data-id":t.panels[n].id}})])])})),0),t._v(" "),e("div",{staticClass:"footer"},[e("a",{staticClass:"edit-panels icon-rename",attrs:{tabindex:"0"},on:{click:t.showModal,keyup:[function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:t.showModal.apply(null,arguments)},function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"space",32,n.key,[" ","Spacebar"])?null:t.showModal.apply(null,arguments)}]}},[t._v(t._s(t.t("dashboard","Customize")))])]),t._v(" "),t.modal?e("Modal",{attrs:{size:"large"},on:{close:t.closeModal}},[e("div",{staticClass:"modal__content"},[e("h3",[t._v(t._s(t.t("dashboard","Edit widgets")))]),t._v(" "),e("ol",{staticClass:"panels"},t._l(t.sortedAllStatuses,(function(n){return e("li",{key:n},[e("input",{staticClass:"checkbox",attrs:{id:"status-checkbox-"+n,type:"checkbox"},domProps:{checked:t.isStatusActive(n)},on:{input:function(e){return t.updateStatusCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{class:t.statusInfo[n].icon,attrs:{for:"status-checkbox-"+n}},[t._v("\n\t\t\t\t\t\t"+t._s(t.statusInfo[n].text)+"\n\t\t\t\t\t")])])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{tag:"ol",handle:".draggable"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.sortedPanels,(function(n){return e("li",{key:n.id},[e("input",{staticClass:"checkbox",attrs:{id:"panel-checkbox-"+n.id,type:"checkbox"},domProps:{checked:t.isActive(n)},on:{input:function(e){return t.updateCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{class:t.isActive(n)?"draggable "+n.iconClass:n.iconClass,attrs:{for:"panel-checkbox-"+n.id}},[t._v("\n\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t")])])})),0),t._v(" "),t.isAdmin?e("a",{staticClass:"button",attrs:{href:t.appStoreUrl}},[t._v(t._s(t.t("dashboard","Get more widgets from the App Store")))]):t._e(),t._v(" "),e("h3",[t._v(t._s(t.t("dashboard","Change background image")))]),t._v(" "),e("BackgroundSettings",{attrs:{background:t.background,"theming-default-background":t.themingDefaultBackground},on:{"update:background":t.updateBackground}}),t._v(" "),e("h3",[t._v(t._s(t.t("dashboard","Weather service")))]),t._v(" "),e("p",[t._v("\n\t\t\t\t"+t._s(t.t("dashboard","For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."))+"\n\t\t\t")]),t._v(" "),e("p",{staticClass:"credits--end"},[e("a",{attrs:{href:"https://api.met.no/doc/TermsOfService",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","Weather data from Met.no")))]),t._v(",\n\t\t\t\t"),e("a",{attrs:{href:"https://wiki.osmfoundation.org/wiki/Privacy_Policy",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","geocoding with Nominatim")))]),t._v(",\n\t\t\t\t"),e("a",{attrs:{href:"https://www.opentopodata.org/#public-api",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","elevation data from OpenTopoData")))]),t._v(".\n\t\t\t")])],1)]):t._e()],1)}),[],!1,null,"af526754",null),$=Y.exports,K=a(9944),Q=a(15168),J=a.n(Q);a.nc=btoa((0,i.getRequestToken)()),o.default.directive("Tooltip",J()),o.default.prototype.t=K.translate,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files);var V=new(o.default.extend($))({}).$mount("#app-content-vue");window.OCA.Dashboard={register:function(t,n){return V.register(t,n)},registerStatus:function(t,n){return V.registerStatus(t,n)}}},44326:function(t,n,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([t.id,"#app-dashboard[data-v-af526754]{width:100%;min-height:100vh;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed;background-color:var(--color-primary);--color-background-translucent: rgba(255, 255, 255, 0.8);--background-blur: blur(10px)}#body-user.theme--dark #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: rgba(24, 24, 24, 0.8)}#body-user.theme--highcontrast #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: var(--color-main-background)}#app-dashboard>h2[data-v-af526754]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:10vh 16px 0px}.panels[data-v-af526754]{width:auto;margin:auto;max-width:1500px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-af526754],.panels>div[data-v-af526754]{width:320px;max-width:100%;margin:16px;background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-af526754],#body-user.theme--highcontrast .panels>div[data-v-af526754]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-af526754],.panels>div.sortable-ghost[data-v-af526754]{opacity:.1}.panel>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-af526754],.panel>.panel--header[data-v-af526754] *,.panels>div>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-af526754]:active,.panels>div>.panel--header[data-v-af526754]:active{cursor:grabbing}.panel>.panel--header a[data-v-af526754],.panels>div>.panel--header a[data-v-af526754]{flex-grow:1}.panel>.panel--header>h2[data-v-af526754],.panels>div>.panel--header>h2[data-v-af526754]{display:block;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;background-size:32px;background-position:14px 12px;padding:16px 8px 16px 60px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{margin:0 16px 16px 16px;height:420px;overflow:hidden}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{height:auto}}.footer[data-v-af526754]{text-align:center;transition:bottom var(--animation-slow) ease-in-out;bottom:0;padding:44px 0}.edit-panels[data-v-af526754]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.edit-panels[data-v-af526754],.statuses[data-v-af526754] .action-item .action-item__menutoggle,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);opacity:1 !important}.edit-panels[data-v-af526754]:hover,.edit-panels[data-v-af526754]:focus,.edit-panels[data-v-af526754]:active,.statuses[data-v-af526754] .action-item .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item .action-item__menutoggle:active,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.edit-panels[data-v-af526754]:focus-visible,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus-visible{border:2px solid var(--color-main-text) !important}.modal__content[data-v-af526754]{padding:32px 16px;text-align:center}.modal__content ol[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-af526754]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-size:24px;background-position:16px 16px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label[data-v-af526754]:hover{border-color:var(--color-primary)}.modal__content li input[type=checkbox].checkbox+label[data-v-af526754]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-af526754]{border-color:var(--color-primary)}.modal__content h3[data-v-af526754]{font-weight:bold}.modal__content h3[data-v-af526754]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-af526754]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-af526754]{max-width:650px;margin:0 auto}.modal__content p a[data-v-af526754]:hover,.modal__content p a[data-v-af526754]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-af526754]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-af526754]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-af526754]{transition:transform var(--animation-slow)}.statuses[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>div[data-v-af526754]{margin:8px}","",{version:3,sources:["webpack://./apps/dashboard/src/App.vue"],names:[],mappings:"AAqZA,gCACC,UAAA,CACA,gBAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CACA,qCAAA,CACA,wDAAA,CACA,6BAAA,CAEA,uDACC,6CAAA,CACA,qDAAA,CAGD,+DACC,6CAAA,CACA,4DAAA,CAGD,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,4KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,oBAAA,CACA,6BAAA,CACA,0BAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CAIF,qFACC,uBAAA,CACA,YAAA,CAEA,eAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,iBAAA,CACA,mDAAA,CACA,QAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,oLAGC,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,oBAAA,CAEA,qlBAGC,yDAAA,CAED,8NACC,kDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,oBAAA,CACA,6BAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,gDACC,iCAAA,CAIF,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,+BACC,UAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100vh;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\tbackground-color: var(--color-primary);\n\t--color-background-translucent: rgba(255, 255, 255, 0.8);\n\t--background-blur: blur(10px);\n\n\t#body-user.theme--dark & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: rgba(24, 24, 24, 0.8);\n\t}\n\n\t#body-user.theme--highcontrast & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: var(--color-main-background);\n\t}\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 10vh 16px 0px;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1500px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tbackground-size: 32px;\n\t\t\tbackground-position: 14px 12px;\n\t\t\tpadding: 16px 8px 16px 60px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 420px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: hidden;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\ttext-align: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tbottom: 0;\n\tpadding: 44px 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tborder: 2px solid var(--color-main-text)!important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\tbackground-size: 24px;\n\t\t\tbackground-position: 16px 16px;\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > div {\n\t\tmargin: 8px;\n\t}\n}\n"],sourceRoot:""}]),n.Z=i},56510:function(t,n,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([t.id,'.background-selector[data-v-e4c3a7ca]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-e4c3a7ca]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-e4c3a7ca]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-e4c3a7ca],.background-selector .background.default[data-v-e4c3a7ca],.background-selector .background.color[data-v-e4c3a7ca]{border-color:var(--color-border)}.background-selector .background.color[data-v-e4c3a7ca]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-e4c3a7ca],.background-selector .background[data-v-e4c3a7ca]:hover,.background-selector .background[data-v-e4c3a7ca]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-fff);background-repeat:no-repeat;background-position:center;background-size:44px;content:"";display:block;height:100%}body.theme--dark .background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-000)}',"",{version:3,sources:["webpack://./apps/dashboard/src/components/BackgroundSettings.vue"],names:[],mappings:"AA4IA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,0CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA,CAEA,mGACC,0CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-fff);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: var(--icon-checkmark-000);\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),n.Z=i}},a={};function o(t){var n=a[t];if(void 0!==n)return n.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,a,r){if(!e){var i=1/0;for(l=0;l<n.length;l++){e=n[l][0],a=n[l][1],r=n[l][2];for(var s=!0,d=0;d<e.length;d++)(!1&r||i>=r)&&Object.keys(o.O).every((function(t){return o.O[t](e[d])}))?e.splice(d--,1):(s=!1,r<i&&(i=r));if(s){n.splice(l--,1);var c=a();void 0!==c&&(t=c)}}return t}r=r||0;for(var l=n.length;l>0&&n[l-1][2]>r;l--)n[l]=n[l-1];n[l]=[e,a,r]},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,{a:n}),n},o.d=function(t,n){for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=773,function(){o.b=document.baseURI||self.location.href;var t={773:0};o.O.j=function(n){return 0===t[n]};var n=function(n,e){var a,r,i=e[0],s=e[1],d=e[2],c=0;if(i.some((function(n){return 0!==t[n]}))){for(a in s)o.o(s,a)&&(o.m[a]=s[a]);if(d)var l=d(o)}for(n&&n(e);c<i.length;c++)r=i[c],o.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return o.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}();var r=o.O(void 0,[874],(function(){return o(30320)}));r=o.O(r)}();
-//# sourceMappingURL=dashboard-main.js.map?v=4ea0413619f5fd828d7e \ No newline at end of file
+!function(){"use strict";var n,e={65880:function(n,e,a){var o=a(20144),r=a(79753),i=a(22200),s=a(16453),d=a(4820),l=a(1412),c=a.n(l),A=a(9980),u=a.n(A),p=a(47450),g=a.n(p),b=a(59466),C={data:function(){return{isMobile:this._isMobile()}},beforeMount:function(){window.addEventListener("resize",this._onResize)},beforeDestroy:function(){window.removeEventListener("resize",this._onResize)},methods:{_onResize:function(){this.isMobile=this._isMobile()},_isMobile:function(){return document.documentElement.clientWidth<768}}},h=function(t){return(0,r.generateFilePath)("dashboard","","img/")+t},v=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=window.OCA.Theming.enabledThemes,o=-1!==a.join("").indexOf("dark");return"default"===t?e&&"backgroundColor"!==e?(0,r.generateUrl)("/apps/theming/image/background")+"?v="+window.OCA.Theming.cacheBuster:h(o?"eduardo-neves-pedra-azul.jpg":"kamil-porembinski-clouds.jpg"):"custom"===t?(0,r.generateUrl)("/apps/dashboard/background")+"?v="+n:h(t)};function f(t,n,e,a,o,r,i){try{var s=t[r](i),d=s.value}catch(t){return void e(t)}s.done?n(d):Promise.resolve(d).then(a,o)}function m(t){return function(){var n=this,e=arguments;return new Promise((function(a,o){var r=t.apply(n,e);function i(t){f(r,a,o,i,s,"next",t)}function s(t){f(r,a,o,i,s,"throw",t)}i(void 0)}))}}var k=(0,s.loadState)("dashboard","shippedBackgrounds"),x={name:"BackgroundSettings",props:{background:{type:String,default:"default"},themingDefaultBackground:{type:String,default:""}},data:function(){return{backgroundImage:(0,r.generateUrl)("/apps/dashboard/background")+"?v="+Date.now(),loading:!1}},computed:{shippedBackgrounds:function(){return Object.keys(k).map((function(t){return{name:t,url:h(t),preview:h("previews/"+t),details:k[t]}}))}},methods:{update:function(t){var n=this;return m(regeneratorRuntime.mark((function e(){var a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a="custom"===t.type||"default"===t.type?t.type:t.value,n.backgroundImage=v(a,t.version,n.themingDefaultBackground),"color"!==t.type&&("default"!==t.type||"backgroundColor"!==n.themingDefaultBackground)){e.next=6;break}return n.$emit("update:background",t),n.loading=!1,e.abrupt("return");case 6:(o=new Image).onload=function(){n.$emit("update:background",t),n.loading=!1},o.src=n.backgroundImage;case 9:case"end":return e.stop()}}),e)})))()},setDefault:function(){var t=this;return m(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t.loading="default",n.next=3,d.default.post((0,r.generateUrl)("/apps/dashboard/background/default"));case 3:e=n.sent,t.update(e.data);case 5:case"end":return n.stop()}}),n)})))()},setShipped:function(t){var n=this;return m(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=t,e.next=3,d.default.post((0,r.generateUrl)("/apps/dashboard/background/shipped"),{value:t});case 3:a=e.sent,n.update(a.data);case 5:case"end":return e.stop()}}),e)})))()},setFile:function(t){var n=this;return m(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="custom",e.next=3,d.default.post((0,r.generateUrl)("/apps/dashboard/background/custom"),{value:t});case 3:a=e.sent,n.update(a.data);case 5:case"end":return e.stop()}}),e)})))()},pickColor:function(){var t=this;return m(regeneratorRuntime.mark((function n(){var e,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t.loading="color",e=OCA&&OCA.Theming?OCA.Theming.color:"#0082c9",n.next=4,d.default.post((0,r.generateUrl)("/apps/dashboard/background/color"),{value:e});case 4:a=n.sent,t.update(a.data);case 6:case"end":return n.stop()}}),n)})))()},pickFile:function(){var n=this;window.OC.dialogs.filepicker(t("dashboard","Insert from {productName}",{productName:OC.theme.name}),(function(t,e){e===OC.dialogs.FILEPICKER_TYPE_CHOOSE&&n.setFile(t)}),!1,["image/png","image/gif","image/jpeg","image/svg"],!0,OC.dialogs.FILEPICKER_TYPE_CHOOSE)}}},y=x,w=a(93379),_=a.n(w),S=a(7795),B=a.n(S),D=a(90569),O=a.n(D),E=a(3565),F=a.n(E),G=a(19216),P=a.n(G),j=a(44589),T=a.n(j),I=a(84196),z={};z.styleTagTransform=T(),z.setAttributes=F(),z.insert=O().bind(null,"head"),z.domAPI=B(),z.insertStyleElement=P(),_()(I.Z,z),I.Z&&I.Z.locals&&I.Z.locals;var R=a(51900),U=(0,R.Z)(y,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"background-selector"},[e("button",{staticClass:"background filepicker",class:{active:"custom"===t.background},attrs:{tabindex:"0"},on:{click:t.pickFile}},[t._v("\n\t\t"+t._s(t.t("dashboard","Pick from Files"))+"\n\t")]),t._v(" "),e("button",{staticClass:"background default",class:{"icon-loading":"default"===t.loading,active:"default"===t.background},attrs:{tabindex:"0"},on:{click:t.setDefault}},[t._v("\n\t\t"+t._s(t.t("dashboard","Default images"))+"\n\t")]),t._v(" "),e("button",{staticClass:"background color",class:{active:"custom"===t.background},attrs:{tabindex:"0"},on:{click:t.pickColor}},[t._v("\n\t\t"+t._s(t.t("dashboard","Plain background"))+"\n\t")]),t._v(" "),t._l(t.shippedBackgrounds,(function(n){return e("button",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.details.attribution,expression:"shippedBackground.details.attribution"}],key:n.name,staticClass:"background",class:{"icon-loading":t.loading===n.name,active:t.background===n.name},style:{"background-image":"url("+n.preview+")"},attrs:{tabindex:"0"},on:{click:function(e){return t.setShipped(n.name)}}})}))],2)}),[],!1,null,"7cb6c209",null).exports,N=(0,s.loadState)("dashboard","panels"),W=(0,s.loadState)("dashboard","firstRun"),L=(0,s.loadState)("dashboard","background"),q=(0,s.loadState)("dashboard","themingDefaultBackground"),M=(0,s.loadState)("dashboard","version"),H=(0,s.loadState)("dashboard","shippedBackgrounds"),Y={weather:{text:t("dashboard","Weather"),icon:"icon-weather-status"},status:{text:t("dashboard","Status"),icon:"icon-user-status-online"}},Z={name:"DashboardApp",components:{BackgroundSettings:U,Button:c(),Draggable:u(),Modal:g(),Pencil:b.default},mixins:[C],data:function(){var t,n;return{isAdmin:(0,i.getCurrentUser)().isAdmin,timer:new Date,registeredStatus:[],callbacks:{},callbacksStatus:{},allCallbacksStatus:{},statusInfo:Y,enabledStatuses:(0,s.loadState)("dashboard","statuses"),panels:N,firstRun:W,displayName:null===(t=(0,i.getCurrentUser)())||void 0===t?void 0:t.displayName,uid:null===(n=(0,i.getCurrentUser)())||void 0===n?void 0:n.uid,layout:(0,s.loadState)("dashboard","layout").filter((function(t){return N[t]})),modal:!1,appStoreUrl:(0,r.generateUrl)("/settings/apps/dashboard"),statuses:{},background:L,themingDefaultBackground:q,version:M}},computed:{backgroundImage:function(){return v(this.background,this.version,this.themingDefaultBackground)},backgroundStyle:function(){return"default"===this.background&&"backgroundColor"===this.themingDefaultBackground||this.background.match(/#[0-9A-Fa-f]{6}/g)?null:{backgroundImage:"url(".concat(this.backgroundImage,")")}},greeting:function(){var n,e=this.timer.getHours();n=e>=22||e<5?"night":e>=18?"evening":e>=12?"afternoon":"morning";var a={morning:{generic:t("dashboard","Good morning"),withName:t("dashboard","Good morning, {name}",{name:this.displayName},void 0,{escape:!1})},afternoon:{generic:t("dashboard","Good afternoon"),withName:t("dashboard","Good afternoon, {name}",{name:this.displayName},void 0,{escape:!1})},evening:{generic:t("dashboard","Good evening"),withName:t("dashboard","Good evening, {name}",{name:this.displayName},void 0,{escape:!1})},night:{generic:t("dashboard","Hello"),withName:t("dashboard","Hello, {name}",{name:this.displayName},void 0,{escape:!1})}};return{text:this.displayName&&this.uid!==this.displayName?a[n].withName:a[n].generic}},isActive:function(){var t=this;return function(n){return t.layout.indexOf(n.id)>-1}},isStatusActive:function(){var t=this;return function(n){return!(n in t.enabledStatuses)||t.enabledStatuses[n]}},sortedAllStatuses:function(){return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)},sortedPanels:function(){var t=this;return Object.values(this.panels).sort((function(n,e){var a=t.layout.indexOf(n.id),o=t.layout.indexOf(e.id);return-1===a||-1===o?o-a||n.id-e.id:a-o||n.id-e.id}))},sortedRegisteredStatus:function(){return this.registeredStatus.slice().sort(this.sortStatuses)}},watch:{callbacks:function(){this.rerenderPanels()},callbacksStatus:function(){for(var t in this.callbacksStatus){var n=this.$refs["status-"+t];this.statuses[t]&&this.statuses[t].mounted||(n?(this.callbacksStatus[t](n[0]),o.default.set(this.statuses,t,{mounted:!0})):console.error("Failed to register panel in the frontend as no backend data was provided for "+t))}}},mounted:function(){var t=this;this.updateGlobalStyles(),this.updateSkipLink(),window.addEventListener("scroll",this.handleScroll),setInterval((function(){t.timer=new Date}),3e4),this.firstRun&&window.addEventListener("scroll",this.disableFirstrunHint)},destroyed:function(){window.removeEventListener("scroll",this.handleScroll)},methods:{register:function(t,n){o.default.set(this.callbacks,t,n)},registerStatus:function(t,n){var e=this;o.default.set(this.allCallbacksStatus,t,n),this.isStatusActive(t)&&(this.registeredStatus.push(t),this.$nextTick((function(){o.default.set(e.callbacksStatus,t,n)})))},rerenderPanels:function(){for(var t in this.callbacks){var n=this.$refs[t];-1!==this.layout.indexOf(t)&&(this.panels[t]&&this.panels[t].mounted||(n?(this.callbacks[t](n[0],{widget:this.panels[t]}),o.default.set(this.panels[t],"mounted",!0)):console.error("Failed to register panel in the frontend as no backend data was provided for "+t)))}},saveLayout:function(){d.default.post((0,r.generateUrl)("/apps/dashboard/layout"),{layout:this.layout.join(",")})},saveStatuses:function(){d.default.post((0,r.generateUrl)("/apps/dashboard/statuses"),{statuses:JSON.stringify(this.enabledStatuses)})},showModal:function(){this.modal=!0,this.firstRun=!1},closeModal:function(){this.modal=!1},updateCheckbox:function(t,n){var e=this,a=this.layout.indexOf(t.id);!n&&a>-1?this.layout.splice(a,1):this.layout.push(t.id),o.default.set(this.panels[t.id],"mounted",!1),this.saveLayout(),this.$nextTick((function(){return e.rerenderPanels()}))},disableFirstrunHint:function(){var t=this;window.removeEventListener("scroll",this.disableFirstrunHint),setTimeout((function(){t.firstRun=!1}),1e3)},updateBackground:function(t){this.background="custom"===t.type||"default"===t.type?t.type:t.value,this.version=t.version,this.updateGlobalStyles()},updateGlobalStyles:function(){var t;"dark"===(null===(t=H[this.background])||void 0===t?void 0:t.theming)?(document.querySelector("#header").style.setProperty("--primary-invert-if-bright","invert(100%)"),document.querySelector("#header").style.setProperty("--color-primary-text","#000000")):(document.querySelector("#header").style.removeProperty("--primary-invert-if-bright"),document.querySelector("#header").style.removeProperty("--color-primary-text"))},updateSkipLink:function(){document.getElementsByClassName("skip-navigation")[0].setAttribute("href","#app-dashboard")},updateStatusCheckbox:function(t,n){n?this.enableStatus(t):this.disableStatus(t)},enableStatus:function(t){this.enabledStatuses[t]=!0,this.registerStatus(t,this.allCallbacksStatus[t]),this.saveStatuses()},disableStatus:function(t){var n=this;this.enabledStatuses[t]=!1;var e=this.registeredStatus.findIndex((function(n){return n===t}));-1!==e&&(this.registeredStatus.splice(e,1),o.default.set(this.statuses,t,{mounted:!1}),this.$nextTick((function(){o.default.delete(n.callbacksStatus,t)}))),this.saveStatuses()},sortStatuses:function(t,n){var e=t.toLowerCase(),a=n.toLowerCase();return e>a?1:e<a?-1:0},handleScroll:function(){window.scrollY>70?document.body.classList.add("dashboard--scrolled"):document.body.classList.remove("dashboard--scrolled")}}},K=a(50968),$={};$.styleTagTransform=T(),$.setAttributes=F(),$.insert=O().bind(null,"head"),$.domAPI=B(),$.insertStyleElement=P(),_()(K.Z,$),K.Z&&K.Z.locals&&K.Z.locals;var Q=(0,R.Z)(Z,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{style:t.backgroundStyle,attrs:{id:"app-dashboard"}},[e("h2",[t._v(t._s(t.greeting.text))]),t._v(" "),e("ul",{staticClass:"statuses"},t._l(t.sortedRegisteredStatus,(function(t){return e("div",{key:t,attrs:{id:"status-"+t}},[e("div",{ref:"status-"+t,refInFor:!0})])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{handle:".panel--header"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.layout,(function(n){return e("div",{key:t.panels[n].id,staticClass:"panel"},[e("div",{staticClass:"panel--header"},[e("h2",[e("div",{class:t.panels[n].iconClass,attrs:{role:"img"}}),t._v("\n\t\t\t\t\t"+t._s(t.panels[n].title)+"\n\t\t\t\t")])]),t._v(" "),e("div",{staticClass:"panel--content",class:{loading:!t.panels[n].mounted}},[e("div",{ref:t.panels[n].id,refInFor:!0,attrs:{"data-id":t.panels[n].id}})])])})),0),t._v(" "),e("div",{staticClass:"footer"},[e("Button",{on:{click:t.showModal},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(t.t("dashboard","Customize"))+"\n\t\t")])],1),t._v(" "),t.modal?e("Modal",{attrs:{size:"large"},on:{close:t.closeModal}},[e("div",{staticClass:"modal__content"},[e("h3",[t._v(t._s(t.t("dashboard","Edit widgets")))]),t._v(" "),e("ol",{staticClass:"panels"},t._l(t.sortedAllStatuses,(function(n){return e("li",{key:n,class:"panel-"+n},[e("input",{staticClass:"checkbox",attrs:{id:"status-checkbox-"+n,type:"checkbox"},domProps:{checked:t.isStatusActive(n)},on:{input:function(e){return t.updateStatusCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{attrs:{for:"status-checkbox-"+n}},[e("div",{class:t.statusInfo[n].icon,attrs:{role:"img"}}),t._v("\n\t\t\t\t\t\t"+t._s(t.statusInfo[n].text)+"\n\t\t\t\t\t")])])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{tag:"ol",handle:".draggable"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.sortedPanels,(function(n){return e("li",{key:n.id,class:"panel-"+n.id},[e("input",{staticClass:"checkbox",attrs:{id:"panel-checkbox-"+n.id,type:"checkbox"},domProps:{checked:t.isActive(n)},on:{input:function(e){return t.updateCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{class:{draggable:t.isActive(n)},attrs:{for:"panel-checkbox-"+n.id}},[e("div",{class:n.iconClass,attrs:{role:"img"}}),t._v("\n\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t")])])})),0),t._v(" "),t.isAdmin?e("a",{staticClass:"button",attrs:{href:t.appStoreUrl}},[t._v(t._s(t.t("dashboard","Get more widgets from the App Store")))]):t._e(),t._v(" "),e("h3",[t._v(t._s(t.t("dashboard","Change background image")))]),t._v(" "),e("BackgroundSettings",{attrs:{background:t.background,"theming-default-background":t.themingDefaultBackground},on:{"update:background":t.updateBackground}}),t._v(" "),e("h3",[t._v(t._s(t.t("dashboard","Weather service")))]),t._v(" "),e("p",[t._v("\n\t\t\t\t"+t._s(t.t("dashboard","For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."))+"\n\t\t\t")]),t._v(" "),e("p",{staticClass:"credits--end"},[e("a",{attrs:{href:"https://api.met.no/doc/TermsOfService",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","Weather data from Met.no")))]),t._v(",\n\t\t\t\t"),e("a",{attrs:{href:"https://wiki.osmfoundation.org/wiki/Privacy_Policy",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","geocoding with Nominatim")))]),t._v(",\n\t\t\t\t"),e("a",{attrs:{href:"https://www.opentopodata.org/#public-api",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","elevation data from OpenTopoData")))]),t._v(".\n\t\t\t")])],1)]):t._e()],1)}),[],!1,null,"049516f5",null).exports,J=a(9944),V=a(15168),X=a.n(V);a.nc=btoa((0,i.getRequestToken)()),o.default.directive("Tooltip",X()),o.default.prototype.t=J.translate,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files);var tt=new(o.default.extend(Q))({}).$mount("#app-content-vue");window.OCA.Dashboard={register:function(t,n){return tt.register(t,n)},registerStatus:function(t,n){return tt.registerStatus(t,n)}}},50968:function(t,n,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([t.id,"#app-dashboard[data-v-049516f5]{width:100%;min-height:100vh;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed;background-color:var(--color-primary);--color-background-translucent: rgba(var(--color-main-background-rgb), 0.8);--background-blur: blur(10px)}#app-dashboard>h2[data-v-049516f5]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:10vh 16px 0px}.panels[data-v-049516f5]{width:auto;margin:auto;max-width:1500px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-049516f5],.panels>div[data-v-049516f5]{width:320px;max-width:100%;margin:16px;background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-049516f5],#body-user.theme--highcontrast .panels>div[data-v-049516f5]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-049516f5],.panels>div.sortable-ghost[data-v-049516f5]{opacity:.1}.panel>.panel--header[data-v-049516f5],.panels>div>.panel--header[data-v-049516f5]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-049516f5],.panel>.panel--header[data-v-049516f5] *,.panels>div>.panel--header[data-v-049516f5],.panels>div>.panel--header[data-v-049516f5] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-049516f5]:active,.panels>div>.panel--header[data-v-049516f5]:active{cursor:grabbing}.panel>.panel--header a[data-v-049516f5],.panels>div>.panel--header a[data-v-049516f5]{flex-grow:1}.panel>.panel--header>h2[data-v-049516f5],.panels>div>.panel--header>h2[data-v-049516f5]{display:flex;align-items:center;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;padding:16px 8px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--header>h2 div[data-v-049516f5],.panels>div>.panel--header>h2 div[data-v-049516f5]{background-size:32px;width:32px;height:32px;margin-right:16px;background-position:center;filter:var(--background-invert-if-dark)}.panel>.panel--content[data-v-049516f5],.panels>div>.panel--content[data-v-049516f5]{margin:0 16px 16px 16px;height:420px;overflow:hidden}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-049516f5],.panels>div>.panel--content[data-v-049516f5]{height:auto}}.footer[data-v-049516f5]{display:flex;justify-content:center;transition:bottom var(--animation-slow) ease-in-out;bottom:0;padding:44px 0}.edit-panels[data-v-049516f5]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.button[data-v-049516f5],.button-vue .edit-panels[data-v-049516f5],.statuses[data-v-049516f5] .action-item .action-item__menutoggle,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);opacity:1 !important}.button[data-v-049516f5]:hover,.button[data-v-049516f5]:focus,.button[data-v-049516f5]:active,.button-vue .edit-panels[data-v-049516f5]:hover,.button-vue .edit-panels[data-v-049516f5]:focus,.button-vue .edit-panels[data-v-049516f5]:active,.statuses[data-v-049516f5] .action-item .action-item__menutoggle:hover,.statuses[data-v-049516f5] .action-item .action-item__menutoggle:focus,.statuses[data-v-049516f5] .action-item .action-item__menutoggle:active,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.button[data-v-049516f5]:focus-visible,.button-vue .edit-panels[data-v-049516f5]:focus-visible,.statuses[data-v-049516f5] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle:focus-visible{border:2px solid var(--color-main-text) !important}.modal__content[data-v-049516f5]{padding:32px 16px;text-align:center}.modal__content ol[data-v-049516f5]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-049516f5]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label div[data-v-049516f5]{position:absolute;top:16px;width:24px;height:24px;background-size:24px}.modal__content li label[data-v-049516f5]:hover{border-color:var(--color-primary)}.modal__content li:not(.panel-status) label div[data-v-049516f5]{filter:var(--background-invert-if-dark)}.modal__content li input[type=checkbox].checkbox+label[data-v-049516f5]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-049516f5]{border-color:var(--color-primary)}.modal__content h3[data-v-049516f5]{font-weight:bold}.modal__content h3[data-v-049516f5]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-049516f5]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-049516f5]{max-width:650px;margin:0 auto}.modal__content p a[data-v-049516f5]:hover,.modal__content p a[data-v-049516f5]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-049516f5]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-049516f5]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-049516f5]{transition:transform var(--animation-slow)}.statuses[data-v-049516f5]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>div[data-v-049516f5]{margin:8px}","",{version:3,sources:["webpack://./apps/dashboard/src/DashboardApp.vue"],names:[],mappings:"AAoaA,gCACC,UAAA,CACA,gBAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CACA,qCAAA,CACA,2EAAA,CACA,6BAAA,CAEA,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,4KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,iGACC,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,0BAAA,CACA,uCAAA,CAKH,qFACC,uBAAA,CACA,YAAA,CAEA,eAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,YAAA,CACA,sBAAA,CACA,mDAAA,CACA,QAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,yNAKC,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,oBAAA,CAEA,utBAGC,yDAAA,CAED,iRACC,kDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,8CACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CAGD,gDACC,iCAAA,CAKF,iEACC,uCAAA,CAGD,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,+BACC,UAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100vh;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\tbackground-color: var(--color-primary);\n\t--color-background-translucent: rgba(var(--color-main-background-rgb), 0.8);\n\t--background-blur: blur(10px);\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 10vh 16px 0px;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1500px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tdiv {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 420px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: hidden;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tbottom: 0;\n\tpadding: 44px 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tborder: 2px solid var(--color-main-text)!important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tdiv {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label div {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > div {\n\t\tmargin: 8px;\n\t}\n}\n"],sourceRoot:""}]),n.Z=i},84196:function(t,n,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([t.id,'.background-selector[data-v-7cb6c209]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-7cb6c209]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-7cb6c209]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-7cb6c209],.background-selector .background.default[data-v-7cb6c209],.background-selector .background.color[data-v-7cb6c209]{border-color:var(--color-border)}.background-selector .background.color[data-v-7cb6c209]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-7cb6c209],.background-selector .background[data-v-7cb6c209]:hover,.background-selector .background[data-v-7cb6c209]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-7cb6c209]:not(.icon-loading):after{background-image:var(--icon-checkmark-fff);background-repeat:no-repeat;background-position:center;background-size:44px;content:"";display:block;height:100%}',"",{version:3,sources:["webpack://./apps/dashboard/src/components/BackgroundSettings.vue"],names:[],mappings:"AA4IA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,0CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-fff);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),n.Z=i}},a={};function o(t){var n=a[t];if(void 0!==n)return n.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,a,r){if(!e){var i=1/0;for(c=0;c<n.length;c++){e=n[c][0],a=n[c][1],r=n[c][2];for(var s=!0,d=0;d<e.length;d++)(!1&r||i>=r)&&Object.keys(o.O).every((function(t){return o.O[t](e[d])}))?e.splice(d--,1):(s=!1,r<i&&(i=r));if(s){n.splice(c--,1);var l=a();void 0!==l&&(t=l)}}return t}r=r||0;for(var c=n.length;c>0&&n[c-1][2]>r;c--)n[c]=n[c-1];n[c]=[e,a,r]},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,{a:n}),n},o.d=function(t,n){for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=773,function(){o.b=document.baseURI||self.location.href;var t={773:0};o.O.j=function(n){return 0===t[n]};var n=function(n,e){var a,r,i=e[0],s=e[1],d=e[2],l=0;if(i.some((function(n){return 0!==t[n]}))){for(a in s)o.o(s,a)&&(o.m[a]=s[a]);if(d)var c=d(o)}for(n&&n(e);l<i.length;l++)r=i[l],o.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return o.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}();var r=o.O(void 0,[874],(function(){return o(65880)}));r=o.O(r)}();
+//# sourceMappingURL=dashboard-main.js.map?v=f40f0904cda3ae2ee4e0 \ No newline at end of file
diff --git a/dist/dashboard-main.js.map b/dist/dashboard-main.js.map
index 49e058c293d..5bd1f7f5756 100644
--- a/dist/dashboard-main.js.map
+++ b/dist/dashboard-main.js.map
@@ -1 +1 @@
-{"version":3,"file":"dashboard-main.js?v=4ea0413619f5fd828d7e","mappings":"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a,KAC94C,IDWpB,EACA,KACA,WACA,MAI8B,QEmFhC,wCACA,0CACA,4CACA,0DACA,yCACA,oDACA,GACA,SACA,8BACA,4BAEA,QACA,6BACA,iCCnH0K,EDuH1K,CACA,WACA,YACA,UACA,cACA,sBAEA,QACA,GAEA,KAVA,WAUA,QACA,OACA,uCACA,eACA,oBACA,aACA,mBACA,sBACA,aACA,wDACA,SACA,WACA,+EACA,+DACA,gFACA,SACA,0DACA,YACA,aACA,2BACA,YAGA,UACA,gBADA,WAEA,sEAEA,gBAJA,WAKA,sFACA,0CACA,KAEA,CACA,0DAGA,SAbA,WAcA,IAGA,EAHA,wBAKA,EADA,WACA,QACA,MACA,UACA,MACA,YAEA,UAIA,OACA,SACA,sCACA,2FAEA,WACA,wCACA,6FAEA,SACA,sCACA,2FAEA,OAEA,+BACA,qFAMA,YADA,8CACA,6BAEA,SArDA,WAqDA,WACA,sDAEA,eAxDA,WAwDA,WACA,2EAEA,kBA3DA,WA4DA,6EAEA,aA9DA,WA8DA,WACA,sDACA,6BACA,yBACA,qBACA,eAEA,mBAGA,uBAxEA,WAyEA,+DAGA,OACA,UADA,WAEA,uBAEA,gBAJA,WAKA,mCACA,8BACA,6CAGA,GACA,8BACA,6CAEA,qGAKA,QAhIA,WAgIA,WACA,0BACA,sBACA,oDAEA,wBACA,mBACA,KAEA,eACA,4DAGA,UA7IA,WA8IA,wDAEA,SAOA,SAPA,SAOA,KACA,mCAEA,eAVA,SAUA,gBAEA,2CAEA,yBACA,8BACA,2BACA,0CAIA,eArBA,WAsBA,6BACA,qBACA,6BAGA,yCAGA,GACA,wBACA,wBAEA,4CAEA,qGAIA,WAxCA,WAyCA,4DACA,gCAGA,aA7CA,WA8CA,8DACA,iDAGA,UAlDA,WAmDA,cACA,kBAEA,WAtDA,WAuDA,eAEA,eAzDA,SAyDA,gBACA,6BACA,QACA,wBAGA,uBAEA,8CACA,kBACA,yDAEA,oBArEA,WAqEA,WACA,8DACA,uBACA,gBACA,MAEA,iBA3EA,SA2EA,GACA,qEACA,uBACA,2BAEA,mBAhFA,WAiFA,wEACA,6BACA,mDAIA,UADA,uDA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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dashboard/src/mixins/isMobile.js","webpack:///nextcloud/apps/dashboard/src/helpers/prefixWithBaseUrl.js","webpack:///nextcloud/apps/dashboard/src/helpers/getBackgroundUrl.js","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?8d16","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?20a7","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=template&id=e4c3a7ca&scoped=true&","webpack:///nextcloud/apps/dashboard/src/App.vue","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/App.vue?1ed9","webpack://nextcloud/./apps/dashboard/src/App.vue?d9a5","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=template&id=af526754&scoped=true&","webpack:///nextcloud/apps/dashboard/src/main.js","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=style&index=0&id=af526754&lang=scss&scoped=true&","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: this._isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\twindow.addEventListener('resize', this._onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this._onResize)\n\t},\n\tmethods: {\n\t\t_onResize() {\n\t\t\t// Update mobile mode\n\t\t\tthis.isMobile = this._isMobile()\n\t\t},\n\t\t_isMobile() {\n\t\t\t// check if content width is under 768px\n\t\t\treturn document.documentElement.clientWidth < 768\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateFilePath } from '@nextcloud/router'\n\nexport default (url) => generateFilePath('dashboard', '', 'img/') + url\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Avior <florian.bouillon@delta-wings.net>\n * @author Julien Veyssier <eneiluj@posteo.net>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport prefixWithBaseUrl from './prefixWithBaseUrl'\n\nexport default (background, time = 0, themingDefaultBackground = '') => {\n\tconst enabledThemes = window.OCA.Theming.enabledThemes\n\tconst isDarkTheme = enabledThemes.join('').indexOf('dark') !== -1\n\n\tif (background === 'default') {\n\t\tif (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {\n\t\t\treturn generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster\n\t\t}\n\n\t\tif (isDarkTheme) {\n\t\t\treturn prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')\n\t\t}\n\n\t\treturn prefixWithBaseUrl('kamil-porembinski-clouds.jpg')\n\t} else if (background === 'custom') {\n\t\treturn generateUrl('/apps/dashboard/background') + '?v=' + time\n\t}\n\n\treturn prefixWithBaseUrl(background)\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\">\n\t\t<button class=\"background filepicker\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('dashboard', 'Pick from Files') }}\n\t\t</button>\n\t\t<button class=\"background default\"\n\t\t\ttabindex=\"0\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', active: background === 'default' }\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('dashboard', 'Default images') }}\n\t\t</button>\n\t\t<button class=\"background color\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickColor\">\n\t\t\t{{ t('dashboard', 'Plain background') }}\n\t\t</button>\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\tv-tooltip=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, active: background === shippedBackground.name }\"\n\t\t\ttabindex=\"0\"\n\t\t\tclass=\"background\"\n\t\t\t:style=\"{ 'background-image': 'url(' + shippedBackground.preview + ')' }\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport getBackgroundUrl from './../helpers/getBackgroundUrl'\nimport prefixWithBaseUrl from './../helpers/prefixWithBaseUrl'\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')\n\nexport default {\n\tname: 'BackgroundSettings',\n\tprops: {\n\t\tbackground: {\n\t\t\ttype: String,\n\t\t\tdefault: 'default',\n\t\t},\n\t\tthemingDefaultBackground: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundImage: generateUrl('/apps/dashboard/background') + '?v=' + Date.now(),\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList).map((item) => {\n\t\t\t\treturn {\n\t\t\t\t\tname: item,\n\t\t\t\t\turl: prefixWithBaseUrl(item),\n\t\t\t\t\tpreview: prefixWithBaseUrl('previews/' + item),\n\t\t\t\t\tdetails: shippedBackgroundList[item],\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\tasync update(data) {\n\t\t\tconst background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground)\n\t\t\tif (data.type === 'color' || (data.type === 'default' && this.themingDefaultBackground === 'backgroundColor')) {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst image = new Image()\n\t\t\timage.onload = () => {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t\timage.src = this.backgroundImage\n\t\t},\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setFile(path) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/custom'), { value: path })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync pickColor() {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = OCA && OCA.Theming ? OCA.Theming.color : '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/color'), { value: color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tpickFile() {\n\t\t\twindow.OC.dialogs.filepicker(t('dashboard', 'Insert from {productName}', { productName: OC.theme.name }), (path, type) => {\n\t\t\t\tif (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\t\tthis.setFile(path)\n\t\t\t\t}\n\t\t\t}, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-fff);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: var(--icon-checkmark-000);\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=e4c3a7ca&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e4c3a7ca\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"background-selector\"},[_c('button',{staticClass:\"background filepicker\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Pick from Files'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background default\",class:{ 'icon-loading': _vm.loading === 'default', active: _vm.background === 'default' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Default images'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background color\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickColor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Plain background'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(shippedBackground.details.attribution),expression:\"shippedBackground.details.attribution\"}],key:shippedBackground.name,staticClass:\"background\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, active: _vm.background === shippedBackground.name },style:({ 'background-image': 'url(' + shippedBackground.preview + ')' }),attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"app-dashboard\" :style=\"backgroundStyle\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<div v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</div>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<div v-for=\"panelId in layout\" :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t<h2 :class=\"panels[panelId].iconClass\">\n\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t</h2>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<a class=\"edit-panels icon-rename\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t@click=\"showModal\"\n\t\t\t\t@keyup.enter=\"showModal\"\n\t\t\t\t@keyup.space=\"showModal\">{{ t('dashboard', 'Customize') }}</a>\n\t\t</div>\n\n\t\t<Modal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\" :class=\"statusInfo[status].icon\">\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"isActive(panel) ? 'draggable ' + panel.iconClass : panel.iconClass\">\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<h3>{{ t('dashboard', 'Change background image') }}</h3>\n\t\t\t\t<BackgroundSettings :background=\"background\"\n\t\t\t\t\t:theming-default-background=\"themingDefaultBackground\"\n\t\t\t\t\t@update:background=\"updateBackground\" />\n\n\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</Modal>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\nimport Draggable from 'vuedraggable'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport isMobile from './mixins/isMobile'\nimport BackgroundSettings from './components/BackgroundSettings'\nimport getBackgroundUrl from './helpers/getBackgroundUrl'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\nconst background = loadState('dashboard', 'background')\nconst themingDefaultBackground = loadState('dashboard', 'themingDefaultBackground')\nconst version = loadState('dashboard', 'version')\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tModal,\n\t\tDraggable,\n\t\tBackgroundSettings,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t\tbackground,\n\t\t\tthemingDefaultBackground,\n\t\t\tversion,\n\t\t}\n\t},\n\tcomputed: {\n\t\tbackgroundImage() {\n\t\t\treturn getBackgroundUrl(this.background, this.version, this.themingDefaultBackground)\n\t\t},\n\t\tbackgroundStyle() {\n\t\t\tif ((this.background === 'default' && this.themingDefaultBackground === 'backgroundColor')\n\t\t\t\t|| this.background.match(/#[0-9A-Fa-f]{6}/g)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `url(${this.backgroundImage})`,\n\t\t\t}\n\t\t},\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.updateGlobalStyles()\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateBackground(data) {\n\t\t\tthis.background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.version = data.version\n\t\t\tthis.updateGlobalStyles()\n\t\t},\n\t\tupdateGlobalStyles() {\n\t\t\tdocument.body.setAttribute('data-dashboard-background', this.background)\n\t\t\tif (window.OCA.Theming.inverted) {\n\t\t\t\tdocument.body.classList.add('dashboard--inverted')\n\t\t\t}\n\n\t\t\tconst shippedBackgroundTheme = shippedBackgroundList[this.background] ? shippedBackgroundList[this.background].theming : 'light'\n\t\t\tif (shippedBackgroundTheme === 'dark') {\n\t\t\t\tdocument.body.classList.add('dashboard--dark')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--dark')\n\t\t\t}\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100vh;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\tbackground-color: var(--color-primary);\n\t--color-background-translucent: rgba(255, 255, 255, 0.8);\n\t--background-blur: blur(10px);\n\n\t#body-user.theme--dark & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: rgba(24, 24, 24, 0.8);\n\t}\n\n\t#body-user.theme--highcontrast & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: var(--color-main-background);\n\t}\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 10vh 16px 0px;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1500px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tbackground-size: 32px;\n\t\t\tbackground-position: 14px 12px;\n\t\t\tpadding: 16px 8px 16px 60px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 420px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: hidden;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\ttext-align: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tbottom: 0;\n\tpadding: 44px 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tborder: 2px solid var(--color-main-text)!important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\tbackground-size: 24px;\n\t\t\tbackground-position: 16px 16px;\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > div {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=af526754&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=af526754&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=af526754&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=af526754&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"af526754\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.backgroundStyle),attrs:{\"id\":\"app-dashboard\"}},[_c('h2',[_vm._v(_vm._s(_vm.greeting.text))]),_vm._v(\" \"),_c('ul',{staticClass:\"statuses\"},_vm._l((_vm.sortedRegisteredStatus),function(status){return _c('div',{key:status,attrs:{\"id\":'status-' + status}},[_c('div',{ref:'status-' + status,refInFor:true})])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"handle\":\".panel--header\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.layout),function(panelId){return _c('div',{key:_vm.panels[panelId].id,staticClass:\"panel\"},[_c('div',{staticClass:\"panel--header\"},[_c('h2',{class:_vm.panels[panelId].iconClass},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.panels[panelId].title)+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel--content\",class:{ loading: !_vm.panels[panelId].mounted }},[_c('div',{ref:_vm.panels[panelId].id,refInFor:true,attrs:{\"data-id\":_vm.panels[panelId].id}})])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('a',{staticClass:\"edit-panels icon-rename\",attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.showModal,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.showModal.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.showModal.apply(null, arguments)}]}},[_vm._v(_vm._s(_vm.t('dashboard', 'Customize')))])]),_vm._v(\" \"),(_vm.modal)?_c('Modal',{attrs:{\"size\":\"large\"},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"modal__content\"},[_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Edit widgets')))]),_vm._v(\" \"),_c('ol',{staticClass:\"panels\"},_vm._l((_vm.sortedAllStatuses),function(status){return _c('li',{key:status},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'status-checkbox-' + status,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isStatusActive(status)},on:{\"input\":function($event){return _vm.updateStatusCheckbox(status, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:_vm.statusInfo[status].icon,attrs:{\"for\":'status-checkbox-' + status}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.statusInfo[status].text)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"tag\":\"ol\",\"handle\":\".draggable\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.sortedPanels),function(panel){return _c('li',{key:panel.id},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'panel-checkbox-' + panel.id,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isActive(panel)},on:{\"input\":function($event){return _vm.updateCheckbox(panel, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:_vm.isActive(panel) ? 'draggable ' + panel.iconClass : panel.iconClass,attrs:{\"for\":'panel-checkbox-' + panel.id}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(panel.title)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),(_vm.isAdmin)?_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.appStoreUrl}},[_vm._v(_vm._s(_vm.t('dashboard', 'Get more widgets from the App Store')))]):_vm._e(),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Change background image')))]),_vm._v(\" \"),_c('BackgroundSettings',{attrs:{\"background\":_vm.background,\"theming-default-background\":_vm.themingDefaultBackground},on:{\"update:background\":_vm.updateBackground}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Weather service')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"credits--end\"},[_c('a',{attrs:{\"href\":\"https://api.met.no/doc/TermsOfService\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'Weather data from Met.no')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'geocoding with Nominatim')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://www.opentopodata.org/#public-api\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'elevation data from OpenTopoData')))]),_vm._v(\".\\n\\t\\t\\t\")])],1)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './App.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { getRequestToken } from '@nextcloud/auth'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.directive('Tooltip', VTooltip)\n\nVue.prototype.t = t\n\n// FIXME workaround to make the sidebar work\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\n\nObject.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files)\n\nconst Dashboard = Vue.extend(App)\nconst Instance = new Dashboard({}).$mount('#app-content-vue')\n\nwindow.OCA.Dashboard = {\n\tregister: (app, callback) => Instance.register(app, callback),\n\tregisterStatus: (app, callback) => Instance.registerStatus(app, callback),\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-dashboard[data-v-af526754]{width:100%;min-height:100vh;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed;background-color:var(--color-primary);--color-background-translucent: rgba(255, 255, 255, 0.8);--background-blur: blur(10px)}#body-user.theme--dark #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: rgba(24, 24, 24, 0.8)}#body-user.theme--highcontrast #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: var(--color-main-background)}#app-dashboard>h2[data-v-af526754]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:10vh 16px 0px}.panels[data-v-af526754]{width:auto;margin:auto;max-width:1500px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-af526754],.panels>div[data-v-af526754]{width:320px;max-width:100%;margin:16px;background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-af526754],#body-user.theme--highcontrast .panels>div[data-v-af526754]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-af526754],.panels>div.sortable-ghost[data-v-af526754]{opacity:.1}.panel>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-af526754],.panel>.panel--header[data-v-af526754] *,.panels>div>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-af526754]:active,.panels>div>.panel--header[data-v-af526754]:active{cursor:grabbing}.panel>.panel--header a[data-v-af526754],.panels>div>.panel--header a[data-v-af526754]{flex-grow:1}.panel>.panel--header>h2[data-v-af526754],.panels>div>.panel--header>h2[data-v-af526754]{display:block;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;background-size:32px;background-position:14px 12px;padding:16px 8px 16px 60px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{margin:0 16px 16px 16px;height:420px;overflow:hidden}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{height:auto}}.footer[data-v-af526754]{text-align:center;transition:bottom var(--animation-slow) ease-in-out;bottom:0;padding:44px 0}.edit-panels[data-v-af526754]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.edit-panels[data-v-af526754],.statuses[data-v-af526754] .action-item .action-item__menutoggle,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);opacity:1 !important}.edit-panels[data-v-af526754]:hover,.edit-panels[data-v-af526754]:focus,.edit-panels[data-v-af526754]:active,.statuses[data-v-af526754] .action-item .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item .action-item__menutoggle:active,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.edit-panels[data-v-af526754]:focus-visible,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus-visible{border:2px solid var(--color-main-text) !important}.modal__content[data-v-af526754]{padding:32px 16px;text-align:center}.modal__content ol[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-af526754]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-size:24px;background-position:16px 16px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label[data-v-af526754]:hover{border-color:var(--color-primary)}.modal__content li input[type=checkbox].checkbox+label[data-v-af526754]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-af526754]{border-color:var(--color-primary)}.modal__content h3[data-v-af526754]{font-weight:bold}.modal__content h3[data-v-af526754]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-af526754]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-af526754]{max-width:650px;margin:0 auto}.modal__content p a[data-v-af526754]:hover,.modal__content p a[data-v-af526754]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-af526754]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-af526754]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-af526754]{transition:transform var(--animation-slow)}.statuses[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>div[data-v-af526754]{margin:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/App.vue\"],\"names\":[],\"mappings\":\"AAqZA,gCACC,UAAA,CACA,gBAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CACA,qCAAA,CACA,wDAAA,CACA,6BAAA,CAEA,uDACC,6CAAA,CACA,qDAAA,CAGD,+DACC,6CAAA,CACA,4DAAA,CAGD,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,4KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,oBAAA,CACA,6BAAA,CACA,0BAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CAIF,qFACC,uBAAA,CACA,YAAA,CAEA,eAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,iBAAA,CACA,mDAAA,CACA,QAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,oLAGC,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,oBAAA,CAEA,qlBAGC,yDAAA,CAED,8NACC,kDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,oBAAA,CACA,6BAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,gDACC,iCAAA,CAIF,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,+BACC,UAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100vh;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\tbackground-color: var(--color-primary);\\n\\t--color-background-translucent: rgba(255, 255, 255, 0.8);\\n\\t--background-blur: blur(10px);\\n\\n\\t#body-user.theme--dark & {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t--color-background-translucent: rgba(24, 24, 24, 0.8);\\n\\t}\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t--color-background-translucent: var(--color-main-background);\\n\\t}\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 10vh 16px 0px;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1500px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\tbackground-color: var(--color-background-translucent);\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\tbackground-position: 14px 12px;\\n\\t\\t\\tpadding: 16px 8px 16px 60px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 420px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\ttext-align: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tbottom: 0;\\n\\tpadding: 44px 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-background-translucent);\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tborder: 2px solid var(--color-main-text)!important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\tbackground-position: 16px 16px;\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > div {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-e4c3a7ca]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-e4c3a7ca]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-e4c3a7ca]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-e4c3a7ca],.background-selector .background.default[data-v-e4c3a7ca],.background-selector .background.color[data-v-e4c3a7ca]{border-color:var(--color-border)}.background-selector .background.color[data-v-e4c3a7ca]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-e4c3a7ca],.background-selector .background[data-v-e4c3a7ca]:hover,.background-selector .background[data-v-e4c3a7ca]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-fff);background-repeat:no-repeat;background-position:center;background-size:44px;content:\\\"\\\";display:block;height:100%}body.theme--dark .background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-000)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AA4IA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,0CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA,CAEA,mGACC,0CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center center;\\n\\t\\ttext-align: center;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&.current {\\n\\t\\t\\tbackground-image: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t&.filepicker, &.default, &.color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&.color {\\n\\t\\t\\tbackground-color: var(--color-primary);\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t}\\n\\n\\t\\t&.active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tborder: 2px solid var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&.active:not(.icon-loading):after {\\n\\t\\t\\tbackground-image: var(--icon-checkmark-fff);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-size: 44px;\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tbody.theme--dark & {\\n\\t\\t\\t\\tbackground-image: var(--icon-checkmark-000);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 773;","__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\t773: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(30320); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","isMobile","this","_isMobile","beforeMount","window","addEventListener","_onResize","beforeDestroy","removeEventListener","methods","document","documentElement","clientWidth","url","generateFilePath","background","time","themingDefaultBackground","enabledThemes","OCA","Theming","isDarkTheme","join","indexOf","generateUrl","cacheBuster","prefixWithBaseUrl","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","class","active","attrs","on","pickFile","_v","_s","t","loading","setDefault","pickColor","_l","shippedBackground","directives","name","rawName","value","details","expression","key","style","preview","$event","setShipped","greeting","text","status","ref","refInFor","_b","saveLayout","model","callback","$$v","layout","swapThreshold","delay","delayOnTouchOnly","touchStartThreshold","panelId","panels","id","iconClass","title","mounted","showModal","type","_k","keyCode","apply","arguments","closeModal","domProps","isStatusActive","updateStatusCheckbox","target","checked","statusInfo","icon","panel","isActive","updateCheckbox","appStoreUrl","_e","updateBackground","__webpack_nonce__","btoa","getRequestToken","Vue","VTooltip","Files","Object","assign","App","fileList","filesClient","OC","getClient","Instance","$mount","Dashboard","register","app","registerStatus","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"dashboard-main.js?v=f40f0904cda3ae2ee4e0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dashboard/src/mixins/isMobile.js","webpack:///nextcloud/apps/dashboard/src/helpers/prefixWithBaseUrl.js","webpack:///nextcloud/apps/dashboard/src/helpers/getBackgroundUrl.js","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?5fb2","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?20a7","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=template&id=7cb6c209&scoped=true&","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?e5ba","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?5685","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=template&id=049516f5&scoped=true&","webpack:///nextcloud/apps/dashboard/src/main.js","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=style&index=0&id=049516f5&lang=scss&scoped=true&","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=7cb6c209&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: this._isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\twindow.addEventListener('resize', this._onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this._onResize)\n\t},\n\tmethods: {\n\t\t_onResize() {\n\t\t\t// Update mobile mode\n\t\t\tthis.isMobile = this._isMobile()\n\t\t},\n\t\t_isMobile() {\n\t\t\t// check if content width is under 768px\n\t\t\treturn document.documentElement.clientWidth < 768\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateFilePath } from '@nextcloud/router'\n\nexport default (url) => generateFilePath('dashboard', '', 'img/') + url\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Avior <florian.bouillon@delta-wings.net>\n * @author Julien Veyssier <eneiluj@posteo.net>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport prefixWithBaseUrl from './prefixWithBaseUrl'\n\nexport default (background, time = 0, themingDefaultBackground = '') => {\n\tconst enabledThemes = window.OCA.Theming.enabledThemes\n\tconst isDarkTheme = enabledThemes.join('').indexOf('dark') !== -1\n\n\tif (background === 'default') {\n\t\tif (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {\n\t\t\treturn generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster\n\t\t}\n\n\t\tif (isDarkTheme) {\n\t\t\treturn prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')\n\t\t}\n\n\t\treturn prefixWithBaseUrl('kamil-porembinski-clouds.jpg')\n\t} else if (background === 'custom') {\n\t\treturn generateUrl('/apps/dashboard/background') + '?v=' + time\n\t}\n\n\treturn prefixWithBaseUrl(background)\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\">\n\t\t<button class=\"background filepicker\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('dashboard', 'Pick from Files') }}\n\t\t</button>\n\t\t<button class=\"background default\"\n\t\t\ttabindex=\"0\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', active: background === 'default' }\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('dashboard', 'Default images') }}\n\t\t</button>\n\t\t<button class=\"background color\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickColor\">\n\t\t\t{{ t('dashboard', 'Plain background') }}\n\t\t</button>\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\tv-tooltip=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, active: background === shippedBackground.name }\"\n\t\t\ttabindex=\"0\"\n\t\t\tclass=\"background\"\n\t\t\t:style=\"{ 'background-image': 'url(' + shippedBackground.preview + ')' }\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport getBackgroundUrl from './../helpers/getBackgroundUrl'\nimport prefixWithBaseUrl from './../helpers/prefixWithBaseUrl'\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')\n\nexport default {\n\tname: 'BackgroundSettings',\n\tprops: {\n\t\tbackground: {\n\t\t\ttype: String,\n\t\t\tdefault: 'default',\n\t\t},\n\t\tthemingDefaultBackground: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundImage: generateUrl('/apps/dashboard/background') + '?v=' + Date.now(),\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList).map((item) => {\n\t\t\t\treturn {\n\t\t\t\t\tname: item,\n\t\t\t\t\turl: prefixWithBaseUrl(item),\n\t\t\t\t\tpreview: prefixWithBaseUrl('previews/' + item),\n\t\t\t\t\tdetails: shippedBackgroundList[item],\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\tasync update(data) {\n\t\t\tconst background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground)\n\t\t\tif (data.type === 'color' || (data.type === 'default' && this.themingDefaultBackground === 'backgroundColor')) {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst image = new Image()\n\t\t\timage.onload = () => {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t\timage.src = this.backgroundImage\n\t\t},\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setFile(path) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/custom'), { value: path })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync pickColor() {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = OCA && OCA.Theming ? OCA.Theming.color : '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/color'), { value: color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tpickFile() {\n\t\t\twindow.OC.dialogs.filepicker(t('dashboard', 'Insert from {productName}', { productName: OC.theme.name }), (path, type) => {\n\t\t\t\tif (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\t\tthis.setFile(path)\n\t\t\t\t}\n\t\t\t}, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-fff);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=7cb6c209&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=7cb6c209&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=7cb6c209&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=7cb6c209&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 \"7cb6c209\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"background-selector\"},[_c('button',{staticClass:\"background filepicker\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Pick from Files'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background default\",class:{ 'icon-loading': _vm.loading === 'default', active: _vm.background === 'default' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Default images'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background color\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickColor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Plain background'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(shippedBackground.details.attribution),expression:\"shippedBackground.details.attribution\"}],key:shippedBackground.name,staticClass:\"background\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, active: _vm.background === shippedBackground.name },style:({ 'background-image': 'url(' + shippedBackground.preview + ')' }),attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"app-dashboard\" :style=\"backgroundStyle\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<div v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</div>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<div v-for=\"panelId in layout\" :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t<h2>\n\t\t\t\t\t\t<div :class=\"panels[panelId].iconClass\" role=\"img\" />\n\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t</h2>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<Button @click=\"showModal\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dashboard', 'Customize') }}\n\t\t\t</Button>\n\t\t</div>\n\n\t\t<Modal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\" :class=\"'panel-' + status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\">\n\t\t\t\t\t\t\t<div :class=\"statusInfo[status].icon\" role=\"img\" />\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\" :class=\"'panel-' + panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"{ draggable: isActive(panel) }\">\n\t\t\t\t\t\t\t<div :class=\"panel.iconClass\" role=\"img\" />\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<h3>{{ t('dashboard', 'Change background image') }}</h3>\n\t\t\t\t<BackgroundSettings :background=\"background\"\n\t\t\t\t\t:theming-default-background=\"themingDefaultBackground\"\n\t\t\t\t\t@update:background=\"updateBackground\" />\n\n\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</Modal>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport Draggable from 'vuedraggable'\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Vue from 'vue'\n\nimport isMobile from './mixins/isMobile'\nimport BackgroundSettings from './components/BackgroundSettings'\nimport getBackgroundUrl from './helpers/getBackgroundUrl'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\nconst background = loadState('dashboard', 'background')\nconst themingDefaultBackground = loadState('dashboard', 'themingDefaultBackground')\nconst version = loadState('dashboard', 'version')\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')\n\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'DashboardApp',\n\tcomponents: {\n\t\tBackgroundSettings,\n\t\tButton,\n\t\tDraggable,\n\t\tModal,\n\t\tPencil,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t\tbackground,\n\t\t\tthemingDefaultBackground,\n\t\t\tversion,\n\t\t}\n\t},\n\tcomputed: {\n\t\tbackgroundImage() {\n\t\t\treturn getBackgroundUrl(this.background, this.version, this.themingDefaultBackground)\n\t\t},\n\t\tbackgroundStyle() {\n\t\t\tif ((this.background === 'default' && this.themingDefaultBackground === 'backgroundColor')\n\t\t\t\t|| this.background.match(/#[0-9A-Fa-f]{6}/g)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `url(${this.backgroundImage})`,\n\t\t\t}\n\t\t},\n\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.updateGlobalStyles()\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateBackground(data) {\n\t\t\tthis.background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.version = data.version\n\t\t\tthis.updateGlobalStyles()\n\t\t},\n\t\tupdateGlobalStyles() {\n\t\t\t// Override primary-invert-if-bright and color-primary-text if background is set\n\t\t\tconst isBackgroundBright = shippedBackgroundList[this.background]?.theming === 'dark'\n\t\t\tif (isBackgroundBright) {\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'invert(100%)')\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--color-primary-text', '#000000')\n\t\t\t} else {\n\t\t\t\tdocument.querySelector('#header').style.removeProperty('--primary-invert-if-bright')\n\t\t\t\tdocument.querySelector('#header').style.removeProperty('--color-primary-text')\n\t\t\t}\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100vh;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\tbackground-color: var(--color-primary);\n\t--color-background-translucent: rgba(var(--color-main-background-rgb), 0.8);\n\t--background-blur: blur(10px);\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 10vh 16px 0px;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1500px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tdiv {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 420px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: hidden;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tbottom: 0;\n\tpadding: 44px 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tborder: 2px solid var(--color-main-text)!important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tdiv {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label div {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > div {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.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!./DashboardApp.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!./DashboardApp.vue?vue&type=style&index=0&id=049516f5&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=0&id=049516f5&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DashboardApp.vue?vue&type=template&id=049516f5&scoped=true&\"\nimport script from \"./DashboardApp.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardApp.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardApp.vue?vue&type=style&index=0&id=049516f5&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 \"049516f5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.backgroundStyle),attrs:{\"id\":\"app-dashboard\"}},[_c('h2',[_vm._v(_vm._s(_vm.greeting.text))]),_vm._v(\" \"),_c('ul',{staticClass:\"statuses\"},_vm._l((_vm.sortedRegisteredStatus),function(status){return _c('div',{key:status,attrs:{\"id\":'status-' + status}},[_c('div',{ref:'status-' + status,refInFor:true})])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"handle\":\".panel--header\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.layout),function(panelId){return _c('div',{key:_vm.panels[panelId].id,staticClass:\"panel\"},[_c('div',{staticClass:\"panel--header\"},[_c('h2',[_c('div',{class:_vm.panels[panelId].iconClass,attrs:{\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.panels[panelId].title)+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel--content\",class:{ loading: !_vm.panels[panelId].mounted }},[_c('div',{ref:_vm.panels[panelId].id,refInFor:true,attrs:{\"data-id\":_vm.panels[panelId].id}})])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('Button',{on:{\"click\":_vm.showModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'Customize'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.modal)?_c('Modal',{attrs:{\"size\":\"large\"},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"modal__content\"},[_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Edit widgets')))]),_vm._v(\" \"),_c('ol',{staticClass:\"panels\"},_vm._l((_vm.sortedAllStatuses),function(status){return _c('li',{key:status,class:'panel-' + status},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'status-checkbox-' + status,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isStatusActive(status)},on:{\"input\":function($event){return _vm.updateStatusCheckbox(status, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":'status-checkbox-' + status}},[_c('div',{class:_vm.statusInfo[status].icon,attrs:{\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.statusInfo[status].text)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"tag\":\"ol\",\"handle\":\".draggable\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.sortedPanels),function(panel){return _c('li',{key:panel.id,class:'panel-' + panel.id},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'panel-checkbox-' + panel.id,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isActive(panel)},on:{\"input\":function($event){return _vm.updateCheckbox(panel, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:{ draggable: _vm.isActive(panel) },attrs:{\"for\":'panel-checkbox-' + panel.id}},[_c('div',{class:panel.iconClass,attrs:{\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(panel.title)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),(_vm.isAdmin)?_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.appStoreUrl}},[_vm._v(_vm._s(_vm.t('dashboard', 'Get more widgets from the App Store')))]):_vm._e(),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Change background image')))]),_vm._v(\" \"),_c('BackgroundSettings',{attrs:{\"background\":_vm.background,\"theming-default-background\":_vm.themingDefaultBackground},on:{\"update:background\":_vm.updateBackground}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Weather service')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"credits--end\"},[_c('a',{attrs:{\"href\":\"https://api.met.no/doc/TermsOfService\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'Weather data from Met.no')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'geocoding with Nominatim')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://www.opentopodata.org/#public-api\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'elevation data from OpenTopoData')))]),_vm._v(\".\\n\\t\\t\\t\")])],1)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport DashboardApp from './DashboardApp.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { getRequestToken } from '@nextcloud/auth'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.directive('Tooltip', VTooltip)\n\nVue.prototype.t = t\n\n// FIXME workaround to make the sidebar work\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\n\nObject.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files)\n\nconst Dashboard = Vue.extend(DashboardApp)\nconst Instance = new Dashboard({}).$mount('#app-content-vue')\n\nwindow.OCA.Dashboard = {\n\tregister: (app, callback) => Instance.register(app, callback),\n\tregisterStatus: (app, callback) => Instance.registerStatus(app, callback),\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-dashboard[data-v-049516f5]{width:100%;min-height:100vh;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed;background-color:var(--color-primary);--color-background-translucent: rgba(var(--color-main-background-rgb), 0.8);--background-blur: blur(10px)}#app-dashboard>h2[data-v-049516f5]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:10vh 16px 0px}.panels[data-v-049516f5]{width:auto;margin:auto;max-width:1500px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-049516f5],.panels>div[data-v-049516f5]{width:320px;max-width:100%;margin:16px;background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-049516f5],#body-user.theme--highcontrast .panels>div[data-v-049516f5]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-049516f5],.panels>div.sortable-ghost[data-v-049516f5]{opacity:.1}.panel>.panel--header[data-v-049516f5],.panels>div>.panel--header[data-v-049516f5]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-049516f5],.panel>.panel--header[data-v-049516f5] *,.panels>div>.panel--header[data-v-049516f5],.panels>div>.panel--header[data-v-049516f5] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-049516f5]:active,.panels>div>.panel--header[data-v-049516f5]:active{cursor:grabbing}.panel>.panel--header a[data-v-049516f5],.panels>div>.panel--header a[data-v-049516f5]{flex-grow:1}.panel>.panel--header>h2[data-v-049516f5],.panels>div>.panel--header>h2[data-v-049516f5]{display:flex;align-items:center;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;padding:16px 8px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--header>h2 div[data-v-049516f5],.panels>div>.panel--header>h2 div[data-v-049516f5]{background-size:32px;width:32px;height:32px;margin-right:16px;background-position:center;filter:var(--background-invert-if-dark)}.panel>.panel--content[data-v-049516f5],.panels>div>.panel--content[data-v-049516f5]{margin:0 16px 16px 16px;height:420px;overflow:hidden}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-049516f5],.panels>div>.panel--content[data-v-049516f5]{height:auto}}.footer[data-v-049516f5]{display:flex;justify-content:center;transition:bottom var(--animation-slow) ease-in-out;bottom:0;padding:44px 0}.edit-panels[data-v-049516f5]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.button[data-v-049516f5],.button-vue .edit-panels[data-v-049516f5],.statuses[data-v-049516f5] .action-item .action-item__menutoggle,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);opacity:1 !important}.button[data-v-049516f5]:hover,.button[data-v-049516f5]:focus,.button[data-v-049516f5]:active,.button-vue .edit-panels[data-v-049516f5]:hover,.button-vue .edit-panels[data-v-049516f5]:focus,.button-vue .edit-panels[data-v-049516f5]:active,.statuses[data-v-049516f5] .action-item .action-item__menutoggle:hover,.statuses[data-v-049516f5] .action-item .action-item__menutoggle:focus,.statuses[data-v-049516f5] .action-item .action-item__menutoggle:active,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.button[data-v-049516f5]:focus-visible,.button-vue .edit-panels[data-v-049516f5]:focus-visible,.statuses[data-v-049516f5] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-049516f5] .action-item.action-item--open .action-item__menutoggle:focus-visible{border:2px solid var(--color-main-text) !important}.modal__content[data-v-049516f5]{padding:32px 16px;text-align:center}.modal__content ol[data-v-049516f5]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-049516f5]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label div[data-v-049516f5]{position:absolute;top:16px;width:24px;height:24px;background-size:24px}.modal__content li label[data-v-049516f5]:hover{border-color:var(--color-primary)}.modal__content li:not(.panel-status) label div[data-v-049516f5]{filter:var(--background-invert-if-dark)}.modal__content li input[type=checkbox].checkbox+label[data-v-049516f5]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-049516f5]{border-color:var(--color-primary)}.modal__content h3[data-v-049516f5]{font-weight:bold}.modal__content h3[data-v-049516f5]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-049516f5]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-049516f5]{max-width:650px;margin:0 auto}.modal__content p a[data-v-049516f5]:hover,.modal__content p a[data-v-049516f5]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-049516f5]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-049516f5]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-049516f5]{transition:transform var(--animation-slow)}.statuses[data-v-049516f5]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>div[data-v-049516f5]{margin:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/DashboardApp.vue\"],\"names\":[],\"mappings\":\"AAoaA,gCACC,UAAA,CACA,gBAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CACA,qCAAA,CACA,2EAAA,CACA,6BAAA,CAEA,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,4KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,iGACC,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,0BAAA,CACA,uCAAA,CAKH,qFACC,uBAAA,CACA,YAAA,CAEA,eAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,YAAA,CACA,sBAAA,CACA,mDAAA,CACA,QAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,yNAKC,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,oBAAA,CAEA,utBAGC,yDAAA,CAED,iRACC,kDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,8CACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CAGD,gDACC,iCAAA,CAKF,iEACC,uCAAA,CAGD,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,+BACC,UAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100vh;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\tbackground-color: var(--color-primary);\\n\\t--color-background-translucent: rgba(var(--color-main-background-rgb), 0.8);\\n\\t--background-blur: blur(10px);\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 10vh 16px 0px;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1500px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\tbackground-color: var(--color-background-translucent);\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tpadding: 16px 8px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tmargin-right: 16px;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 420px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tbottom: 0;\\n\\tpadding: 44px 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.button,\\n.button-vue\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-background-translucent);\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tborder: 2px solid var(--color-main-text)!important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 16px;\\n\\t\\t\\t\\twidth: 24px;\\n\\t\\t\\t\\theight: 24px;\\n\\t\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Do not invert status icons\\n\\t\\t&:not(.panel-status) label div {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > div {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-7cb6c209]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-7cb6c209]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-7cb6c209]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-7cb6c209],.background-selector .background.default[data-v-7cb6c209],.background-selector .background.color[data-v-7cb6c209]{border-color:var(--color-border)}.background-selector .background.color[data-v-7cb6c209]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-7cb6c209],.background-selector .background[data-v-7cb6c209]:hover,.background-selector .background[data-v-7cb6c209]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-7cb6c209]:not(.icon-loading):after{background-image:var(--icon-checkmark-fff);background-repeat:no-repeat;background-position:center;background-size:44px;content:\\\"\\\";display:block;height:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AA4IA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,0CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center center;\\n\\t\\ttext-align: center;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&.current {\\n\\t\\t\\tbackground-image: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t&.filepicker, &.default, &.color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&.color {\\n\\t\\t\\tbackground-color: var(--color-primary);\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t}\\n\\n\\t\\t&.active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tborder: 2px solid var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&.active:not(.icon-loading):after {\\n\\t\\t\\tbackground-image: var(--icon-checkmark-fff);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-size: 44px;\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 773;","__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\t773: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(65880); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","isMobile","this","_isMobile","beforeMount","window","addEventListener","_onResize","beforeDestroy","removeEventListener","methods","document","documentElement","clientWidth","url","generateFilePath","background","time","themingDefaultBackground","enabledThemes","OCA","Theming","isDarkTheme","join","indexOf","generateUrl","cacheBuster","prefixWithBaseUrl","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","class","active","attrs","on","pickFile","_v","_s","t","loading","setDefault","pickColor","_l","shippedBackground","directives","name","rawName","value","details","expression","key","style","preview","$event","setShipped","greeting","text","status","ref","refInFor","_b","saveLayout","model","callback","$$v","layout","swapThreshold","delay","delayOnTouchOnly","touchStartThreshold","panelId","panels","id","iconClass","title","mounted","showModal","scopedSlots","_u","fn","proxy","closeModal","domProps","isStatusActive","updateStatusCheckbox","target","checked","statusInfo","icon","panel","isActive","updateCheckbox","draggable","appStoreUrl","_e","updateBackground","__webpack_nonce__","btoa","getRequestToken","Vue","VTooltip","Files","Object","assign","App","fileList","filesClient","OC","getClient","Instance","DashboardApp","$mount","Dashboard","register","app","registerStatus","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-apps-view-418.js b/dist/settings-apps-view-418.js
index 0a60d62eaab..f7584f5310c 100644
--- a/dist/settings-apps-view-418.js
+++ b/dist/settings-apps-view-418.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[418],{56934:function(t,n,e){var a=e(87537),i=e.n(a),s=e(23645),r=e.n(s)()(i());r.push([t.id,".app-details[data-v-8ea5f476]{padding:20px}.app-details__actions-manage[data-v-8ea5f476]{display:flex}.app-details__actions-manage input[data-v-8ea5f476]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-8ea5f476]{opacity:.7}.app-details__documentation[data-v-8ea5f476]{padding-top:20px}.app-details__description[data-v-8ea5f476]{padding-top:20px}.force[data-v-8ea5f476]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-8ea5f476]:hover,.force[data-v-8ea5f476]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}","",{version:3,sources:["webpack://./apps/settings/src/components/AppDetails.vue"],names:[],mappings:"AAuNA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CAED,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n"],sourceRoot:""}]),n.Z=r},6578:function(t,n,e){var a=e(87537),i=e.n(a),s=e(23645),r=e.n(s)()(i());r.push([t.id,".settings-markdown[data-v-652eb552] h1,.settings-markdown[data-v-652eb552] h2,.settings-markdown[data-v-652eb552] h3,.settings-markdown[data-v-652eb552] h4,.settings-markdown[data-v-652eb552] h5,.settings-markdown[data-v-652eb552] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-652eb552] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-652eb552] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-652eb552] h3{font-size:24px}.settings-markdown[data-v-652eb552] h4{font-size:21px}.settings-markdown[data-v-652eb552] h5{font-size:17px}.settings-markdown[data-v-652eb552] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-652eb552] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-652eb552] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-652eb552] li{position:relative}.settings-markdown[data-v-652eb552] ul,.settings-markdown[data-v-652eb552] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-652eb552] ul li{list-style-type:disc}.settings-markdown[data-v-652eb552] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-652eb552] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-652eb552] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}","",{version:3,sources:["webpack://./apps/settings/src/components/Markdown.vue"],names:[],mappings:"AAgHA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.settings-markdown::v-deep {\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n\tfont-weight: 600;\n\tline-height: 120%;\n\tmargin-top: 24px;\n\tmargin-bottom: 12px;\n\tcolor: var(--color-main-text);\n}\n\nh1 {\n\tfont-size: 36px;\n\tmargin-top: 48px;\n}\n\nh2 {\n\tfont-size: 28px;\n\tmargin-top: 48px;\n}\n\nh3 {\n\tfont-size: 24px;\n}\n\nh4 {\n\tfont-size: 21px;\n}\n\nh5 {\n\tfont-size: 17px;\n}\n\nh6 {\n\tfont-size: var(--default-font-size);\n}\n\npre {\n\twhite-space: pre;\n\toverflow-x: auto;\n\tbackground-color: var(--color-background-dark);\n\tborder-radius: var(--border-radius);\n\tpadding: 1em 1.3em;\n\tmargin-bottom: 1em;\n}\n\np code {\n\tbackground-color: var(--color-background-dark);\n\tborder-radius: var(--border-radius);\n\tpadding: .1em .3em;\n}\n\nli {\n\tposition: relative;\n}\n\nul, ol {\n\tpadding-left: 10px;\n\tmargin-left: 10px;\n}\n\nul li {\n\tlist-style-type: disc;\n}\n\nul > li > ul > li {\n\tlist-style-type: circle;\n}\n\nul > li > ul > li ul li {\n\tlist-style-type: square;\n}\n\nblockquote {\n\tpadding-left: 1em;\n\tborder-left: 4px solid var(--color-primary-element);\n\tcolor: var(--color-text-maxcontrast);\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n}\n"],sourceRoot:""}]),n.Z=r},57163:function(t,n,e){var a=e(87537),i=e.n(a),s=e(23645),r=e.n(s)()(i());r.push([t.id,".app-sidebar[data-v-d3244798]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-d3244798]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:invert(1)}.app-sidebar[data-v-d3244798] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-d3244798].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-d3244798].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-d3244798] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-d3244798] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-d3244798] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-d3244798] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-d3244798]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-d3244798] h3{font-size:20px}.app-sidebar-tabs__release[data-v-d3244798] h4{font-size:17px}","",{version:3,sources:["webpack://./apps/settings/src/views/Apps.vue"],names:[],mappings:"AA2TE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,gBAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,gDACC,cAAA,CAED,gDACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),n.Z=r},12635:function(t,n,e){var a=e(87537),i=e.n(a),s=e(23645),r=e.n(s)()(i());r.push([t.id,"\n.force[data-v-06bcd5b6] {\n\tbackground: var(--color-main-background);\n\tborder-color: var(--color-error);\n\tcolor: var(--color-error);\n}\n.force[data-v-06bcd5b6]:hover,\n.force[data-v-06bcd5b6]:active {\n\tbackground: var(--color-error);\n\tborder-color: var(--color-error) !important;\n\tcolor: var(--color-main-background);\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/AppList/AppItem.vue"],names:[],mappings:";AAmLA;CACA,wCAAA;CACA,gCAAA;CACA,yBAAA;AACA;AACA;;CAEA,8BAAA;CACA,2CAAA;CACA,mCAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div class="section" :class="{ selected: isSelected }" @click="showAppDetails">\n\t\t<div class="app-image app-image-icon" @click="showAppDetails">\n\t\t\t<div v-if="(listView && !app.preview) || (!listView && !screenshotLoaded)" class="icon-settings-dark" />\n\n\t\t\t<svg v-else-if="listView && app.preview"\n\t\t\t\twidth="32"\n\t\t\t\theight="32"\n\t\t\t\tviewBox="0 0 32 32">\n\t\t\t\t<defs><filter :id="filterId"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter></defs>\n\t\t\t\t<image x="0"\n\t\t\t\t\ty="0"\n\t\t\t\t\twidth="32"\n\t\t\t\t\theight="32"\n\t\t\t\t\tpreserveAspectRatio="xMinYMin meet"\n\t\t\t\t\t:filter="filterUrl"\n\t\t\t\t\t:xlink:href="app.preview"\n\t\t\t\t\tclass="app-icon" />\n\t\t\t</svg>\n\n\t\t\t<img v-if="!listView && app.screenshot && screenshotLoaded" :src="app.screenshot" width="100%">\n\t\t</div>\n\t\t<div class="app-name" @click="showAppDetails">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if="!listView" class="app-summary">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if="listView" class="app-version">\n\t\t\t<span v-if="app.version">{{ app.version }}</span>\n\t\t\t<span v-else-if="app.appstoreData.releases[0].version">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class="app-level">\n\t\t\t<span v-if="app.level === 300"\n\t\t\t\tv-tooltip.auto="t(\'settings\', \'This app is supported via your current Nextcloud subscription.\')"\n\t\t\t\tclass="supported icon-checkmark-color">\n\t\t\t\t{{ t(\'settings\', \'Supported\') }}</span>\n\t\t\t<span v-if="app.level === 200"\n\t\t\t\tv-tooltip.auto="t(\'settings\', \'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.\')"\n\t\t\t\tclass="official icon-checkmark">\n\t\t\t\t{{ t(\'settings\', \'Featured\') }}</span>\n\t\t\t<AppScore v-if="hasRating && !listView" :score="app.score" />\n\t\t</div>\n\n\t\t<div class="actions">\n\t\t\t<div v-if="app.error" class="warning">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if="isLoading" class="icon icon-loading-small" />\n\t\t\t<input v-if="app.update"\n\t\t\t\tclass="update primary"\n\t\t\t\ttype="button"\n\t\t\t\t:value="t(\'settings\', \'Update to {update}\', {update:app.update})"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="update(app.id)">\n\t\t\t<input v-if="app.canUnInstall"\n\t\t\t\tclass="uninstall"\n\t\t\t\ttype="button"\n\t\t\t\t:value="t(\'settings\', \'Remove\')"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="remove(app.id)">\n\t\t\t<input v-if="app.active"\n\t\t\t\tclass="enable"\n\t\t\t\ttype="button"\n\t\t\t\t:value="t(\'settings\',\'Disable\')"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="disable(app.id)">\n\t\t\t<input v-if="!app.active && (app.canInstall || app.isCompatible)"\n\t\t\t\tv-tooltip.auto="enableButtonTooltip"\n\t\t\t\tclass="enable"\n\t\t\t\ttype="button"\n\t\t\t\t:value="enableButtonText"\n\t\t\t\t:disabled="!app.canInstall || installing || isLoading"\n\t\t\t\t@click.stop="enable(app.id)">\n\t\t\t<input v-else-if="!app.active"\n\t\t\t\tv-tooltip.auto="forceEnableButtonTooltip"\n\t\t\t\tclass="enable force"\n\t\t\t\ttype="button"\n\t\t\t\t:value="forceEnableButtonText"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="forceEnable(app.id)">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from \'./AppScore\'\nimport AppManagement from \'../../mixins/AppManagement\'\nimport SvgFilterMixin from \'../SvgFilterMixin\'\n\nexport default {\n\tname: \'AppItem\',\n\tcomponents: {\n\t\tAppScore,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t\'$route.params.id\'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === \'INPUT\' || event.currentTarget.tagName === \'A\') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: \'apps-details\',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + \'_\' + content\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n'],sourceRoot:""}]),n.Z=r},9838:function(n,e,a){a.r(e),a.d(e,{default:function(){return mt}});var i=a(74854),s=a(20144),r=a(87369),o=a.n(r),p=a(23068),l=a.n(p),c=a(58908),d=a.n(c),u=a(50753),h=a.n(u),g=a(7612),v=a.n(g),A=a(6862),f=a.n(A),m=a(27801),b=a.n(m),C=a(47092),_=a.n(C),y=a(9597),w=a.n(y),k=a(79753),x={name:"AppScore",props:["score"],computed:{scoreImage:function(){var t="rating/s"+Math.round(10*this.score)+".svg";return(0,k.imagePath)("core",t)}}},D=a(51900),T=(0,D.Z)(x,(function(){var t=this,n=t.$createElement;return(t._self._c||n)("img",{staticClass:"app-score-image",attrs:{src:t.scoreImage}})}),[],!1,null,null,null).exports,S=a(26932),B=a(4820),I=function(){return B.default.get((0,k.generateOcsUrl)("core/navigation",2)+"/apps?format=json").then((function(t){var n=t.data;if(200===n.ocs.meta.statuscode){var e={},a=n.ocs.data,i=document.querySelector("#navigation #apps ul");a.forEach((function(t){i.querySelector('li[data-id="'+t.id+'"]')||(e[t.id]=!0)})),i.querySelectorAll("li[data-id]").forEach((function(t,n){var e=t.dataset.id;(!a[n]||a[n]&&a[n].id!==e)&&(t.remove(),document.querySelector("#appmenu li[data-id=".concat(e,"]")).remove())}));var s={};a.forEach((function(t){if(null===i.querySelector('li[data-id="'.concat(t.id,'"]'))){var n=document.createElement("li");n.dataset.id=t.id;var a='<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t <defs>\n\t\t\t\t\t <filter id="invertMenuMore-'.concat(t.id,'"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"></feColorMatrix></filter>\n\t\t\t\t\t <mask id="hole">\n\t\t\t\t\t <rect width="100%" height="100%" fill="white"></rect>\n\t\t\t\t\t\t<circle r="4.5" cx="17" cy="3" fill="black"></circle>\n\t\t\t\t\t </mask>\n\t\t\t\t\t </defs>\n\t\t\t\t\t <image x="0" y="0" width="16" height="16" filter="url(#invertMenuMore-').concat(t.id,')" preserveAspectRatio="xMinYMin meet" xlink:href="').concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t</svg>'),r=document.createElement("template");r.innerHTML=a;var o=document.createElement("a");o.setAttribute("href",t.href);var p=document.createElement("span");p.appendChild(document.createTextNode(t.name));var l=document.createElement("div");l.setAttribute("class","unread-counter"),l.style.display="none",e[t.id]&&o.classList.add("animated"),o.prepend(r.content.firstChild,l,p),n.append(o);var c=document.querySelector("#navigation li[data-id=".concat(s.id,"]"));c?c.insertAdjacentElement("afterend",n):document.querySelector("#navigation #apps ul").prepend(n)}if(null===document.getElementById("appmenu").querySelector('li[data-id="'.concat(t.id,'"]'))){var d,u=document.createElement("li");u.dataset.id=t.id,d=OCA.Theming&&OCA.Theming.inverted?'<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t\t <defs>\n\t\t\t\t\t\t <filter id="invert"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter>\n\t\t\t\t\t\t </defs>\n\t\t\t\t\t\t <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" filter="url(#invert)" xlink:href="'.concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t\t</svg>'):'<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t\t <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" xlink:href="'.concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t\t</svg>');var h=document.createElement("template");h.innerHTML=d;var g=document.createElement("a");g.setAttribute("href",t.href);var v=document.createElement("span");v.appendChild(document.createTextNode(t.name));var A=document.createElement("div");A.setAttribute("class","icon-loading-dark"),A.style.display="none",e[t.id]&&g.classList.add("animated"),g.prepend(A,v,h.content.firstChild),u.append(g);var f=document.querySelector("#appmenu li[data-id="+s.id+"]");f?f.insertAdjacentElement("afterend",u):document.queryElementById("appmenu").prepend(u)}s=t})),window.dispatchEvent(new Event("resize"))}}))},L={computed:{appGroups:function(){return this.app.groups.map((function(t){return{id:t,name:t}}))},installing:function(){return this.$store.getters.loading("install")},isLoading:function(){return this.app&&this.$store.getters.loading(this.app.id)},enableButtonText:function(){return this.app.needsDownload?t("settings","Download and enable"):t("settings","Enable")},forceEnableButtonText:function(){return this.app.needsDownload,t("settings","Enable untested app")},enableButtonTooltip:function(){return!!this.app.needsDownload&&t("settings","The app will be downloaded from the App Store")},forceEnableButtonTooltip:function(){var n=t("settings","This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.");return this.app.needsDownload?n+" "+t("settings","The app will be downloaded from the App Store"):n}},data:function(){return{groupCheckedAppsData:!1}},mounted:function(){this.app&&this.app.groups&&this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},methods:{asyncFindGroup:function(t){return this.$store.dispatch("getGroups",{search:t,limit:5,offset:0})},isLimitedToGroups:function(t){return!(!this.app.groups.length&&!this.groupCheckedAppsData)},setGroupLimit:function(){this.groupCheckedAppsData||this.$store.dispatch("enableApp",{appId:this.app.id,groups:[]})},canLimitToGroups:function(t){return!(t.types&&t.types.includes("filesystem")||t.types.includes("prelogin")||t.types.includes("authentication")||t.types.includes("logging")||t.types.includes("prevent_group_restriction"))},addGroupLimitation:function(t){var n=this.app.groups.concat([]).concat([t.id]);this.$store.dispatch("enableApp",{appId:this.app.id,groups:n})},removeGroupLimitation:function(t){var n=this.app.groups.concat([]),e=n.indexOf(t.id);e>-1&&n.splice(e,1),this.$store.dispatch("enableApp",{appId:this.app.id,groups:n})},forceEnable:function(t){this.$store.dispatch("forceEnableApp",{appId:t,groups:[]}).then((function(t){I()})).catch((function(t){(0,S.x2)(t)}))},enable:function(t){this.$store.dispatch("enableApp",{appId:t,groups:[]}).then((function(t){I()})).catch((function(t){(0,S.x2)(t)}))},disable:function(t){this.$store.dispatch("disableApp",{appId:t}).then((function(t){I()})).catch((function(t){(0,S.x2)(t)}))},remove:function(t){this.$store.dispatch("uninstallApp",{appId:t}).then((function(t){I()})).catch((function(t){(0,S.x2)(t)}))},install:function(t){this.$store.dispatch("enableApp",{appId:t}).then((function(t){I()})).catch((function(t){(0,S.x2)(t)}))},update:function(t){this.$store.dispatch("updateApp",{appId:t}).then((function(t){I()})).catch((function(t){(0,S.x2)(t)}))}}},E={name:"SvgFilterMixin",data:function(){return{filterId:""}},computed:{filterUrl:function(){return"url(#".concat(this.filterId,")")}},mounted:function(){this.filterId="invertIconApps"+Math.floor(100*Math.random())+(new Date).getSeconds()+(new Date).getMilliseconds()}};function N(t,n,e,a,i,s,r){try{var o=t[s](r),p=o.value}catch(t){return void e(t)}o.done?n(p):Promise.resolve(p).then(a,i)}var M={name:"AppItem",components:{AppScore:T},mixins:[L,(0,D.Z)(E,void 0,void 0,!1,null,null,null).exports],props:{app:{},category:{},listView:{type:Boolean,default:!0}},data:function(){return{isSelected:!1,scrolled:!1,screenshotLoaded:!1}},computed:{hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5}},watch:{"$route.params.id":function(t){this.isSelected=this.app.id===t}},mounted:function(){var t=this;if(this.isSelected=this.app.id===this.$route.params.id,this.app.releases&&this.app.screenshot){var n=new Image;n.onload=function(n){t.screenshotLoaded=!0},n.src=this.app.screenshot}},watchers:{},methods:{showAppDetails:function(t){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("INPUT"!==t.currentTarget.tagName&&"A"!==t.currentTarget.tagName){n.next=2;break}return n.abrupt("return");case 2:return n.prev=2,n.next=5,e.$router.push({name:"apps-details",params:{category:e.category,id:e.app.id}});case 5:n.next=9;break;case 7:n.prev=7,n.t0=n.catch(2);case 9:case"end":return n.stop()}}),n,null,[[2,7]])})),function(){var t=this,e=arguments;return new Promise((function(a,i){var s=n.apply(t,e);function r(t){N(s,a,i,r,o,"next",t)}function o(t){N(s,a,i,r,o,"throw",t)}r(void 0)}))})()},prefix:function(t,n){return t+"_"+n}}},G=M,$=a(93379),U=a.n($),R=a(7795),V=a.n(R),Z=a(90569),z=a.n(Z),O=a(3565),F=a.n(O),P=a(19216),q=a.n(P),Y=a(44589),H=a.n(Y),j=a(12635),Q={};Q.styleTagTransform=H(),Q.setAttributes=F(),Q.insert=z().bind(null,"head"),Q.domAPI=V(),Q.insertStyleElement=q(),U()(j.Z,Q),j.Z&&j.Z.locals&&j.Z.locals;var W=(0,D.Z)(G,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"section",class:{selected:t.isSelected},on:{click:t.showAppDetails}},[e("div",{staticClass:"app-image app-image-icon",on:{click:t.showAppDetails}},[t.listView&&!t.app.preview||!t.listView&&!t.screenshotLoaded?e("div",{staticClass:"icon-settings-dark"}):t.listView&&t.app.preview?e("svg",{attrs:{width:"32",height:"32",viewBox:"0 0 32 32"}},[e("defs",[e("filter",{attrs:{id:t.filterId}},[e("feColorMatrix",{attrs:{in:"SourceGraphic",type:"matrix",values:"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"}})],1)]),t._v(" "),e("image",{staticClass:"app-icon",attrs:{x:"0",y:"0",width:"32",height:"32",preserveAspectRatio:"xMinYMin meet",filter:t.filterUrl,"xlink:href":t.app.preview}})]):t._e(),t._v(" "),!t.listView&&t.app.screenshot&&t.screenshotLoaded?e("img",{attrs:{src:t.app.screenshot,width:"100%"}}):t._e()]),t._v(" "),e("div",{staticClass:"app-name",on:{click:t.showAppDetails}},[t._v("\n\t\t"+t._s(t.app.name)+"\n\t")]),t._v(" "),t.listView?t._e():e("div",{staticClass:"app-summary"},[t._v("\n\t\t"+t._s(t.app.summary)+"\n\t")]),t._v(" "),t.listView?e("div",{staticClass:"app-version"},[t.app.version?e("span",[t._v(t._s(t.app.version))]):t.app.appstoreData.releases[0].version?e("span",[t._v(t._s(t.app.appstoreData.releases[0].version))]):t._e()]):t._e(),t._v(" "),e("div",{staticClass:"app-level"},[300===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t"+t._s(t.t("settings","Featured")))]):t._e(),t._v(" "),t.hasRating&&!t.listView?e("AppScore",{attrs:{score:t.app.score}}):t._e()],1),t._v(" "),e("div",{staticClass:"actions"},[t.app.error?e("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.app.error)+"\n\t\t")]):t._e(),t._v(" "),t.isLoading?e("div",{staticClass:"icon icon-loading-small"}):t._e(),t._v(" "),t.app.update?e("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {update}",{update:t.app.update}),disabled:t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?e("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?e("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active?t._e():e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.forceEnable(t.app.id)}}}):e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.enable(t.app.id)}}})])])}),[],!1,null,"06bcd5b6",null).exports,J=(0,D.Z)({name:"PrefixMixin",methods:{prefix:function(t,n){return t+"_"+n}}},void 0,void 0,!1,null,null,null).exports,K=a(63560),X=a(1412),tt={name:"AppList",components:{AppItem:W,Button:a.n(X)()},mixins:[J],props:["category","app","search"],computed:{counter:function(){return this.apps.filter((function(t){return t.update})).length},loading:function(){return this.$store.getters.loading("list")},hasPendingUpdate:function(){return this.apps.filter((function(t){return t.update})).length>1},showUpdateAll:function(){return this.hasPendingUpdate&&["installed","updates"].includes(this.category)},apps:function(){var t=this,n=this.$store.getters.getAllApps.filter((function(n){return-1!==n.name.toLowerCase().search(t.search.toLowerCase())})).sort((function(t,n){var e=""+(t.active?0:1)+(t.update?0:1)+t.name,a=""+(n.active?0:1)+(n.update?0:1)+n.name;return OC.Util.naturalSortCompare(e,a)}));return"installed"===this.category?n.filter((function(t){return t.installed})):"enabled"===this.category?n.filter((function(t){return t.active&&t.installed})):"disabled"===this.category?n.filter((function(t){return!t.active&&t.installed})):"app-bundles"===this.category?n.filter((function(t){return t.bundles})):"updates"===this.category?n.filter((function(t){return t.update})):"featured"===this.category?n.filter((function(t){return 200===t.level})):n.filter((function(n){return n.appstore&&void 0!==n.category&&(n.category===t.category||n.category.indexOf(t.category)>-1)}))},bundles:function(){var t=this;return this.$store.getters.getServerData.bundles.filter((function(n){return t.bundleApps(n.id).length>0}))},bundleApps:function(){return function(t){return this.$store.getters.getAllApps.filter((function(n){return void 0!==n.bundleIds&&n.bundleIds.includes(t)}))}},searchApps:function(){var t=this;return""===this.search?[]:this.$store.getters.getAllApps.filter((function(n){return-1!==n.name.toLowerCase().search(t.search.toLowerCase())&&!t.apps.find((function(t){return t.id===n.id}))}))},useAppStoreView:function(){return!this.useListView&&!this.useBundleView},useListView:function(){return"installed"===this.category||"enabled"===this.category||"disabled"===this.category||"updates"===this.category||"featured"===this.category},useBundleView:function(){return"app-bundles"===this.category},allBundlesEnabled:function(){var t=this;return function(n){return 0===t.bundleApps(n).filter((function(t){return!t.active})).length}},bundleToggleText:function(){var n=this;return function(e){return n.allBundlesEnabled(e)?t("settings","Disable all"):t("settings","Enable all")}}},methods:{toggleBundle:function(t){return this.allBundlesEnabled(t)?this.disableBundle(t):this.enableBundle(t)},enableBundle:function(t){var n=this.bundleApps(t).map((function(t){return t.id}));this.$store.dispatch("enableApp",{appId:n,groups:[]}).catch((function(t){console.error(t),OC.Notification.show(t)}))},disableBundle:function(t){var n=this.bundleApps(t).map((function(t){return t.id}));this.$store.dispatch("disableApp",{appId:n,groups:[]}).catch((function(t){OC.Notification.show(t)}))},updateAll:function(){var t=this,n=(0,K.Z)(1);this.apps.filter((function(t){return t.update})).map((function(e){return n((function(){return t.$store.dispatch("updateApp",{appId:e.id})}))}))}}},nt=(0,D.Z)(tt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{attrs:{id:"app-content-inner"}},[e("div",{staticClass:"apps-list",class:{installed:t.useBundleView||t.useListView,store:t.useAppStoreView},attrs:{id:"apps-list"}},[t.useListView?[t.showUpdateAll?e("div",{staticClass:"toolbar"},[t._v("\n\t\t\t\t"+t._s(t.n("settings","%n app has an update available","%n apps have an update available",t.counter))+"\n\t\t\t\t"),t.showUpdateAll?e("Button",{attrs:{id:"app-list-update-all",type:"primary"},on:{click:t.updateAll}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Update all"))+"\n\t\t\t\t")]):t._e()],1):t._e(),t._v(" "),t.showUpdateAll?t._e():e("div",{staticClass:"toolbar"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","All apps are up-to-date."))+"\n\t\t\t")]),t._v(" "),e("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},t._l(t.apps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category}})})),1)]:t._e(),t._v(" "),t.useBundleView?e("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},[t._l(t.bundles,(function(n){return[e("div",{key:n.id,staticClass:"apps-header"},[e("div",{staticClass:"app-image"}),t._v(" "),e("h2",[t._v(t._s(n.name)+" "),e("input",{attrs:{type:"button",value:t.bundleToggleText(n.id)},on:{click:function(e){return t.toggleBundle(n.id)}}})]),t._v(" "),e("div",{staticClass:"app-version"}),t._v(" "),e("div",{staticClass:"app-level"}),t._v(" "),e("div",{staticClass:"app-groups"}),t._v(" "),e("div",{staticClass:"actions"},[t._v("\n\t\t\t\t\t\t \n\t\t\t\t\t")])]),t._v(" "),t._l(t.bundleApps(n.id),(function(a){return e("AppItem",{key:n.id+a.id,attrs:{app:a,category:t.category}})}))]}))],2):t._e(),t._v(" "),t.useAppStoreView?t._l(t.apps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category,"list-view":!1}})})):t._e()],2),t._v(" "),e("div",{staticClass:"apps-list installed",attrs:{id:"apps-list-search"}},[e("div",{staticClass:"apps-list-container"},[""!==t.search&&t.searchApps.length>0?[e("div",{staticClass:"section"},[e("div"),t._v(" "),e("td",{attrs:{colspan:"5"}},[e("h2",[t._v(t._s(t.t("settings","Results from other categories")))])])]),t._v(" "),t._l(t.searchApps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category,"list-view":!0}})}))]:t._e()],2)]),t._v(" "),""===t.search||t.loading||0!==t.searchApps.length||0!==t.apps.length?t._e():e("div",{staticClass:"emptycontent emptycontent-search",attrs:{id:"apps-list-empty"}},[e("div",{staticClass:"icon-settings-dark",attrs:{id:"app-list-empty-icon"}}),t._v(" "),e("h2",[t._v(t._s(t.t("settings","No apps found for your version")))])]),t._v(" "),e("div",{attrs:{id:"searchresults"}})])}),[],!1,null,null,null).exports,et=a(7811),at=a.n(et),it=a(87441),st=a(27856),rt=a.n(st),ot={name:"Markdown",props:{text:{type:String,default:""}},computed:{renderMarkdown:function(){var t=new it.TU.Renderer;return t.link=function(t,n,e){var a;try{a=decodeURIComponent(unescape(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0!==a.indexOf("http:")&&0!==a.indexOf("https:"))return"";var i='<a href="'+t+'" rel="noreferrer noopener"';return n&&(i+=' title="'+n+'"'),i+">"+e+"</a>"},t.image=function(t,n,e){return e||n},t.blockquote=function(t){return t},rt().sanitize((0,it.TU)(this.text.trim(),{renderer:t,gfm:!1,highlight:!1,tables:!1,breaks:!1,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!1}),{SAFE_FOR_JQUERY:!0,ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})}}},pt=a(6578),lt={};lt.styleTagTransform=H(),lt.setAttributes=F(),lt.insert=z().bind(null,"head"),lt.domAPI=V(),lt.insertStyleElement=q(),U()(pt.Z,lt),pt.Z&&pt.Z.locals&&pt.Z.locals;var ct=(0,D.Z)(ot,(function(){var t=this,n=t.$createElement;return(t._self._c||n)("div",{staticClass:"settings-markdown",domProps:{innerHTML:t._s(t.renderMarkdown)}})}),[],!1,null,"652eb552",null).exports,dt={name:"AppDetails",components:{Multiselect:at(),Markdown:ct},mixins:[L,J],props:{app:{type:Object,required:!0}},data:function(){return{groupCheckedAppsData:!1}},computed:{appstoreUrl:function(){return"https://apps.nextcloud.com/apps/".concat(this.app.id)},licence:function(){return this.app.licence?t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()}):null},author:function(){return"string"==typeof this.app.author?[{"@value":this.app.author}]:this.app.author["@value"]?[this.app.author]:this.app.author},appGroups:function(){return this.app.groups.map((function(t){return{id:t,name:t}}))},groups:function(){return this.$store.getters.getGroups.filter((function(t){return"disabled"!==t.id})).sort((function(t,n){return t.name.localeCompare(n.name)}))}},mounted:function(){this.app.groups.length>0&&(this.groupCheckedAppsData=!0)}},ut=a(56934),ht={};ht.styleTagTransform=H(),ht.setAttributes=F(),ht.insert=z().bind(null,"head"),ht.domAPI=V(),ht.insertStyleElement=q(),U()(ut.Z,ht),ut.Z&&ut.Z.locals&&ut.Z.locals;var gt=(0,D.Z)(dt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"app-details"},[e("div",{staticClass:"app-details__actions"},[t.app.active&&t.canLimitToGroups(t.app)?e("div",{staticClass:"app-details__actions-groups"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.groupCheckedAppsData,expression:"groupCheckedAppsData"}],staticClass:"groups-enable__checkbox checkbox",attrs:{id:t.prefix("groups_enable",t.app.id),type:"checkbox"},domProps:{value:t.app.id,checked:Array.isArray(t.groupCheckedAppsData)?t._i(t.groupCheckedAppsData,t.app.id)>-1:t.groupCheckedAppsData},on:{change:[function(n){var e=t.groupCheckedAppsData,a=n.target,i=!!a.checked;if(Array.isArray(e)){var s=t.app.id,r=t._i(e,s);a.checked?r<0&&(t.groupCheckedAppsData=e.concat([s])):r>-1&&(t.groupCheckedAppsData=e.slice(0,r).concat(e.slice(r+1)))}else t.groupCheckedAppsData=i},t.setGroupLimit]}}),t._v(" "),e("label",{attrs:{for:t.prefix("groups_enable",t.app.id)}},[t._v(t._s(t.t("settings","Limit to groups")))]),t._v(" "),e("input",{staticClass:"group_select",attrs:{type:"hidden",title:t.t("settings","All"),value:""}}),t._v(" "),t.isLimitedToGroups(t.app)?e("Multiselect",{staticClass:"multiselect-vue",attrs:{options:t.groups,value:t.appGroups,"options-limit":5,placeholder:t.t("settings","Limit app usage to groups"),label:"name","track-by":"id",multiple:!0,"close-on-select":!1,"tag-width":60},on:{select:t.addGroupLimitation,remove:t.removeGroupLimitation,"search-change":t.asyncFindGroup}},[e("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])]):t._e()],1):t._e(),t._v(" "),e("div",{staticClass:"app-details__actions-manage"},[t.app.update?e("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {version}",{version:t.app.update}),disabled:t.installing||t.isLoading},on:{click:function(n){return t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?e("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.isLoading},on:{click:function(n){return t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?e("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.isLoading},on:{click:function(n){return t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active||t.app.canInstall?t._e():e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.isLoading},on:{click:function(n){return t.forceEnable(t.app.id)}}}):e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable primary",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.isLoading},on:{click:function(n){return t.enable(t.app.id)}}})])]),t._v(" "),e("ul",{staticClass:"app-details__dependencies"},[t.app.missingMinOwnCloudVersion?e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app has no minimum Nextcloud version assigned. This will be an error in the future."))+"\n\t\t")]):t._e(),t._v(" "),t.app.missingMaxOwnCloudVersion?e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app has no maximum Nextcloud version assigned. This will be an error in the future."))+"\n\t\t")]):t._e(),t._v(" "),t.app.canInstall?t._e():e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app cannot be installed because the following dependencies are not fulfilled:"))+"\n\t\t\t"),e("ul",{staticClass:"missing-dependencies"},t._l(t.app.missingDependencies,(function(n,a){return e("li",{key:a},[t._v("\n\t\t\t\t\t"+t._s(n)+"\n\t\t\t\t")])})),0)])]),t._v(" "),e("p",{staticClass:"app-details__documentation"},[t.app.internal?t._e():e("a",{staticClass:"appslink",attrs:{href:t.appstoreUrl,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","View in store"))+" ↗")]),t._v(" "),t.app.website?e("a",{staticClass:"appslink",attrs:{href:t.app.website,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Visit website"))+" ↗")]):t._e(),t._v(" "),t.app.bugs?e("a",{staticClass:"appslink",attrs:{href:t.app.bugs,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Report a bug"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.user?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.user,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","User documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.admin?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.admin,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Admin documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.developer?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.developer,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Developer documentation"))+" ↗")]):t._e()]),t._v(" "),e("Markdown",{staticClass:"app-details__description",attrs:{text:t.app.description}})],1)}),[],!1,null,"8ea5f476",null).exports;s.default.use(o());var vt={name:"Apps",components:{AppContent:l(),AppDetails:gt,AppList:nt,AppNavigation:d(),AppNavigationCounter:h(),AppNavigationItem:v(),AppNavigationSpacer:f(),AppScore:T,AppSidebar:b(),AppSidebarTab:_(),Content:w(),Markdown:ct},mixins:[L],props:{category:{type:String,default:"installed"},id:{type:String,default:""}},data:function(){return{searchQuery:"",screenshotLoaded:!1}},computed:{loading:function(){return this.$store.getters.loading("categories")},loadingList:function(){return this.$store.getters.loading("list")},app:function(){var t=this;return this.apps.find((function(n){return n.id===t.id}))},categories:function(){return this.$store.getters.getCategories},apps:function(){return this.$store.getters.getAllApps},updateCount:function(){return this.$store.getters.getUpdateCount},settings:function(){return this.$store.getters.getServerData},hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5},appSidebar:function(){var n=function(t){return t["@value"]?t["@value"]:t},e=Array.isArray(this.app.author)?this.app.author.map(n).join(", "):n(this.app.author),a=t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()});return{subtitle:t("settings","by {author}\n{license}",{author:e,license:a}),background:this.app.screenshot&&this.screenshotLoaded?this.app.screenshot:this.app.preview,compact:!(this.app.screenshot&&this.screenshotLoaded),title:this.app.name}},changelog:function(){return function(t){return t.translations.en.changelog}}},watch:{category:function(){this.searchQuery=""},app:function(){var t,n,e=this;if(this.screenshotLoaded=!1,null!==(t=this.app)&&void 0!==t&&t.releases&&null!==(n=this.app)&&void 0!==n&&n.screenshot){var a=new Image;a.onload=function(t){e.screenshotLoaded=!0},a.src=this.app.screenshot}}},beforeMount:function(){this.$store.dispatch("getCategories"),this.$store.dispatch("getAllApps"),this.$store.dispatch("getGroups",{offset:0,limit:5}),this.$store.commit("setUpdateCount",this.$store.getters.getServerData.updateCount)},mounted:function(){(0,i.subscribe)("nextcloud:unified-search.search",this.setSearch),(0,i.subscribe)("nextcloud:unified-search.reset",this.resetSearch)},beforeDestroy:function(){(0,i.unsubscribe)("nextcloud:unified-search.search",this.setSearch),(0,i.unsubscribe)("nextcloud:unified-search.reset",this.resetSearch)},methods:{setSearch:function(t){var n=t.query;this.searchQuery=n},resetSearch:function(){this.searchQuery=""},hideAppDetails:function(){this.$router.push({name:"apps-category",params:{category:this.category}})},openDeveloperDocumentation:function(){window.open(this.settings.developerDocumentation)}}},At=a(57163),ft={};ft.styleTagTransform=H(),ft.setAttributes=F(),ft.insert=z().bind(null,"head"),ft.domAPI=V(),ft.insertStyleElement=q(),U()(At.Z,ft),At.Z&&At.Z.locals&&At.Z.locals;var mt=(0,D.Z)(vt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("Content",{class:{"with-app-sidebar":t.app},attrs:{"app-name":"settings","content-class":{"icon-loading":t.loadingList},"navigation-class":{"icon-loading":t.loading}}},[e("AppNavigation",{scopedSlots:t._u([{key:"list",fn:function(){return[e("AppNavigationItem",{attrs:{id:"app-category-your-apps",to:{name:"apps"},exact:!0,icon:"icon-category-installed",title:t.t("settings","Your apps")}}),t._v(" "),e("AppNavigationItem",{attrs:{id:"app-category-enabled",to:{name:"apps-category",params:{category:"enabled"}},icon:"icon-category-enabled",title:t.t("settings","Active apps")}}),t._v(" "),e("AppNavigationItem",{attrs:{id:"app-category-disabled",to:{name:"apps-category",params:{category:"disabled"}},icon:"icon-category-disabled",title:t.t("settings","Disabled apps")}}),t._v(" "),t.updateCount>0?e("AppNavigationItem",{attrs:{id:"app-category-updates",to:{name:"apps-category",params:{category:"updates"}},icon:"icon-download",title:t.t("settings","Updates")}},[e("AppNavigationCounter",{attrs:{slot:"counter"},slot:"counter"},[t._v("\n\t\t\t\t\t"+t._s(t.updateCount)+"\n\t\t\t\t")])],1):t._e(),t._v(" "),e("AppNavigationItem",{attrs:{id:"app-category-your-bundles",to:{name:"apps-category",params:{category:"app-bundles"}},icon:"icon-category-app-bundles",title:t.t("settings","App bundles")}}),t._v(" "),e("AppNavigationSpacer"),t._v(" "),t.settings.appstoreEnabled?[e("AppNavigationItem",{attrs:{id:"app-category-featured",to:{name:"apps-category",params:{category:"featured"}},icon:"icon-favorite",title:t.t("settings","Featured apps")}}),t._v(" "),t._l(t.categories,(function(t){return e("AppNavigationItem",{key:"icon-category-"+t.ident,attrs:{icon:"icon-category-"+t.ident,to:{name:"apps-category",params:{category:t.ident}},title:t.displayName}})}))]:t._e(),t._v(" "),e("AppNavigationItem",{attrs:{id:"app-developer-docs",title:t.t("settings","Developer documentation")+" ↗"},on:{click:t.openDeveloperDocumentation}})]},proxy:!0}])}),t._v(" "),e("AppContent",{staticClass:"app-settings-content",class:{"icon-loading":t.loadingList}},[e("AppList",{attrs:{category:t.category,app:t.app,search:t.searchQuery}})],1),t._v(" "),t.id&&t.app?e("AppSidebar",t._b({class:{"app-sidebar--without-background":!t.appSidebar.background},on:{close:t.hideAppDetails},scopedSlots:t._u([t.appSidebar.background?null:{key:"header",fn:function(){return[e("div",{staticClass:"app-sidebar-header__figure--default-app-icon icon-settings-dark"})]},proxy:!0},{key:"description",fn:function(){return[300===t.app.level||200===t.app.level||t.hasRating?e("div",{staticClass:"app-level"},[300===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Featured")))]):t._e(),t._v(" "),t.hasRating?e("AppScore",{attrs:{score:t.app.appstoreData.ratingOverall}}):t._e()],1):t._e(),t._v(" "),e("div",{staticClass:"app-version"},[e("p",[t._v(t._s(t.app.version))])])]},proxy:!0}],null,!0)},"AppSidebar",t.appSidebar,!1),[t._v(" "),t._v(" "),e("AppSidebarTab",{attrs:{id:"desc",icon:"icon-category-office",name:t.t("settings","Details"),order:0}},[e("AppDetails",{attrs:{app:t.app}})],1),t._v(" "),t.app.appstoreData&&t.app.releases[0].translations.en.changelog?e("AppSidebarTab",{attrs:{id:"desca",icon:"icon-category-organization",name:t.t("settings","Changelog"),order:1}},t._l(t.app.releases,(function(n){return e("div",{key:n.version,staticClass:"app-sidebar-tabs__release"},[e("h2",[t._v(t._s(n.version))]),t._v(" "),t.changelog(n)?e("Markdown",{attrs:{text:t.changelog(n)}}):t._e()],1)})),0):t._e()],1):t._e()],1)}),[],!1,null,"d3244798",null).exports}}]);
-//# sourceMappingURL=settings-apps-view-418.js.map?v=5fd8ba7c52d9c93a2e93 \ No newline at end of file
+"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[418],{56934:function(t,n,e){var a=e(87537),i=e.n(a),s=e(23645),r=e.n(s)()(i());r.push([t.id,".app-details[data-v-8ea5f476]{padding:20px}.app-details__actions-manage[data-v-8ea5f476]{display:flex}.app-details__actions-manage input[data-v-8ea5f476]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-8ea5f476]{opacity:.7}.app-details__documentation[data-v-8ea5f476]{padding-top:20px}.app-details__description[data-v-8ea5f476]{padding-top:20px}.force[data-v-8ea5f476]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-8ea5f476]:hover,.force[data-v-8ea5f476]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}","",{version:3,sources:["webpack://./apps/settings/src/components/AppDetails.vue"],names:[],mappings:"AAuNA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CAED,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n"],sourceRoot:""}]),n.Z=r},6578:function(t,n,e){var a=e(87537),i=e.n(a),s=e(23645),r=e.n(s)()(i());r.push([t.id,".settings-markdown[data-v-652eb552] h1,.settings-markdown[data-v-652eb552] h2,.settings-markdown[data-v-652eb552] h3,.settings-markdown[data-v-652eb552] h4,.settings-markdown[data-v-652eb552] h5,.settings-markdown[data-v-652eb552] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-652eb552] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-652eb552] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-652eb552] h3{font-size:24px}.settings-markdown[data-v-652eb552] h4{font-size:21px}.settings-markdown[data-v-652eb552] h5{font-size:17px}.settings-markdown[data-v-652eb552] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-652eb552] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-652eb552] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-652eb552] li{position:relative}.settings-markdown[data-v-652eb552] ul,.settings-markdown[data-v-652eb552] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-652eb552] ul li{list-style-type:disc}.settings-markdown[data-v-652eb552] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-652eb552] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-652eb552] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}","",{version:3,sources:["webpack://./apps/settings/src/components/Markdown.vue"],names:[],mappings:"AAgHA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.settings-markdown::v-deep {\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n\tfont-weight: 600;\n\tline-height: 120%;\n\tmargin-top: 24px;\n\tmargin-bottom: 12px;\n\tcolor: var(--color-main-text);\n}\n\nh1 {\n\tfont-size: 36px;\n\tmargin-top: 48px;\n}\n\nh2 {\n\tfont-size: 28px;\n\tmargin-top: 48px;\n}\n\nh3 {\n\tfont-size: 24px;\n}\n\nh4 {\n\tfont-size: 21px;\n}\n\nh5 {\n\tfont-size: 17px;\n}\n\nh6 {\n\tfont-size: var(--default-font-size);\n}\n\npre {\n\twhite-space: pre;\n\toverflow-x: auto;\n\tbackground-color: var(--color-background-dark);\n\tborder-radius: var(--border-radius);\n\tpadding: 1em 1.3em;\n\tmargin-bottom: 1em;\n}\n\np code {\n\tbackground-color: var(--color-background-dark);\n\tborder-radius: var(--border-radius);\n\tpadding: .1em .3em;\n}\n\nli {\n\tposition: relative;\n}\n\nul, ol {\n\tpadding-left: 10px;\n\tmargin-left: 10px;\n}\n\nul li {\n\tlist-style-type: disc;\n}\n\nul > li > ul > li {\n\tlist-style-type: circle;\n}\n\nul > li > ul > li ul li {\n\tlist-style-type: square;\n}\n\nblockquote {\n\tpadding-left: 1em;\n\tborder-left: 4px solid var(--color-primary-element);\n\tcolor: var(--color-text-maxcontrast);\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n}\n"],sourceRoot:""}]),n.Z=r},57163:function(t,n,e){var a=e(87537),i=e.n(a),s=e(23645),r=e.n(s)()(i());r.push([t.id,".app-sidebar[data-v-d3244798]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-d3244798]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:invert(1)}.app-sidebar[data-v-d3244798] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-d3244798].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-d3244798].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-d3244798] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-d3244798] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-d3244798] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-d3244798] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-d3244798]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-d3244798] h3{font-size:20px}.app-sidebar-tabs__release[data-v-d3244798] h4{font-size:17px}","",{version:3,sources:["webpack://./apps/settings/src/views/Apps.vue"],names:[],mappings:"AA2TE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,gBAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,gDACC,cAAA,CAED,gDACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),n.Z=r},12635:function(t,n,e){var a=e(87537),i=e.n(a),s=e(23645),r=e.n(s)()(i());r.push([t.id,"\n.force[data-v-06bcd5b6] {\n\tbackground: var(--color-main-background);\n\tborder-color: var(--color-error);\n\tcolor: var(--color-error);\n}\n.force[data-v-06bcd5b6]:hover,\n.force[data-v-06bcd5b6]:active {\n\tbackground: var(--color-error);\n\tborder-color: var(--color-error) !important;\n\tcolor: var(--color-main-background);\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/AppList/AppItem.vue"],names:[],mappings:";AAmLA;CACA,wCAAA;CACA,gCAAA;CACA,yBAAA;AACA;AACA;;CAEA,8BAAA;CACA,2CAAA;CACA,mCAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div class="section" :class="{ selected: isSelected }" @click="showAppDetails">\n\t\t<div class="app-image app-image-icon" @click="showAppDetails">\n\t\t\t<div v-if="(listView && !app.preview) || (!listView && !screenshotLoaded)" class="icon-settings-dark" />\n\n\t\t\t<svg v-else-if="listView && app.preview"\n\t\t\t\twidth="32"\n\t\t\t\theight="32"\n\t\t\t\tviewBox="0 0 32 32">\n\t\t\t\t<defs><filter :id="filterId"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter></defs>\n\t\t\t\t<image x="0"\n\t\t\t\t\ty="0"\n\t\t\t\t\twidth="32"\n\t\t\t\t\theight="32"\n\t\t\t\t\tpreserveAspectRatio="xMinYMin meet"\n\t\t\t\t\t:filter="filterUrl"\n\t\t\t\t\t:xlink:href="app.preview"\n\t\t\t\t\tclass="app-icon" />\n\t\t\t</svg>\n\n\t\t\t<img v-if="!listView && app.screenshot && screenshotLoaded" :src="app.screenshot" width="100%">\n\t\t</div>\n\t\t<div class="app-name" @click="showAppDetails">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if="!listView" class="app-summary">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if="listView" class="app-version">\n\t\t\t<span v-if="app.version">{{ app.version }}</span>\n\t\t\t<span v-else-if="app.appstoreData.releases[0].version">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class="app-level">\n\t\t\t<span v-if="app.level === 300"\n\t\t\t\tv-tooltip.auto="t(\'settings\', \'This app is supported via your current Nextcloud subscription.\')"\n\t\t\t\tclass="supported icon-checkmark-color">\n\t\t\t\t{{ t(\'settings\', \'Supported\') }}</span>\n\t\t\t<span v-if="app.level === 200"\n\t\t\t\tv-tooltip.auto="t(\'settings\', \'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.\')"\n\t\t\t\tclass="official icon-checkmark">\n\t\t\t\t{{ t(\'settings\', \'Featured\') }}</span>\n\t\t\t<AppScore v-if="hasRating && !listView" :score="app.score" />\n\t\t</div>\n\n\t\t<div class="actions">\n\t\t\t<div v-if="app.error" class="warning">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if="isLoading" class="icon icon-loading-small" />\n\t\t\t<input v-if="app.update"\n\t\t\t\tclass="update primary"\n\t\t\t\ttype="button"\n\t\t\t\t:value="t(\'settings\', \'Update to {update}\', {update:app.update})"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="update(app.id)">\n\t\t\t<input v-if="app.canUnInstall"\n\t\t\t\tclass="uninstall"\n\t\t\t\ttype="button"\n\t\t\t\t:value="t(\'settings\', \'Remove\')"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="remove(app.id)">\n\t\t\t<input v-if="app.active"\n\t\t\t\tclass="enable"\n\t\t\t\ttype="button"\n\t\t\t\t:value="t(\'settings\',\'Disable\')"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="disable(app.id)">\n\t\t\t<input v-if="!app.active && (app.canInstall || app.isCompatible)"\n\t\t\t\tv-tooltip.auto="enableButtonTooltip"\n\t\t\t\tclass="enable"\n\t\t\t\ttype="button"\n\t\t\t\t:value="enableButtonText"\n\t\t\t\t:disabled="!app.canInstall || installing || isLoading"\n\t\t\t\t@click.stop="enable(app.id)">\n\t\t\t<input v-else-if="!app.active"\n\t\t\t\tv-tooltip.auto="forceEnableButtonTooltip"\n\t\t\t\tclass="enable force"\n\t\t\t\ttype="button"\n\t\t\t\t:value="forceEnableButtonText"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="forceEnable(app.id)">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from \'./AppScore\'\nimport AppManagement from \'../../mixins/AppManagement\'\nimport SvgFilterMixin from \'../SvgFilterMixin\'\n\nexport default {\n\tname: \'AppItem\',\n\tcomponents: {\n\t\tAppScore,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t\'$route.params.id\'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === \'INPUT\' || event.currentTarget.tagName === \'A\') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: \'apps-details\',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + \'_\' + content\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n'],sourceRoot:""}]),n.Z=r},77538:function(n,e,a){a.r(e),a.d(e,{default:function(){return mt}});var i=a(74854),s=a(20144),r=a(87369),o=a.n(r),p=a(23068),l=a.n(p),c=a(58908),d=a.n(c),u=a(50753),h=a.n(u),g=a(7612),v=a.n(g),A=a(6862),f=a.n(A),m=a(27801),b=a.n(m),C=a(47092),_=a.n(C),y=a(9597),w=a.n(y),k=a(79753),x={name:"AppScore",props:["score"],computed:{scoreImage:function(){var t="rating/s"+Math.round(10*this.score)+".svg";return(0,k.imagePath)("core",t)}}},D=a(51900),T=(0,D.Z)(x,(function(){var t=this,n=t.$createElement;return(t._self._c||n)("img",{staticClass:"app-score-image",attrs:{src:t.scoreImage}})}),[],!1,null,null,null).exports,S=a(26932),B=a(4820),L=function(){return B.default.get((0,k.generateOcsUrl)("core/navigation",2)+"/apps?format=json").then((function(t){var n=t.data;if(200===n.ocs.meta.statuscode){var e={},a=n.ocs.data,i=document.querySelector("#navigation #apps ul");a.forEach((function(t){i.querySelector('li[data-id="'+t.id+'"]')||(e[t.id]=!0)})),i.querySelectorAll("li[data-id]").forEach((function(t,n){var e=t.dataset.id;(!a[n]||a[n]&&a[n].id!==e)&&(t.remove(),document.querySelector("#appmenu li[data-id=".concat(e,"]")).remove())}));var s={};a.forEach((function(t){if(null===i.querySelector('li[data-id="'.concat(t.id,'"]'))){var n=document.createElement("li");n.dataset.id=t.id;var a='<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t <defs>\n\t\t\t\t\t <filter id="invertMenuMore-'.concat(t.id,'"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"></feColorMatrix></filter>\n\t\t\t\t\t <mask id="hole">\n\t\t\t\t\t <rect width="100%" height="100%" fill="white"></rect>\n\t\t\t\t\t\t<circle r="4.5" cx="17" cy="3" fill="black"></circle>\n\t\t\t\t\t </mask>\n\t\t\t\t\t </defs>\n\t\t\t\t\t <image x="0" y="0" width="16" height="16" filter="url(#invertMenuMore-').concat(t.id,')" preserveAspectRatio="xMinYMin meet" xlink:href="').concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t</svg>'),r=document.createElement("template");r.innerHTML=a;var o=document.createElement("a");o.setAttribute("href",t.href);var p=document.createElement("span");p.appendChild(document.createTextNode(t.name));var l=document.createElement("div");l.setAttribute("class","unread-counter"),l.style.display="none",e[t.id]&&o.classList.add("animated"),o.prepend(r.content.firstChild,l,p),n.append(o);var c=document.querySelector("#navigation li[data-id=".concat(s.id,"]"));c?c.insertAdjacentElement("afterend",n):document.querySelector("#navigation #apps ul").prepend(n)}if(null===document.getElementById("appmenu").querySelector('li[data-id="'.concat(t.id,'"]'))){var d,u=document.createElement("li");u.dataset.id=t.id,d=OCA.Theming&&OCA.Theming.inverted?'<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t\t <defs>\n\t\t\t\t\t\t <filter id="invert"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter>\n\t\t\t\t\t\t </defs>\n\t\t\t\t\t\t <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" filter="url(#invert)" xlink:href="'.concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t\t</svg>'):'<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t\t <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" xlink:href="'.concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t\t</svg>');var h=document.createElement("template");h.innerHTML=d;var g=document.createElement("a");g.setAttribute("href",t.href);var v=document.createElement("span");v.appendChild(document.createTextNode(t.name));var A=document.createElement("div");A.setAttribute("class","icon-loading-dark"),A.style.display="none",e[t.id]&&g.classList.add("animated"),g.prepend(A,v,h.content.firstChild),u.append(g);var f=document.querySelector("#appmenu li[data-id="+s.id+"]");f?f.insertAdjacentElement("afterend",u):document.queryElementById("appmenu").prepend(u)}s=t})),window.dispatchEvent(new Event("resize"))}}))},I={computed:{appGroups:function(){return this.app.groups.map((function(t){return{id:t,name:t}}))},installing:function(){return this.$store.getters.loading("install")},isLoading:function(){return this.app&&this.$store.getters.loading(this.app.id)},enableButtonText:function(){return this.app.needsDownload?t("settings","Download and enable"):t("settings","Enable")},forceEnableButtonText:function(){return this.app.needsDownload,t("settings","Enable untested app")},enableButtonTooltip:function(){return!!this.app.needsDownload&&t("settings","The app will be downloaded from the App Store")},forceEnableButtonTooltip:function(){var n=t("settings","This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.");return this.app.needsDownload?n+" "+t("settings","The app will be downloaded from the App Store"):n}},data:function(){return{groupCheckedAppsData:!1}},mounted:function(){this.app&&this.app.groups&&this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},methods:{asyncFindGroup:function(t){return this.$store.dispatch("getGroups",{search:t,limit:5,offset:0})},isLimitedToGroups:function(t){return!(!this.app.groups.length&&!this.groupCheckedAppsData)},setGroupLimit:function(){this.groupCheckedAppsData||this.$store.dispatch("enableApp",{appId:this.app.id,groups:[]})},canLimitToGroups:function(t){return!(t.types&&t.types.includes("filesystem")||t.types.includes("prelogin")||t.types.includes("authentication")||t.types.includes("logging")||t.types.includes("prevent_group_restriction"))},addGroupLimitation:function(t){var n=this.app.groups.concat([]).concat([t.id]);this.$store.dispatch("enableApp",{appId:this.app.id,groups:n})},removeGroupLimitation:function(t){var n=this.app.groups.concat([]),e=n.indexOf(t.id);e>-1&&n.splice(e,1),this.$store.dispatch("enableApp",{appId:this.app.id,groups:n})},forceEnable:function(t){this.$store.dispatch("forceEnableApp",{appId:t,groups:[]}).then((function(t){L()})).catch((function(t){(0,S.x2)(t)}))},enable:function(t){this.$store.dispatch("enableApp",{appId:t,groups:[]}).then((function(t){L()})).catch((function(t){(0,S.x2)(t)}))},disable:function(t){this.$store.dispatch("disableApp",{appId:t}).then((function(t){L()})).catch((function(t){(0,S.x2)(t)}))},remove:function(t){this.$store.dispatch("uninstallApp",{appId:t}).then((function(t){L()})).catch((function(t){(0,S.x2)(t)}))},install:function(t){this.$store.dispatch("enableApp",{appId:t}).then((function(t){L()})).catch((function(t){(0,S.x2)(t)}))},update:function(t){this.$store.dispatch("updateApp",{appId:t}).then((function(t){L()})).catch((function(t){(0,S.x2)(t)}))}}},E={name:"SvgFilterMixin",data:function(){return{filterId:""}},computed:{filterUrl:function(){return"url(#".concat(this.filterId,")")}},mounted:function(){this.filterId="invertIconApps"+Math.floor(100*Math.random())+(new Date).getSeconds()+(new Date).getMilliseconds()}};function N(t,n,e,a,i,s,r){try{var o=t[s](r),p=o.value}catch(t){return void e(t)}o.done?n(p):Promise.resolve(p).then(a,i)}var M={name:"AppItem",components:{AppScore:T},mixins:[I,(0,D.Z)(E,void 0,void 0,!1,null,null,null).exports],props:{app:{},category:{},listView:{type:Boolean,default:!0}},data:function(){return{isSelected:!1,scrolled:!1,screenshotLoaded:!1}},computed:{hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5}},watch:{"$route.params.id":function(t){this.isSelected=this.app.id===t}},mounted:function(){var t=this;if(this.isSelected=this.app.id===this.$route.params.id,this.app.releases&&this.app.screenshot){var n=new Image;n.onload=function(n){t.screenshotLoaded=!0},n.src=this.app.screenshot}},watchers:{},methods:{showAppDetails:function(t){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("INPUT"!==t.currentTarget.tagName&&"A"!==t.currentTarget.tagName){n.next=2;break}return n.abrupt("return");case 2:return n.prev=2,n.next=5,e.$router.push({name:"apps-details",params:{category:e.category,id:e.app.id}});case 5:n.next=9;break;case 7:n.prev=7,n.t0=n.catch(2);case 9:case"end":return n.stop()}}),n,null,[[2,7]])})),function(){var t=this,e=arguments;return new Promise((function(a,i){var s=n.apply(t,e);function r(t){N(s,a,i,r,o,"next",t)}function o(t){N(s,a,i,r,o,"throw",t)}r(void 0)}))})()},prefix:function(t,n){return t+"_"+n}}},G=M,$=a(93379),U=a.n($),R=a(7795),V=a.n(R),Z=a(90569),z=a.n(Z),O=a(3565),F=a.n(O),P=a(19216),q=a.n(P),Y=a(44589),H=a.n(Y),j=a(12635),Q={};Q.styleTagTransform=H(),Q.setAttributes=F(),Q.insert=z().bind(null,"head"),Q.domAPI=V(),Q.insertStyleElement=q(),U()(j.Z,Q),j.Z&&j.Z.locals&&j.Z.locals;var W=(0,D.Z)(G,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"section",class:{selected:t.isSelected},on:{click:t.showAppDetails}},[e("div",{staticClass:"app-image app-image-icon",on:{click:t.showAppDetails}},[t.listView&&!t.app.preview||!t.listView&&!t.screenshotLoaded?e("div",{staticClass:"icon-settings-dark"}):t.listView&&t.app.preview?e("svg",{attrs:{width:"32",height:"32",viewBox:"0 0 32 32"}},[e("defs",[e("filter",{attrs:{id:t.filterId}},[e("feColorMatrix",{attrs:{in:"SourceGraphic",type:"matrix",values:"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"}})],1)]),t._v(" "),e("image",{staticClass:"app-icon",attrs:{x:"0",y:"0",width:"32",height:"32",preserveAspectRatio:"xMinYMin meet",filter:t.filterUrl,"xlink:href":t.app.preview}})]):t._e(),t._v(" "),!t.listView&&t.app.screenshot&&t.screenshotLoaded?e("img",{attrs:{src:t.app.screenshot,width:"100%"}}):t._e()]),t._v(" "),e("div",{staticClass:"app-name",on:{click:t.showAppDetails}},[t._v("\n\t\t"+t._s(t.app.name)+"\n\t")]),t._v(" "),t.listView?t._e():e("div",{staticClass:"app-summary"},[t._v("\n\t\t"+t._s(t.app.summary)+"\n\t")]),t._v(" "),t.listView?e("div",{staticClass:"app-version"},[t.app.version?e("span",[t._v(t._s(t.app.version))]):t.app.appstoreData.releases[0].version?e("span",[t._v(t._s(t.app.appstoreData.releases[0].version))]):t._e()]):t._e(),t._v(" "),e("div",{staticClass:"app-level"},[300===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t"+t._s(t.t("settings","Featured")))]):t._e(),t._v(" "),t.hasRating&&!t.listView?e("AppScore",{attrs:{score:t.app.score}}):t._e()],1),t._v(" "),e("div",{staticClass:"actions"},[t.app.error?e("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.app.error)+"\n\t\t")]):t._e(),t._v(" "),t.isLoading?e("div",{staticClass:"icon icon-loading-small"}):t._e(),t._v(" "),t.app.update?e("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {update}",{update:t.app.update}),disabled:t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?e("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?e("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active?t._e():e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.forceEnable(t.app.id)}}}):e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.isLoading},on:{click:function(n){return n.stopPropagation(),t.enable(t.app.id)}}})])])}),[],!1,null,"06bcd5b6",null).exports,J=(0,D.Z)({name:"PrefixMixin",methods:{prefix:function(t,n){return t+"_"+n}}},void 0,void 0,!1,null,null,null).exports,K=a(63560),X=a(1412),tt={name:"AppList",components:{AppItem:W,Button:a.n(X)()},mixins:[J],props:["category","app","search"],computed:{counter:function(){return this.apps.filter((function(t){return t.update})).length},loading:function(){return this.$store.getters.loading("list")},hasPendingUpdate:function(){return this.apps.filter((function(t){return t.update})).length>0},showUpdateAll:function(){return this.hasPendingUpdate&&this.useListView},apps:function(){var t=this,n=this.$store.getters.getAllApps.filter((function(n){return-1!==n.name.toLowerCase().search(t.search.toLowerCase())})).sort((function(t,n){var e=""+(t.active?0:1)+(t.update?0:1)+t.name,a=""+(n.active?0:1)+(n.update?0:1)+n.name;return OC.Util.naturalSortCompare(e,a)}));return"installed"===this.category?n.filter((function(t){return t.installed})):"enabled"===this.category?n.filter((function(t){return t.active&&t.installed})):"disabled"===this.category?n.filter((function(t){return!t.active&&t.installed})):"app-bundles"===this.category?n.filter((function(t){return t.bundles})):"updates"===this.category?n.filter((function(t){return t.update})):"featured"===this.category?n.filter((function(t){return 200===t.level})):n.filter((function(n){return n.appstore&&void 0!==n.category&&(n.category===t.category||n.category.indexOf(t.category)>-1)}))},bundles:function(){var t=this;return this.$store.getters.getServerData.bundles.filter((function(n){return t.bundleApps(n.id).length>0}))},bundleApps:function(){return function(t){return this.$store.getters.getAllApps.filter((function(n){return void 0!==n.bundleIds&&n.bundleIds.includes(t)}))}},searchApps:function(){var t=this;return""===this.search?[]:this.$store.getters.getAllApps.filter((function(n){return-1!==n.name.toLowerCase().search(t.search.toLowerCase())&&!t.apps.find((function(t){return t.id===n.id}))}))},useAppStoreView:function(){return!this.useListView&&!this.useBundleView},useListView:function(){return"installed"===this.category||"enabled"===this.category||"disabled"===this.category||"updates"===this.category||"featured"===this.category},useBundleView:function(){return"app-bundles"===this.category},allBundlesEnabled:function(){var t=this;return function(n){return 0===t.bundleApps(n).filter((function(t){return!t.active})).length}},bundleToggleText:function(){var n=this;return function(e){return n.allBundlesEnabled(e)?t("settings","Disable all"):t("settings","Enable all")}}},methods:{toggleBundle:function(t){return this.allBundlesEnabled(t)?this.disableBundle(t):this.enableBundle(t)},enableBundle:function(t){var n=this.bundleApps(t).map((function(t){return t.id}));this.$store.dispatch("enableApp",{appId:n,groups:[]}).catch((function(t){console.error(t),OC.Notification.show(t)}))},disableBundle:function(t){var n=this.bundleApps(t).map((function(t){return t.id}));this.$store.dispatch("disableApp",{appId:n,groups:[]}).catch((function(t){OC.Notification.show(t)}))},updateAll:function(){var t=this,n=(0,K.Z)(1);this.apps.filter((function(t){return t.update})).map((function(e){return n((function(){return t.$store.dispatch("updateApp",{appId:e.id})}))}))}}},nt=(0,D.Z)(tt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{attrs:{id:"app-content-inner"}},[e("div",{staticClass:"apps-list",class:{installed:t.useBundleView||t.useListView,store:t.useAppStoreView},attrs:{id:"apps-list"}},[t.useListView?[t.showUpdateAll?e("div",{staticClass:"toolbar"},[t._v("\n\t\t\t\t"+t._s(t.n("settings","%n app has an update available","%n apps have an update available",t.counter))+"\n\t\t\t\t"),t.showUpdateAll?e("Button",{attrs:{id:"app-list-update-all",type:"primary"},on:{click:t.updateAll}},[t._v("\n\t\t\t\t\t"+t._s(t.n("settings","Update","Update all",t.counter))+"\n\t\t\t\t")]):t._e()],1):t._e(),t._v(" "),t.showUpdateAll?t._e():e("div",{staticClass:"toolbar"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","All apps are up-to-date."))+"\n\t\t\t")]),t._v(" "),e("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},t._l(t.apps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category}})})),1)]:t._e(),t._v(" "),t.useBundleView?e("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},[t._l(t.bundles,(function(n){return[e("div",{key:n.id,staticClass:"apps-header"},[e("div",{staticClass:"app-image"}),t._v(" "),e("h2",[t._v(t._s(n.name)+" "),e("input",{attrs:{type:"button",value:t.bundleToggleText(n.id)},on:{click:function(e){return t.toggleBundle(n.id)}}})]),t._v(" "),e("div",{staticClass:"app-version"}),t._v(" "),e("div",{staticClass:"app-level"}),t._v(" "),e("div",{staticClass:"app-groups"}),t._v(" "),e("div",{staticClass:"actions"},[t._v("\n\t\t\t\t\t\t \n\t\t\t\t\t")])]),t._v(" "),t._l(t.bundleApps(n.id),(function(a){return e("AppItem",{key:n.id+a.id,attrs:{app:a,category:t.category}})}))]}))],2):t._e(),t._v(" "),t.useAppStoreView?t._l(t.apps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category,"list-view":!1}})})):t._e()],2),t._v(" "),e("div",{staticClass:"apps-list installed",attrs:{id:"apps-list-search"}},[e("div",{staticClass:"apps-list-container"},[""!==t.search&&t.searchApps.length>0?[e("div",{staticClass:"section"},[e("div"),t._v(" "),e("td",{attrs:{colspan:"5"}},[e("h2",[t._v(t._s(t.t("settings","Results from other categories")))])])]),t._v(" "),t._l(t.searchApps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category,"list-view":!0}})}))]:t._e()],2)]),t._v(" "),""===t.search||t.loading||0!==t.searchApps.length||0!==t.apps.length?t._e():e("div",{staticClass:"emptycontent emptycontent-search",attrs:{id:"apps-list-empty"}},[e("div",{staticClass:"icon-settings-dark",attrs:{id:"app-list-empty-icon"}}),t._v(" "),e("h2",[t._v(t._s(t.t("settings","No apps found for your version")))])]),t._v(" "),e("div",{attrs:{id:"searchresults"}})])}),[],!1,null,null,null).exports,et=a(7811),at=a.n(et),it=a(87441),st=a(27856),rt=a.n(st),ot={name:"Markdown",props:{text:{type:String,default:""}},computed:{renderMarkdown:function(){var t=new it.TU.Renderer;return t.link=function(t,n,e){var a;try{a=decodeURIComponent(unescape(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0!==a.indexOf("http:")&&0!==a.indexOf("https:"))return"";var i='<a href="'+t+'" rel="noreferrer noopener"';return n&&(i+=' title="'+n+'"'),i+">"+e+"</a>"},t.image=function(t,n,e){return e||n},t.blockquote=function(t){return t},rt().sanitize((0,it.TU)(this.text.trim(),{renderer:t,gfm:!1,highlight:!1,tables:!1,breaks:!1,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!1}),{SAFE_FOR_JQUERY:!0,ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})}}},pt=a(6578),lt={};lt.styleTagTransform=H(),lt.setAttributes=F(),lt.insert=z().bind(null,"head"),lt.domAPI=V(),lt.insertStyleElement=q(),U()(pt.Z,lt),pt.Z&&pt.Z.locals&&pt.Z.locals;var ct=(0,D.Z)(ot,(function(){var t=this,n=t.$createElement;return(t._self._c||n)("div",{staticClass:"settings-markdown",domProps:{innerHTML:t._s(t.renderMarkdown)}})}),[],!1,null,"652eb552",null).exports,dt={name:"AppDetails",components:{Multiselect:at(),Markdown:ct},mixins:[I,J],props:{app:{type:Object,required:!0}},data:function(){return{groupCheckedAppsData:!1}},computed:{appstoreUrl:function(){return"https://apps.nextcloud.com/apps/".concat(this.app.id)},licence:function(){return this.app.licence?t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()}):null},author:function(){return"string"==typeof this.app.author?[{"@value":this.app.author}]:this.app.author["@value"]?[this.app.author]:this.app.author},appGroups:function(){return this.app.groups.map((function(t){return{id:t,name:t}}))},groups:function(){return this.$store.getters.getGroups.filter((function(t){return"disabled"!==t.id})).sort((function(t,n){return t.name.localeCompare(n.name)}))}},mounted:function(){this.app.groups.length>0&&(this.groupCheckedAppsData=!0)}},ut=a(56934),ht={};ht.styleTagTransform=H(),ht.setAttributes=F(),ht.insert=z().bind(null,"head"),ht.domAPI=V(),ht.insertStyleElement=q(),U()(ut.Z,ht),ut.Z&&ut.Z.locals&&ut.Z.locals;var gt=(0,D.Z)(dt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"app-details"},[e("div",{staticClass:"app-details__actions"},[t.app.active&&t.canLimitToGroups(t.app)?e("div",{staticClass:"app-details__actions-groups"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.groupCheckedAppsData,expression:"groupCheckedAppsData"}],staticClass:"groups-enable__checkbox checkbox",attrs:{id:t.prefix("groups_enable",t.app.id),type:"checkbox"},domProps:{value:t.app.id,checked:Array.isArray(t.groupCheckedAppsData)?t._i(t.groupCheckedAppsData,t.app.id)>-1:t.groupCheckedAppsData},on:{change:[function(n){var e=t.groupCheckedAppsData,a=n.target,i=!!a.checked;if(Array.isArray(e)){var s=t.app.id,r=t._i(e,s);a.checked?r<0&&(t.groupCheckedAppsData=e.concat([s])):r>-1&&(t.groupCheckedAppsData=e.slice(0,r).concat(e.slice(r+1)))}else t.groupCheckedAppsData=i},t.setGroupLimit]}}),t._v(" "),e("label",{attrs:{for:t.prefix("groups_enable",t.app.id)}},[t._v(t._s(t.t("settings","Limit to groups")))]),t._v(" "),e("input",{staticClass:"group_select",attrs:{type:"hidden",title:t.t("settings","All"),value:""}}),t._v(" "),t.isLimitedToGroups(t.app)?e("Multiselect",{staticClass:"multiselect-vue",attrs:{options:t.groups,value:t.appGroups,"options-limit":5,placeholder:t.t("settings","Limit app usage to groups"),label:"name","track-by":"id",multiple:!0,"close-on-select":!1,"tag-width":60},on:{select:t.addGroupLimitation,remove:t.removeGroupLimitation,"search-change":t.asyncFindGroup}},[e("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])]):t._e()],1):t._e(),t._v(" "),e("div",{staticClass:"app-details__actions-manage"},[t.app.update?e("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {version}",{version:t.app.update}),disabled:t.installing||t.isLoading},on:{click:function(n){return t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?e("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.isLoading},on:{click:function(n){return t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?e("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.isLoading},on:{click:function(n){return t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active||t.app.canInstall?t._e():e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.isLoading},on:{click:function(n){return t.forceEnable(t.app.id)}}}):e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable primary",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.isLoading},on:{click:function(n){return t.enable(t.app.id)}}})])]),t._v(" "),e("ul",{staticClass:"app-details__dependencies"},[t.app.missingMinOwnCloudVersion?e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app has no minimum Nextcloud version assigned. This will be an error in the future."))+"\n\t\t")]):t._e(),t._v(" "),t.app.missingMaxOwnCloudVersion?e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app has no maximum Nextcloud version assigned. This will be an error in the future."))+"\n\t\t")]):t._e(),t._v(" "),t.app.canInstall?t._e():e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app cannot be installed because the following dependencies are not fulfilled:"))+"\n\t\t\t"),e("ul",{staticClass:"missing-dependencies"},t._l(t.app.missingDependencies,(function(n,a){return e("li",{key:a},[t._v("\n\t\t\t\t\t"+t._s(n)+"\n\t\t\t\t")])})),0)])]),t._v(" "),e("p",{staticClass:"app-details__documentation"},[t.app.internal?t._e():e("a",{staticClass:"appslink",attrs:{href:t.appstoreUrl,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","View in store"))+" ↗")]),t._v(" "),t.app.website?e("a",{staticClass:"appslink",attrs:{href:t.app.website,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Visit website"))+" ↗")]):t._e(),t._v(" "),t.app.bugs?e("a",{staticClass:"appslink",attrs:{href:t.app.bugs,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Report a bug"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.user?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.user,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","User documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.admin?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.admin,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Admin documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.developer?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.developer,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Developer documentation"))+" ↗")]):t._e()]),t._v(" "),e("Markdown",{staticClass:"app-details__description",attrs:{text:t.app.description}})],1)}),[],!1,null,"8ea5f476",null).exports;s.default.use(o());var vt={name:"Apps",components:{AppContent:l(),AppDetails:gt,AppList:nt,AppNavigation:d(),AppNavigationCounter:h(),AppNavigationItem:v(),AppNavigationSpacer:f(),AppScore:T,AppSidebar:b(),AppSidebarTab:_(),Content:w(),Markdown:ct},mixins:[I],props:{category:{type:String,default:"installed"},id:{type:String,default:""}},data:function(){return{searchQuery:"",screenshotLoaded:!1}},computed:{loading:function(){return this.$store.getters.loading("categories")},loadingList:function(){return this.$store.getters.loading("list")},app:function(){var t=this;return this.apps.find((function(n){return n.id===t.id}))},categories:function(){return this.$store.getters.getCategories},apps:function(){return this.$store.getters.getAllApps},updateCount:function(){return this.$store.getters.getUpdateCount},settings:function(){return this.$store.getters.getServerData},hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5},appSidebar:function(){var n=function(t){return t["@value"]?t["@value"]:t},e=Array.isArray(this.app.author)?this.app.author.map(n).join(", "):n(this.app.author),a=t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()});return{subtitle:t("settings","by {author}\n{license}",{author:e,license:a}),background:this.app.screenshot&&this.screenshotLoaded?this.app.screenshot:this.app.preview,compact:!(this.app.screenshot&&this.screenshotLoaded),title:this.app.name}},changelog:function(){return function(t){return t.translations.en.changelog}}},watch:{category:function(){this.searchQuery=""},app:function(){var t,n,e=this;if(this.screenshotLoaded=!1,null!==(t=this.app)&&void 0!==t&&t.releases&&null!==(n=this.app)&&void 0!==n&&n.screenshot){var a=new Image;a.onload=function(t){e.screenshotLoaded=!0},a.src=this.app.screenshot}}},beforeMount:function(){this.$store.dispatch("getCategories"),this.$store.dispatch("getAllApps"),this.$store.dispatch("getGroups",{offset:0,limit:5}),this.$store.commit("setUpdateCount",this.$store.getters.getServerData.updateCount)},mounted:function(){(0,i.subscribe)("nextcloud:unified-search.search",this.setSearch),(0,i.subscribe)("nextcloud:unified-search.reset",this.resetSearch)},beforeDestroy:function(){(0,i.unsubscribe)("nextcloud:unified-search.search",this.setSearch),(0,i.unsubscribe)("nextcloud:unified-search.reset",this.resetSearch)},methods:{setSearch:function(t){var n=t.query;this.searchQuery=n},resetSearch:function(){this.searchQuery=""},hideAppDetails:function(){this.$router.push({name:"apps-category",params:{category:this.category}})},openDeveloperDocumentation:function(){window.open(this.settings.developerDocumentation)}}},At=a(57163),ft={};ft.styleTagTransform=H(),ft.setAttributes=F(),ft.insert=z().bind(null,"head"),ft.domAPI=V(),ft.insertStyleElement=q(),U()(At.Z,ft),At.Z&&At.Z.locals&&At.Z.locals;var mt=(0,D.Z)(vt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("Content",{class:{"with-app-sidebar":t.app},attrs:{"app-name":"settings","content-class":{"icon-loading":t.loadingList},"navigation-class":{"icon-loading":t.loading}}},[e("AppNavigation",{scopedSlots:t._u([{key:"list",fn:function(){return[e("AppNavigationItem",{attrs:{id:"app-category-your-apps",to:{name:"apps"},exact:!0,icon:"icon-category-installed",title:t.t("settings","Your apps")}}),t._v(" "),e("AppNavigationItem",{attrs:{id:"app-category-enabled",to:{name:"apps-category",params:{category:"enabled"}},icon:"icon-category-enabled",title:t.t("settings","Active apps")}}),t._v(" "),e("AppNavigationItem",{attrs:{id:"app-category-disabled",to:{name:"apps-category",params:{category:"disabled"}},icon:"icon-category-disabled",title:t.t("settings","Disabled apps")}}),t._v(" "),t.updateCount>0?e("AppNavigationItem",{attrs:{id:"app-category-updates",to:{name:"apps-category",params:{category:"updates"}},icon:"icon-download",title:t.t("settings","Updates")}},[e("AppNavigationCounter",{attrs:{slot:"counter"},slot:"counter"},[t._v("\n\t\t\t\t\t"+t._s(t.updateCount)+"\n\t\t\t\t")])],1):t._e(),t._v(" "),e("AppNavigationItem",{attrs:{id:"app-category-your-bundles",to:{name:"apps-category",params:{category:"app-bundles"}},icon:"icon-category-app-bundles",title:t.t("settings","App bundles")}}),t._v(" "),e("AppNavigationSpacer"),t._v(" "),t.settings.appstoreEnabled?[e("AppNavigationItem",{attrs:{id:"app-category-featured",to:{name:"apps-category",params:{category:"featured"}},icon:"icon-favorite",title:t.t("settings","Featured apps")}}),t._v(" "),t._l(t.categories,(function(t){return e("AppNavigationItem",{key:"icon-category-"+t.ident,attrs:{icon:"icon-category-"+t.ident,to:{name:"apps-category",params:{category:t.ident}},title:t.displayName}})}))]:t._e(),t._v(" "),e("AppNavigationItem",{attrs:{id:"app-developer-docs",title:t.t("settings","Developer documentation")+" ↗"},on:{click:t.openDeveloperDocumentation}})]},proxy:!0}])}),t._v(" "),e("AppContent",{staticClass:"app-settings-content",class:{"icon-loading":t.loadingList}},[e("AppList",{attrs:{category:t.category,app:t.app,search:t.searchQuery}})],1),t._v(" "),t.id&&t.app?e("AppSidebar",t._b({class:{"app-sidebar--without-background":!t.appSidebar.background},on:{close:t.hideAppDetails},scopedSlots:t._u([t.appSidebar.background?null:{key:"header",fn:function(){return[e("div",{staticClass:"app-sidebar-header__figure--default-app-icon icon-settings-dark"})]},proxy:!0},{key:"description",fn:function(){return[300===t.app.level||200===t.app.level||t.hasRating?e("div",{staticClass:"app-level"},[300===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Featured")))]):t._e(),t._v(" "),t.hasRating?e("AppScore",{attrs:{score:t.app.appstoreData.ratingOverall}}):t._e()],1):t._e(),t._v(" "),e("div",{staticClass:"app-version"},[e("p",[t._v(t._s(t.app.version))])])]},proxy:!0}],null,!0)},"AppSidebar",t.appSidebar,!1),[t._v(" "),t._v(" "),e("AppSidebarTab",{attrs:{id:"desc",icon:"icon-category-office",name:t.t("settings","Details"),order:0}},[e("AppDetails",{attrs:{app:t.app}})],1),t._v(" "),t.app.appstoreData&&t.app.releases[0].translations.en.changelog?e("AppSidebarTab",{attrs:{id:"desca",icon:"icon-category-organization",name:t.t("settings","Changelog"),order:1}},t._l(t.app.releases,(function(n){return e("div",{key:n.version,staticClass:"app-sidebar-tabs__release"},[e("h2",[t._v(t._s(n.version))]),t._v(" "),t.changelog(n)?e("Markdown",{attrs:{text:t.changelog(n)}}):t._e()],1)})),0):t._e()],1):t._e()],1)}),[],!1,null,"d3244798",null).exports}}]);
+//# sourceMappingURL=settings-apps-view-418.js.map?v=d3690d441bdf314cb5f8 \ No newline at end of file
diff --git a/dist/settings-apps-view-418.js.map b/dist/settings-apps-view-418.js.map
index 98b6f929db7..5aea46179a6 100644
--- a/dist/settings-apps-view-418.js.map
+++ b/dist/settings-apps-view-418.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-apps-view-418.js?v=5fd8ba7c52d9c93a2e93","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=style&index=0&id=8ea5f476&scoped=true&lang=scss&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=652eb552&scoped=true&lang=scss&","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=style&index=0&id=d3244798&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=06bcd5b6&scoped=true&lang=css&","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=template&id=d3244798&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=template&id=3b3081d1&","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?5bcd","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?8c5c","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=template&id=06bcd5b6&scoped=true&","webpack://nextcloud/./apps/settings/src/components/PrefixMixin.vue?c564","webpack:///nextcloud/apps/settings/src/components/PrefixMixin.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack://nextcloud/./apps/settings/src/components/AppList.vue?8acf","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=template&id=49c47838&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?1464","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?26cf","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=template&id=652eb552&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?60ff","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?2807","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=template&id=8ea5f476&scoped=true&","webpack:///nextcloud/apps/settings/src/views/Apps.vue","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/views/Apps.vue?1019","webpack://nextcloud/./apps/settings/src/views/Apps.vue?7b97"],"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, \".app-details[data-v-8ea5f476]{padding:20px}.app-details__actions-manage[data-v-8ea5f476]{display:flex}.app-details__actions-manage input[data-v-8ea5f476]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-8ea5f476]{opacity:.7}.app-details__documentation[data-v-8ea5f476]{padding-top:20px}.app-details__description[data-v-8ea5f476]{padding-top:20px}.force[data-v-8ea5f476]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-8ea5f476]:hover,.force[data-v-8ea5f476]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppDetails.vue\"],\"names\":[],\"mappings\":\"AAuNA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CAED,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__dependencies {\\n\\t\\topacity: .7;\\n\\t}\\n\\t&__documentation {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n\\t&__description {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-error);\\n\\tborder-color: var(--color-error);\\n\\tbackground: var(--color-main-background);\\n}\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".settings-markdown[data-v-652eb552] h1,.settings-markdown[data-v-652eb552] h2,.settings-markdown[data-v-652eb552] h3,.settings-markdown[data-v-652eb552] h4,.settings-markdown[data-v-652eb552] h5,.settings-markdown[data-v-652eb552] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-652eb552] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-652eb552] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-652eb552] h3{font-size:24px}.settings-markdown[data-v-652eb552] h4{font-size:21px}.settings-markdown[data-v-652eb552] h5{font-size:17px}.settings-markdown[data-v-652eb552] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-652eb552] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-652eb552] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-652eb552] li{position:relative}.settings-markdown[data-v-652eb552] ul,.settings-markdown[data-v-652eb552] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-652eb552] ul li{list-style-type:disc}.settings-markdown[data-v-652eb552] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-652eb552] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-652eb552] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAgHA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.settings-markdown::v-deep {\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n\\tfont-weight: 600;\\n\\tline-height: 120%;\\n\\tmargin-top: 24px;\\n\\tmargin-bottom: 12px;\\n\\tcolor: var(--color-main-text);\\n}\\n\\nh1 {\\n\\tfont-size: 36px;\\n\\tmargin-top: 48px;\\n}\\n\\nh2 {\\n\\tfont-size: 28px;\\n\\tmargin-top: 48px;\\n}\\n\\nh3 {\\n\\tfont-size: 24px;\\n}\\n\\nh4 {\\n\\tfont-size: 21px;\\n}\\n\\nh5 {\\n\\tfont-size: 17px;\\n}\\n\\nh6 {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\npre {\\n\\twhite-space: pre;\\n\\toverflow-x: auto;\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 1em 1.3em;\\n\\tmargin-bottom: 1em;\\n}\\n\\np code {\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: .1em .3em;\\n}\\n\\nli {\\n\\tposition: relative;\\n}\\n\\nul, ol {\\n\\tpadding-left: 10px;\\n\\tmargin-left: 10px;\\n}\\n\\nul li {\\n\\tlist-style-type: disc;\\n}\\n\\nul > li > ul > li {\\n\\tlist-style-type: circle;\\n}\\n\\nul > li > ul > li ul li {\\n\\tlist-style-type: square;\\n}\\n\\nblockquote {\\n\\tpadding-left: 1em;\\n\\tborder-left: 4px solid var(--color-primary-element);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-sidebar[data-v-d3244798]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-d3244798]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:invert(1)}.app-sidebar[data-v-d3244798] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-d3244798].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-d3244798].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-d3244798] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-d3244798] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-d3244798] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-d3244798] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-d3244798]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-d3244798] h3{font-size:20px}.app-sidebar-tabs__release[data-v-d3244798] h4{font-size:17px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/Apps.vue\"],\"names\":[],\"mappings\":\"AA2TE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,gBAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,gDACC,cAAA,CAED,gDACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-sidebar::v-deep {\\n\\t&:not(.app-sidebar--without-background) {\\n\\t\\t// with full screenshot, let's fill the figure\\n\\t\\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t// revert sidebar app icon so it is black\\n\\t\\t.app-sidebar-header--compact .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: 32px;\\n\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__description {\\n\\t\\t.app-version {\\n\\t\\t\\tpadding-left: 10px;\\n\\t\\t}\\n\\t}\\n\\n\\t// default icon slot styling\\n\\t&.app-sidebar--without-background {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t&--default-app-icon {\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: migrate to components\\n\\t.app-sidebar-header__desc {\\n\\t\\t// allow multi line subtitle for the license\\n\\t\\t.app-sidebar-header__subtitle {\\n\\t\\t\\toverflow: visible !important;\\n\\t\\t\\theight: auto;\\n\\t\\t\\twhite-space: normal !important;\\n\\t\\t\\tline-height: 16px;\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__action {\\n\\t\\t// align with tab content\\n\\t\\tmargin: 0 20px;\\n\\t\\tinput {\\n\\t\\t\\tmargin: 3px;\\n\\t\\t}\\n\\t}\\n}\\n\\n// Align the appNavigation toggle with the apps header toolbar\\n.app-navigation::v-deep button.app-navigation-toggle {\\n\\ttop: 8px;\\n\\tright: -8px;\\n}\\n\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t// Overwrite changelog heading styles\\n\\t::v-deep {\\n\\t\\th3 {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 17px;\\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, \"\\n.force[data-v-06bcd5b6] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-06bcd5b6]:hover,\\n.force[data-v-06bcd5b6]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\";AAmLA;CACA,wCAAA;CACA,gCAAA;CACA,yBAAA;AACA;AACA;;CAEA,8BAAA;CACA,2CAAA;CACA,mCAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div class=\\\"section\\\" :class=\\\"{ selected: isSelected }\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t<div class=\\\"app-image app-image-icon\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t\\t<div v-if=\\\"(listView && !app.preview) || (!listView && !screenshotLoaded)\\\" class=\\\"icon-settings-dark\\\" />\\n\\n\\t\\t\\t<svg v-else-if=\\\"listView && app.preview\\\"\\n\\t\\t\\t\\twidth=\\\"32\\\"\\n\\t\\t\\t\\theight=\\\"32\\\"\\n\\t\\t\\t\\tviewBox=\\\"0 0 32 32\\\">\\n\\t\\t\\t\\t<defs><filter :id=\\\"filterId\\\"><feColorMatrix in=\\\"SourceGraphic\\\" type=\\\"matrix\\\" values=\\\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\\\" /></filter></defs>\\n\\t\\t\\t\\t<image x=\\\"0\\\"\\n\\t\\t\\t\\t\\ty=\\\"0\\\"\\n\\t\\t\\t\\t\\twidth=\\\"32\\\"\\n\\t\\t\\t\\t\\theight=\\\"32\\\"\\n\\t\\t\\t\\t\\tpreserveAspectRatio=\\\"xMinYMin meet\\\"\\n\\t\\t\\t\\t\\t:filter=\\\"filterUrl\\\"\\n\\t\\t\\t\\t\\t:xlink:href=\\\"app.preview\\\"\\n\\t\\t\\t\\t\\tclass=\\\"app-icon\\\" />\\n\\t\\t\\t</svg>\\n\\n\\t\\t\\t<img v-if=\\\"!listView && app.screenshot && screenshotLoaded\\\" :src=\\\"app.screenshot\\\" width=\\\"100%\\\">\\n\\t\\t</div>\\n\\t\\t<div class=\\\"app-name\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t\\t{{ app.name }}\\n\\t\\t</div>\\n\\t\\t<div v-if=\\\"!listView\\\" class=\\\"app-summary\\\">\\n\\t\\t\\t{{ app.summary }}\\n\\t\\t</div>\\n\\t\\t<div v-if=\\\"listView\\\" class=\\\"app-version\\\">\\n\\t\\t\\t<span v-if=\\\"app.version\\\">{{ app.version }}</span>\\n\\t\\t\\t<span v-else-if=\\\"app.appstoreData.releases[0].version\\\">{{ app.appstoreData.releases[0].version }}</span>\\n\\t\\t</div>\\n\\n\\t\\t<div class=\\\"app-level\\\">\\n\\t\\t\\t<span v-if=\\\"app.level === 300\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"t('settings', 'This app is supported via your current Nextcloud subscription.')\\\"\\n\\t\\t\\t\\tclass=\\\"supported icon-checkmark-color\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Supported') }}</span>\\n\\t\\t\\t<span v-if=\\\"app.level === 200\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\\\"\\n\\t\\t\\t\\tclass=\\\"official icon-checkmark\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Featured') }}</span>\\n\\t\\t\\t<AppScore v-if=\\\"hasRating && !listView\\\" :score=\\\"app.score\\\" />\\n\\t\\t</div>\\n\\n\\t\\t<div class=\\\"actions\\\">\\n\\t\\t\\t<div v-if=\\\"app.error\\\" class=\\\"warning\\\">\\n\\t\\t\\t\\t{{ app.error }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-if=\\\"isLoading\\\" class=\\\"icon icon-loading-small\\\" />\\n\\t\\t\\t<input v-if=\\\"app.update\\\"\\n\\t\\t\\t\\tclass=\\\"update primary\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"t('settings', 'Update to {update}', {update:app.update})\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"update(app.id)\\\">\\n\\t\\t\\t<input v-if=\\\"app.canUnInstall\\\"\\n\\t\\t\\t\\tclass=\\\"uninstall\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"t('settings', 'Remove')\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"remove(app.id)\\\">\\n\\t\\t\\t<input v-if=\\\"app.active\\\"\\n\\t\\t\\t\\tclass=\\\"enable\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"t('settings','Disable')\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"disable(app.id)\\\">\\n\\t\\t\\t<input v-if=\\\"!app.active && (app.canInstall || app.isCompatible)\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"enableButtonTooltip\\\"\\n\\t\\t\\t\\tclass=\\\"enable\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"enableButtonText\\\"\\n\\t\\t\\t\\t:disabled=\\\"!app.canInstall || installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"enable(app.id)\\\">\\n\\t\\t\\t<input v-else-if=\\\"!app.active\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"forceEnableButtonTooltip\\\"\\n\\t\\t\\t\\tclass=\\\"enable force\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"forceEnableButtonText\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"forceEnable(app.id)\\\">\\n\\t\\t</div>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport AppScore from './AppScore'\\nimport AppManagement from '../../mixins/AppManagement'\\nimport SvgFilterMixin from '../SvgFilterMixin'\\n\\nexport default {\\n\\tname: 'AppItem',\\n\\tcomponents: {\\n\\t\\tAppScore,\\n\\t},\\n\\tmixins: [AppManagement, SvgFilterMixin],\\n\\tprops: {\\n\\t\\tapp: {},\\n\\t\\tcategory: {},\\n\\t\\tlistView: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tisSelected: false,\\n\\t\\t\\tscrolled: false,\\n\\t\\t\\tscreenshotLoaded: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\thasRating() {\\n\\t\\t\\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\\n\\t\\t},\\n\\t},\\n\\twatch: {\\n\\t\\t'$route.params.id'(id) {\\n\\t\\t\\tthis.isSelected = (this.app.id === id)\\n\\t\\t},\\n\\t},\\n\\tmounted() {\\n\\t\\tthis.isSelected = (this.app.id === this.$route.params.id)\\n\\t\\tif (this.app.releases && this.app.screenshot) {\\n\\t\\t\\tconst image = new Image()\\n\\t\\t\\timage.onload = (e) => {\\n\\t\\t\\t\\tthis.screenshotLoaded = true\\n\\t\\t\\t}\\n\\t\\t\\timage.src = this.app.screenshot\\n\\t\\t}\\n\\t},\\n\\twatchers: {\\n\\n\\t},\\n\\tmethods: {\\n\\t\\tasync showAppDetails(event) {\\n\\t\\t\\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tawait this.$router.push({\\n\\t\\t\\t\\t\\tname: 'apps-details',\\n\\t\\t\\t\\t\\tparams: { category: this.category, id: this.app.id },\\n\\t\\t\\t\\t})\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t// we already view this app\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tprefix(prefix, content) {\\n\\t\\t\\treturn prefix + '_' + content\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.force {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-color: var(--color-error);\\n\\t\\tcolor: var(--color-error);\\n\\t}\\n\\t.force:hover,\\n\\t.force:active {\\n\\t\\tbackground: var(--color-error);\\n\\t\\tborder-color: var(--color-error) !important;\\n\\t\\tcolor: var(--color-main-background);\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Content',{class:{ 'with-app-sidebar': _vm.app},attrs:{\"app-name\":\"settings\",\"content-class\":{ 'icon-loading': _vm.loadingList },\"navigation-class\":{ 'icon-loading': _vm.loading }}},[_c('AppNavigation',{scopedSlots:_vm._u([{key:\"list\",fn:function(){return [_c('AppNavigationItem',{attrs:{\"id\":\"app-category-your-apps\",\"to\":{ name: 'apps' },\"exact\":true,\"icon\":\"icon-category-installed\",\"title\":_vm.t('settings', 'Your apps')}}),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"icon\":\"icon-category-enabled\",\"title\":_vm.t('settings', 'Active apps')}}),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"icon\":\"icon-category-disabled\",\"title\":_vm.t('settings', 'Disabled apps')}}),_vm._v(\" \"),(_vm.updateCount > 0)?_c('AppNavigationItem',{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"icon\":\"icon-download\",\"title\":_vm.t('settings', 'Updates')}},[_c('AppNavigationCounter',{attrs:{\"slot\":\"counter\"},slot:\"counter\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.updateCount)+\"\\n\\t\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"icon\":\"icon-category-app-bundles\",\"title\":_vm.t('settings', 'App bundles')}}),_vm._v(\" \"),_c('AppNavigationSpacer'),_vm._v(\" \"),(_vm.settings.appstoreEnabled)?[_c('AppNavigationItem',{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"icon\":\"icon-favorite\",\"title\":_vm.t('settings', 'Featured apps')}}),_vm._v(\" \"),_vm._l((_vm.categories),function(cat){return _c('AppNavigationItem',{key:'icon-category-' + cat.ident,attrs:{\"icon\":'icon-category-' + cat.ident,\"to\":{\n\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t},\"title\":cat.displayName}})})]:_vm._e(),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-developer-docs\",\"title\":_vm.t('settings', 'Developer documentation') + ' ↗'},on:{\"click\":_vm.openDeveloperDocumentation}})]},proxy:true}])}),_vm._v(\" \"),_c('AppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.app,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.app)?_c('AppSidebar',_vm._b({class:{'app-sidebar--without-background': !_vm.appSidebar.background},on:{\"close\":_vm.hideAppDetails},scopedSlots:_vm._u([(!_vm.appSidebar.background)?{key:\"header\",fn:function(){return [_c('div',{staticClass:\"app-sidebar-header__figure--default-app-icon icon-settings-dark\"})]},proxy:true}:null,{key:\"description\",fn:function(){return [(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('AppScore',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"},[_c('p',[_vm._v(_vm._s(_vm.app.version))])])]},proxy:true}],null,true)},'AppSidebar',_vm.appSidebar,false),[_vm._v(\" \"),_vm._v(\" \"),_c('AppSidebarTab',{attrs:{\"id\":\"desc\",\"icon\":\"icon-category-office\",\"name\":_vm.t('settings', 'Details'),\"order\":0}},[_c('AppDetails',{attrs:{\"app\":_vm.app}})],1),_vm._v(\" \"),(_vm.app.appstoreData && _vm.app.releases[0].translations.en.changelog)?_c('AppSidebarTab',{attrs:{\"id\":\"desca\",\"icon\":\"icon-category-organization\",\"name\":_vm.t('settings', 'Changelog'),\"order\":1}},_vm._l((_vm.app.releases),function(release){return _c('div',{key:release.version,staticClass:\"app-sidebar-tabs__release\"},[_c('h2',[_vm._v(_vm._s(release.version))]),_vm._v(\" \"),(_vm.changelog(release))?_c('Markdown',{attrs:{\"text\":_vm.changelog(release)}}):_vm._e()],1)}),0):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.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!./AppScore.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" class=\"app-score-image\">\n</template>\n<script>\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'AppScore',\n\tprops: ['score'],\n\tcomputed: {\n\t\tscoreImage() {\n\t\t\tconst score = Math.round(this.score * 10)\n\t\t\tconst imageName = 'rating/s' + score + '.svg'\n\t\t\treturn imagePath('core', imageName)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=3b3081d1&\"\nimport script from \"./AppScore.vue?vue&type=script&lang=js&\"\nexport * from \"./AppScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst addedApps = {}\n\t\t\tconst navEntries = data.ocs.data\n\t\t\tconst container = document.querySelector('#navigation #apps ul')\n\n\t\t\t// remove disabled apps\n\t\t\tnavEntries.forEach((entry) => {\n\t\t\t\tif (!container.querySelector('li[data-id=\"' + entry.id + '\"]')) {\n\t\t\t\t\taddedApps[entry.id] = true\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tcontainer.querySelectorAll('li[data-id]').forEach((el, index) => {\n\t\t\t\tconst id = el.dataset.id\n\t\t\t\t// remove all apps that are not in the correct order\n\t\t\t\tif (!navEntries[index] || (navEntries[index] && navEntries[index].id !== id)) {\n\t\t\t\t\tel.remove()\n\t\t\t\t\tdocument.querySelector(`#appmenu li[data-id=${id}]`).remove()\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tlet previousEntry = {}\n\t\t\t// add enabled apps to #navigation and #appmenu\n\t\t\tnavEntries.forEach((entry) => {\n\t\t\t\tif (container.querySelector(`li[data-id=\"${entry.id}\"]`) === null) {\n\t\t\t\t\tconst li = document.createElement('li')\n\t\t\t\t\tli.dataset.id = entry.id\n\t\t\t\t\tconst img = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t <defs>\n\t\t\t\t\t <filter id=\"invertMenuMore-${entry.id}\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"></feColorMatrix></filter>\n\t\t\t\t\t <mask id=\"hole\">\n\t\t\t\t\t <rect width=\"100%\" height=\"100%\" fill=\"white\"></rect>\n\t\t\t\t\t\t<circle r=\"4.5\" cx=\"17\" cy=\"3\" fill=\"black\"></circle>\n\t\t\t\t\t </mask>\n\t\t\t\t\t </defs>\n\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"16\" height=\"16\" filter=\"url(#invertMenuMore-${entry.id})\" preserveAspectRatio=\"xMinYMin meet\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t</svg>`\n\n\t\t\t\t\tconst imgElement = document.createElement('template')\n\t\t\t\t\timgElement.innerHTML = img\n\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\ta.setAttribute('href', entry.href)\n\n\t\t\t\t\tconst filename = document.createElement('span')\n\t\t\t\t\tfilename.appendChild(document.createTextNode(entry.name))\n\n\t\t\t\t\tconst loading = document.createElement('div')\n\t\t\t\t\tloading.setAttribute('class', 'unread-counter')\n\t\t\t\t\tloading.style.display = 'none'\n\n\t\t\t\t\t// draw attention to the newly added app entry\n\t\t\t\t\t// by flashing twice the more apps menu\n\t\t\t\t\tif (addedApps[entry.id]) {\n\t\t\t\t\t\ta.classList.add('animated')\n\t\t\t\t\t}\n\n\t\t\t\t\ta.prepend(imgElement.content.firstChild, loading, filename)\n\t\t\t\t\tli.append(a)\n\n\t\t\t\t\t// add app icon to the navigation\n\t\t\t\t\tconst previousElement = document.querySelector(`#navigation li[data-id=${previousEntry.id}]`)\n\t\t\t\t\tif (previousElement) {\n\t\t\t\t\t\tpreviousElement.insertAdjacentElement('afterend', li)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.querySelector('#navigation #apps ul').prepend(li)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (document.getElementById('appmenu').querySelector(`li[data-id=\"${entry.id}\"]`) === null) {\n\t\t\t\t\tconst li = document.createElement('li')\n\t\t\t\t\tli.dataset.id = entry.id\n\t\t\t\t\t// Generating svg embedded image (see layout.user.php)\n\t\t\t\t\tlet img\n\t\t\t\t\tif (OCA.Theming && OCA.Theming.inverted) {\n\t\t\t\t\t\timg = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t\t <defs>\n\t\t\t\t\t\t <filter id=\"invert\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter>\n\t\t\t\t\t\t </defs>\n\t\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"20\" height=\"20\" preserveAspectRatio=\"xMinYMin meet\" filter=\"url(#invert)\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t\t</svg>`\n\t\t\t\t\t} else {\n\t\t\t\t\t\timg = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"20\" height=\"20\" preserveAspectRatio=\"xMinYMin meet\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t\t</svg>`\n\t\t\t\t\t}\n\t\t\t\t\tconst imgElement = document.createElement('template')\n\t\t\t\t\timgElement.innerHTML = img\n\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\ta.setAttribute('href', entry.href)\n\n\t\t\t\t\tconst filename = document.createElement('span')\n\t\t\t\t\tfilename.appendChild(document.createTextNode(entry.name))\n\n\t\t\t\t\tconst loading = document.createElement('div')\n\t\t\t\t\tloading.setAttribute('class', 'icon-loading-dark')\n\t\t\t\t\tloading.style.display = 'none'\n\n\t\t\t\t\t// draw attention to the newly added app entry\n\t\t\t\t\t// by flashing twice the more apps menu\n\t\t\t\t\tif (addedApps[entry.id]) {\n\t\t\t\t\t\ta.classList.add('animated')\n\t\t\t\t\t}\n\n\t\t\t\t\ta.prepend(loading, filename, imgElement.content.firstChild)\n\t\t\t\t\tli.append(a)\n\n\t\t\t\t\t// add app icon to the navigation\n\t\t\t\t\tconst previousElement = document.querySelector('#appmenu li[data-id=' + previousEntry.id + ']')\n\t\t\t\t\tif (previousElement) {\n\t\t\t\t\t\tpreviousElement.insertAdjacentElement('afterend', li)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.queryElementById('appmenu').prepend(li)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpreviousEntry = entry\n\t\t\t})\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tinstalling() {\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Enable untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(group) {\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tenable(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tdisable(appId) {\n\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tremove(appId) {\n\t\t\tthis.$store.dispatch('uninstallApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tinstall(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tupdate(appId) {\n\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.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!./SvgFilterMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'SvgFilterMixin',\n\tdata() {\n\t\treturn {\n\t\t\tfilterId: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilterUrl() {\n\t\t\treturn `url(#${this.filterId})`\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.filterId = 'invertIconApps' + Math.floor((Math.random() * 100)) + new Date().getSeconds() + new Date().getMilliseconds()\n\t},\n}\n</script>\n","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"section\" :class=\"{ selected: isSelected }\" @click=\"showAppDetails\">\n\t\t<div class=\"app-image app-image-icon\" @click=\"showAppDetails\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !screenshotLoaded)\" class=\"icon-settings-dark\" />\n\n\t\t\t<svg v-else-if=\"listView && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter></defs>\n\t\t\t\t<image x=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"32\"\n\t\t\t\t\theight=\"32\"\n\t\t\t\t\tpreserveAspectRatio=\"xMinYMin meet\"\n\t\t\t\t\t:filter=\"filterUrl\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot && screenshotLoaded\" :src=\"app.screenshot\" width=\"100%\">\n\t\t</div>\n\t\t<div class=\"app-name\" @click=\"showAppDetails\">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if=\"!listView\" class=\"app-summary\">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if=\"listView\" class=\"app-version\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating && !listView\" :score=\"app.score\" />\n\t\t</div>\n\n\t\t<div class=\"actions\">\n\t\t\t<div v-if=\"app.error\" class=\"warning\">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if=\"isLoading\" class=\"icon icon-loading-small\" />\n\t\t\t<input v-if=\"app.update\"\n\t\t\t\tclass=\"update primary\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings', 'Update to {update}', {update:app.update})\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"update(app.id)\">\n\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\tclass=\"uninstall\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"remove(app.id)\">\n\t\t\t<input v-if=\"app.active\"\n\t\t\t\tclass=\"enable\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\tclass=\"enable\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t@click.stop=\"enable(app.id)\">\n\t\t\t<input v-else-if=\"!app.active\"\n\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\tclass=\"enable force\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"forceEnable(app.id)\">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from './AppScore'\nimport AppManagement from '../../mixins/AppManagement'\nimport SvgFilterMixin from '../SvgFilterMixin'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppScore,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t'$route.params.id'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.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!./AppItem.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=06bcd5b6&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=06bcd5b6&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=06bcd5b6&scoped=true&\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=06bcd5b6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06bcd5b6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.screenshotLoaded))?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-version\"},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {update}', {update:_vm.app.update}),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'PrefixMixin',\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.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!./AppList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<div v-if=\"showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ n('settings', '%n app has an update available', '%n apps have an update available', counter) }}\n\t\t\t\t\t<Button v-if=\"showUpdateAll\"\n\t\t\t\t\t\tid=\"app-list-update-all\"\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t@click=\"updateAll\">\n\t\t\t\t\t\t{{ t('settings', 'Update all') }}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"!showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ t('settings', 'All apps are up-to-date.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\t\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\n\t\t\t<transition-group v-if=\"useBundleView\"\n\t\t\t\tname=\"app-list\"\n\t\t\t\ttag=\"div\"\n\t\t\t\tclass=\"apps-list-container\">\n\t\t\t\t<template v-for=\"bundle in bundles\">\n\t\t\t\t\t<div :key=\"bundle.id\" class=\"apps-header\">\n\t\t\t\t\t\t<div class=\"app-image\" />\n\t\t\t\t\t\t<h2>{{ bundle.name }} <input type=\"button\" :value=\"bundleToggleText(bundle.id)\" @click=\"toggleBundle(bundle.id)\"></h2>\n\t\t\t\t\t\t<div class=\"app-version\" />\n\t\t\t\t\t\t<div class=\"app-level\" />\n\t\t\t\t\t\t<div class=\"app-groups\" />\n\t\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in bundleApps(bundle.id)\"\n\t\t\t\t\t\t:key=\"bundle.id + app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</transition-group>\n\t\t\t<template v-if=\"useAppStoreView\">\n\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t:list-view=\"false\" />\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in searchApps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t\t:list-view=\"true\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"search !== '' && !loading && searchApps.length === 0 && apps.length === 0\" id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\" />\n\t\t\t<h2>{{ t('settings', 'No apps found for your version') }}</h2>\n\t\t</div>\n\n\t\t<div id=\"searchresults\" />\n\t</div>\n</template>\n\n<script>\nimport AppItem from './AppList/AppItem'\nimport PrefixMixin from './PrefixMixin'\nimport pLimit from 'p-limit'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t\tButton,\n\t},\n\tmixins: [PrefixMixin],\n\tprops: ['category', 'app', 'search'],\n\tcomputed: {\n\t\tcounter() {\n\t\t\treturn this.apps.filter(app => app.update).length\n\t\t},\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\thasPendingUpdate() {\n\t\t\treturn this.apps.filter(app => app.update).length > 1\n\t\t},\n\t\tshowUpdateAll() {\n\t\t\treturn this.hasPendingUpdate && ['installed', 'updates'].includes(this.category)\n\t\t},\n\t\tapps() {\n\t\t\tconst apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function(a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB)\n\t\t\t\t})\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles)\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update)\n\t\t\t}\n\t\t\tif (this.category === 'featured') {\n\t\t\t\treturn apps.filter(app => app.level === 200)\n\t\t\t}\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined\n\t\t\t\t\t&& (app.category === this.category || app.category.indexOf(this.category) > -1)\n\t\t\t})\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getServerData.bundles.filter(bundle => this.bundleApps(bundle.id).length > 0)\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => {\n\t\t\t\t\t\treturn app.bundleIds !== undefined && app.bundleIds.includes(bundle)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id))\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates' || this.category === 'featured')\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles')\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\treturn self.bundleApps(id).filter(app => !app.active).length === 0\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\tif (self.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable all')\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id)\n\t\t\t}\n\t\t\treturn this.enableBundle(id)\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tupdateAll() {\n\t\t\tconst limit = pLimit(1)\n\t\t\tthis.apps\n\t\t\t\t.filter(app => app.update)\n\t\t\t\t.map(app => limit(() => this.$store.dispatch('updateApp', { appId: app.id }))\n\t\t\t\t)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=49c47838&\"\nimport script from \"./AppList.vue?vue&type=script&lang=js&\"\nexport * from \"./AppList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', '%n app has an update available', '%n apps have an update available', _vm.counter))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('Button',{attrs:{\"id\":\"app-list-update-all\",\"type\":\"primary\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update all'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'All apps are up-to-date.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_vm._l((_vm.bundles),function(bundle){return [_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])}\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!./Markdown.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!./Markdown.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"settings-markdown\" v-html=\"renderMarkdown\" />\n</template>\n\n<script>\nimport { marked } from 'marked'\nimport dompurify from 'dompurify'\n\nexport default {\n\tname: 'Markdown',\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed: {\n\t\trenderMarkdown() {\n\t\t\tconst renderer = new marked.Renderer()\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\tlet prot\n\t\t\t\ttry {\n\t\t\t\t\tprot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tlet out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"'\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"'\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>'\n\t\t\t\treturn out\n\t\t\t}\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text\n\t\t\t\t}\n\t\t\t\treturn title\n\t\t\t}\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote\n\t\t\t}\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.text.trim(), {\n\t\t\t\t\trenderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'h1',\n\t\t\t\t\t\t'h2',\n\t\t\t\t\t\t'h3',\n\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t'h5',\n\t\t\t\t\t\t'h6',\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote',\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.settings-markdown::v-deep {\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 120%;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t\tmargin-top: 48px;\n\t}\n\n\th2 {\n\t\tfont-size: 28px;\n\t\tmargin-top: 48px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: var(--default-font-size);\n\t}\n\n\tpre {\n\t\twhite-space: pre;\n\t\toverflow-x: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t}\n\n\tul li {\n\t\tlist-style-type: disc;\n\t}\n\n\tul > li > ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\tul > li > ul > li ul li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=652eb552&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=652eb552&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=652eb552&scoped=true&\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js&\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=652eb552&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 \"652eb552\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings-markdown\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})}\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!./AppDetails.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!./AppDetails.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"app-details\">\n\t\t<div class=\"app-details__actions\">\n\t\t\t<div v-if=\"app.active && canLimitToGroups(app)\" class=\"app-details__actions-groups\">\n\t\t\t\t<input :id=\"prefix('groups_enable', app.id)\"\n\t\t\t\t\tv-model=\"groupCheckedAppsData\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"app.id\"\n\t\t\t\t\tclass=\"groups-enable__checkbox checkbox\"\n\t\t\t\t\t@change=\"setGroupLimit\">\n\t\t\t\t<label :for=\"prefix('groups_enable', app.id)\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t<input type=\"hidden\"\n\t\t\t\t\tclass=\"group_select\"\n\t\t\t\t\t:title=\"t('settings', 'All')\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t\t<Multiselect v-if=\"isLimitedToGroups(app)\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:value=\"appGroups\"\n\t\t\t\t\t:options-limit=\"5\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Limit app usage to groups')\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:tag-width=\"60\"\n\t\t\t\t\t@select=\"addGroupLimitation\"\n\t\t\t\t\t@remove=\"removeGroupLimitation\"\n\t\t\t\t\t@search-change=\"asyncFindGroup\">\n\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t</Multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"app-details__actions-manage\">\n\t\t\t\t<input v-if=\"app.update\"\n\t\t\t\t\tclass=\"update primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Update to {version}', { version: app.update })\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"update(app.id)\">\n\t\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\t\tclass=\"uninstall\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"remove(app.id)\">\n\t\t\t\t<input v-if=\"app.active\"\n\t\t\t\t\tclass=\"enable\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"disable(app.id)\">\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\t\tclass=\"enable primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t\t@click=\"enable(app.id)\">\n\t\t\t\t<input v-else-if=\"!app.active && !app.canInstall\"\n\t\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\t\tclass=\"enable force\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"forceEnable(app.id)\">\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-details__dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"app-details__documentation\">\n\t\t\t<a v-if=\"!app.internal\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'View in store') }} ↗</a>\n\n\t\t\t<a v-if=\"app.website\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.website\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a v-if=\"app.bugs\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.bugs\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a v-if=\"app.documentation && app.documentation.user\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.user\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.admin\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.admin\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.developer\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.developer\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\t\t<Markdown class=\"app-details__description\" :text=\"app.description\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport AppManagement from '../mixins/AppManagement'\nimport PrefixMixin from './PrefixMixin'\nimport Markdown from './Markdown'\n\nexport default {\n\tname: 'AppDetails',\n\n\tcomponents: {\n\t\tMultiselect,\n\t\tMarkdown,\n\t},\n\tmixins: [AppManagement, PrefixMixin],\n\n\tprops: {\n\t\tapp: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author]\n\t\t\t}\n\t\t\treturn this.app.author\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=8ea5f476&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=8ea5f476&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDetails.vue?vue&type=template&id=8ea5f476&scoped=true&\"\nimport script from \"./AppDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppDetails.vue?vue&type=style&index=0&id=8ea5f476&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 \"8ea5f476\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-details\"},[_c('div',{staticClass:\"app-details__actions\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"app-details__actions-groups\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":_vm.prefix('groups_enable', _vm.app.id),\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__actions-manage\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', { version: _vm.app.update }),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active && !_vm.app.canInstall)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"app-details__documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('Markdown',{staticClass:\"app-details__description\",attrs:{\"text\":_vm.app.description}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Content app-name=\"settings\"\n\t\t:class=\"{ 'with-app-sidebar': app}\"\n\t\t:content-class=\"{ 'icon-loading': loadingList }\"\n\t\t:navigation-class=\"{ 'icon-loading': loading }\">\n\t\t<!-- Categories & filters -->\n\t\t<AppNavigation>\n\t\t\t<template #list>\n\t\t\t\t<AppNavigationItem id=\"app-category-your-apps\"\n\t\t\t\t\t:to=\"{ name: 'apps' }\"\n\t\t\t\t\t:exact=\"true\"\n\t\t\t\t\ticon=\"icon-category-installed\"\n\t\t\t\t\t:title=\"t('settings', 'Your apps')\" />\n\t\t\t\t<AppNavigationItem id=\"app-category-enabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'enabled' } }\"\n\t\t\t\t\ticon=\"icon-category-enabled\"\n\t\t\t\t\t:title=\"t('settings', 'Active apps')\" />\n\t\t\t\t<AppNavigationItem id=\"app-category-disabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'disabled' } }\"\n\t\t\t\t\ticon=\"icon-category-disabled\"\n\t\t\t\t\t:title=\"t('settings', 'Disabled apps')\" />\n\t\t\t\t<AppNavigationItem v-if=\"updateCount > 0\"\n\t\t\t\t\tid=\"app-category-updates\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'updates' } }\"\n\t\t\t\t\ticon=\"icon-download\"\n\t\t\t\t\t:title=\"t('settings', 'Updates')\">\n\t\t\t\t\t<AppNavigationCounter slot=\"counter\">\n\t\t\t\t\t\t{{ updateCount }}\n\t\t\t\t\t</AppNavigationCounter>\n\t\t\t\t</AppNavigationItem>\n\t\t\t\t<AppNavigationItem id=\"app-category-your-bundles\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'app-bundles' } }\"\n\t\t\t\t\ticon=\"icon-category-app-bundles\"\n\t\t\t\t\t:title=\"t('settings', 'App bundles')\" />\n\n\t\t\t\t<AppNavigationSpacer />\n\n\t\t\t\t<!-- App store categories -->\n\t\t\t\t<template v-if=\"settings.appstoreEnabled\">\n\t\t\t\t\t<AppNavigationItem id=\"app-category-featured\"\n\t\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'featured' } }\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t:title=\"t('settings', 'Featured apps')\" />\n\n\t\t\t\t\t<AppNavigationItem v-for=\"cat in categories\"\n\t\t\t\t\t\t:key=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:icon=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:title=\"cat.displayName\" />\n\t\t\t\t</template>\n\n\t\t\t\t<AppNavigationItem id=\"app-developer-docs\"\n\t\t\t\t\t:title=\"t('settings', 'Developer documentation') + ' ↗'\"\n\t\t\t\t\t@click=\"openDeveloperDocumentation\" />\n\t\t\t</template>\n\t\t</AppNavigation>\n\n\t\t<!-- Apps list -->\n\t\t<AppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"app\" :search=\"searchQuery\" />\n\t\t</AppContent>\n\n\t\t<!-- Selected app details -->\n\t\t<AppSidebar v-if=\"id && app\"\n\t\t\tv-bind=\"appSidebar\"\n\t\t\t:class=\"{'app-sidebar--without-background': !appSidebar.background}\"\n\t\t\t@close=\"hideAppDetails\">\n\t\t\t<template v-if=\"!appSidebar.background\" #header>\n\t\t\t\t<div class=\"app-sidebar-header__figure--default-app-icon icon-settings-dark\" />\n\t\t\t</template>\n\n\t\t\t<template #description>\n\t\t\t\t<!-- Featured/Supported badges -->\n\t\t\t\t<div v-if=\"app.level === 300 || app.level === 200 || hasRating\" class=\"app-level\">\n\t\t\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t\t\t<AppScore v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"app-version\">\n\t\t\t\t\t<p>{{ app.version }}</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<!-- Tab content -->\n\n\t\t\t<AppSidebarTab id=\"desc\"\n\t\t\t\ticon=\"icon-category-office\"\n\t\t\t\t:name=\"t('settings', 'Details')\"\n\t\t\t\t:order=\"0\">\n\t\t\t\t<AppDetails :app=\"app\" />\n\t\t\t</AppSidebarTab>\n\t\t\t<AppSidebarTab v-if=\"app.appstoreData && app.releases[0].translations.en.changelog\"\n\t\t\t\tid=\"desca\"\n\t\t\t\ticon=\"icon-category-organization\"\n\t\t\t\t:name=\"t('settings', 'Changelog')\"\n\t\t\t\t:order=\"1\">\n\t\t\t\t<div v-for=\"release in app.releases\" :key=\"release.version\" class=\"app-sidebar-tabs__release\">\n\t\t\t\t\t<h2>{{ release.version }}</h2>\n\t\t\t\t\t<Markdown v-if=\"changelog(release)\" :text=\"changelog(release)\" />\n\t\t\t\t</div>\n\t\t\t</AppSidebarTab>\n\t\t</AppSidebar>\n\t</Content>\n</template>\n\n<script>\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport Vue from 'vue'\nimport VueLocalStorage from 'vue-localstorage'\n\nimport AppContent from '@nextcloud/vue/dist/Components/AppContent'\nimport AppNavigation from '@nextcloud/vue/dist/Components/AppNavigation'\nimport AppNavigationCounter from '@nextcloud/vue/dist/Components/AppNavigationCounter'\nimport AppNavigationItem from '@nextcloud/vue/dist/Components/AppNavigationItem'\nimport AppNavigationSpacer from '@nextcloud/vue/dist/Components/AppNavigationSpacer'\nimport AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar'\nimport AppSidebarTab from '@nextcloud/vue/dist/Components/AppSidebarTab'\nimport Content from '@nextcloud/vue/dist/Components/Content'\n\nimport AppList from '../components/AppList'\nimport AppDetails from '../components/AppDetails'\nimport AppManagement from '../mixins/AppManagement'\nimport AppScore from '../components/AppList/AppScore'\nimport Markdown from '../components/Markdown'\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\n\tcomponents: {\n\t\tAppContent,\n\t\tAppDetails,\n\t\tAppList,\n\t\tAppNavigation,\n\t\tAppNavigationCounter,\n\t\tAppNavigationItem,\n\t\tAppNavigationSpacer,\n\t\tAppScore,\n\t\tAppSidebar,\n\t\tAppSidebarTab,\n\t\tContent,\n\t\tMarkdown,\n\t},\n\n\tmixins: [AppManagement],\n\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories')\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\tapp() {\n\t\t\treturn this.apps.find(app => app.id === this.id)\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\n\t\t// sidebar app binding\n\t\tappSidebar() {\n\t\t\tconst authorName = (xmlNode) => {\n\t\t\t\tif (xmlNode['@value']) {\n\t\t\t\t\t// Complex node (with email or homepage attribute)\n\t\t\t\t\treturn xmlNode['@value']\n\t\t\t\t}\n\n\t\t\t\t// Simple text node\n\t\t\t\treturn xmlNode\n\t\t\t}\n\n\t\t\tconst author = Array.isArray(this.app.author)\n\t\t\t\t? this.app.author.map(authorName).join(', ')\n\t\t\t\t: authorName(this.app.author)\n\t\t\tconst license = t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\n\t\t\tconst subtitle = t('settings', 'by {author}\\n{license}', { author, license })\n\n\t\t\treturn {\n\t\t\t\tsubtitle,\n\t\t\t\tbackground: this.app.screenshot && this.screenshotLoaded\n\t\t\t\t\t? this.app.screenshot\n\t\t\t\t\t: this.app.preview,\n\t\t\t\tcompact: !(this.app.screenshot && this.screenshotLoaded),\n\t\t\t\ttitle: this.app.name,\n\n\t\t\t}\n\t\t},\n\t\tchangelog() {\n\t\t\treturn (release) => release.translations.en.changelog\n\t\t},\n\t},\n\n\twatch: {\n\t\tcategory() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\tapp() {\n\t\t\tthis.screenshotLoaded = false\n\t\t\tif (this.app?.releases && this.app?.screenshot) {\n\t\t\t\tconst image = new Image()\n\t\t\t\timage.onload = (e) => {\n\t\t\t\t\tthis.screenshotLoaded = true\n\t\t\t\t}\n\t\t\t\timage.src = this.app.screenshot\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories')\n\t\tthis.$store.dispatch('getAllApps')\n\t\tthis.$store.dispatch('getGroups', { offset: 0, limit: 5 })\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\n\tmounted() {\n\t\tsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tsetSearch({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: { category: this.category },\n\t\t\t})\n\t\t},\n\t\topenDeveloperDocumentation() {\n\t\t\twindow.open(this.settings.developerDocumentation)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\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!./Apps.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!./Apps.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!./Apps.vue?vue&type=style&index=0&id=d3244798&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=style&index=0&id=d3244798&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=d3244798&scoped=true&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Apps.vue?vue&type=style&index=0&id=d3244798&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 \"d3244798\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","_vm","this","_h","$createElement","_self","_c","staticClass","attrs","scoreImage","axios","generateOcsUrl","then","data","ocs","meta","statuscode","addedApps","navEntries","container","document","querySelector","forEach","entry","querySelectorAll","el","index","dataset","remove","previousEntry","li","createElement","img","icon","imgElement","innerHTML","a","setAttribute","href","filename","appendChild","createTextNode","name","loading","style","display","classList","add","prepend","content","firstChild","append","previousElement","insertAdjacentElement","getElementById","OCA","Theming","inverted","queryElementById","window","dispatchEvent","Event","computed","appGroups","app","groups","map","group","installing","$store","getters","isLoading","enableButtonText","needsDownload","t","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","groupCheckedAppsData","mounted","length","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","concat","removeGroupLimitation","currentGroups","indexOf","splice","forceEnable","response","rebuildNavigation","catch","error","showError","enable","disable","install","update","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","class","selected","isSelected","on","showAppDetails","listView","preview","screenshotLoaded","filterId","_v","filterUrl","_e","screenshot","_s","summary","version","appstoreData","releases","level","directives","rawName","value","expression","modifiers","hasRating","score","$event","stopPropagation","active","canInstall","isCompatible","installed","useBundleView","useListView","store","useAppStoreView","n","counter","updateAll","showUpdateAll","_l","key","category","bundle","bundleToggleText","toggleBundle","bundleApps","searchApps","apps","domProps","renderMarkdown","prefix","Array","isArray","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","dep","internal","appstoreUrl","website","bugs","documentation","user","admin","developer","description","loadingList","scopedSlots","_u","fn","params","updateCount","settings","cat","ident","displayName","openDeveloperDocumentation","proxy","searchQuery","_b","appSidebar","background","hideAppDetails","ratingOverall","translations","en","changelog","release"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-apps-view-418.js?v=d3690d441bdf314cb5f8","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=style&index=0&id=8ea5f476&scoped=true&lang=scss&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=652eb552&scoped=true&lang=scss&","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=style&index=0&id=d3244798&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=06bcd5b6&scoped=true&lang=css&","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=template&id=d3244798&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=template&id=3b3081d1&","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?5bcd","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?8c5c","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=template&id=06bcd5b6&scoped=true&","webpack://nextcloud/./apps/settings/src/components/PrefixMixin.vue?c564","webpack:///nextcloud/apps/settings/src/components/PrefixMixin.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack://nextcloud/./apps/settings/src/components/AppList.vue?8acf","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=template&id=35e8fed4&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?1464","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?26cf","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=template&id=652eb552&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?60ff","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?2807","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=template&id=8ea5f476&scoped=true&","webpack:///nextcloud/apps/settings/src/views/Apps.vue","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/views/Apps.vue?1019","webpack://nextcloud/./apps/settings/src/views/Apps.vue?7b97"],"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, \".app-details[data-v-8ea5f476]{padding:20px}.app-details__actions-manage[data-v-8ea5f476]{display:flex}.app-details__actions-manage input[data-v-8ea5f476]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-8ea5f476]{opacity:.7}.app-details__documentation[data-v-8ea5f476]{padding-top:20px}.app-details__description[data-v-8ea5f476]{padding-top:20px}.force[data-v-8ea5f476]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-8ea5f476]:hover,.force[data-v-8ea5f476]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppDetails.vue\"],\"names\":[],\"mappings\":\"AAuNA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CAED,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__dependencies {\\n\\t\\topacity: .7;\\n\\t}\\n\\t&__documentation {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n\\t&__description {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-error);\\n\\tborder-color: var(--color-error);\\n\\tbackground: var(--color-main-background);\\n}\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".settings-markdown[data-v-652eb552] h1,.settings-markdown[data-v-652eb552] h2,.settings-markdown[data-v-652eb552] h3,.settings-markdown[data-v-652eb552] h4,.settings-markdown[data-v-652eb552] h5,.settings-markdown[data-v-652eb552] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-652eb552] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-652eb552] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-652eb552] h3{font-size:24px}.settings-markdown[data-v-652eb552] h4{font-size:21px}.settings-markdown[data-v-652eb552] h5{font-size:17px}.settings-markdown[data-v-652eb552] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-652eb552] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-652eb552] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-652eb552] li{position:relative}.settings-markdown[data-v-652eb552] ul,.settings-markdown[data-v-652eb552] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-652eb552] ul li{list-style-type:disc}.settings-markdown[data-v-652eb552] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-652eb552] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-652eb552] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAgHA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.settings-markdown::v-deep {\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n\\tfont-weight: 600;\\n\\tline-height: 120%;\\n\\tmargin-top: 24px;\\n\\tmargin-bottom: 12px;\\n\\tcolor: var(--color-main-text);\\n}\\n\\nh1 {\\n\\tfont-size: 36px;\\n\\tmargin-top: 48px;\\n}\\n\\nh2 {\\n\\tfont-size: 28px;\\n\\tmargin-top: 48px;\\n}\\n\\nh3 {\\n\\tfont-size: 24px;\\n}\\n\\nh4 {\\n\\tfont-size: 21px;\\n}\\n\\nh5 {\\n\\tfont-size: 17px;\\n}\\n\\nh6 {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\npre {\\n\\twhite-space: pre;\\n\\toverflow-x: auto;\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 1em 1.3em;\\n\\tmargin-bottom: 1em;\\n}\\n\\np code {\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: .1em .3em;\\n}\\n\\nli {\\n\\tposition: relative;\\n}\\n\\nul, ol {\\n\\tpadding-left: 10px;\\n\\tmargin-left: 10px;\\n}\\n\\nul li {\\n\\tlist-style-type: disc;\\n}\\n\\nul > li > ul > li {\\n\\tlist-style-type: circle;\\n}\\n\\nul > li > ul > li ul li {\\n\\tlist-style-type: square;\\n}\\n\\nblockquote {\\n\\tpadding-left: 1em;\\n\\tborder-left: 4px solid var(--color-primary-element);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-sidebar[data-v-d3244798]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-d3244798]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:invert(1)}.app-sidebar[data-v-d3244798] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-d3244798].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-d3244798].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-d3244798] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-d3244798] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-d3244798] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-d3244798] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-d3244798]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-d3244798] h3{font-size:20px}.app-sidebar-tabs__release[data-v-d3244798] h4{font-size:17px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/Apps.vue\"],\"names\":[],\"mappings\":\"AA2TE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,gBAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,gDACC,cAAA,CAED,gDACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-sidebar::v-deep {\\n\\t&:not(.app-sidebar--without-background) {\\n\\t\\t// with full screenshot, let's fill the figure\\n\\t\\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t// revert sidebar app icon so it is black\\n\\t\\t.app-sidebar-header--compact .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: 32px;\\n\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__description {\\n\\t\\t.app-version {\\n\\t\\t\\tpadding-left: 10px;\\n\\t\\t}\\n\\t}\\n\\n\\t// default icon slot styling\\n\\t&.app-sidebar--without-background {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t&--default-app-icon {\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: migrate to components\\n\\t.app-sidebar-header__desc {\\n\\t\\t// allow multi line subtitle for the license\\n\\t\\t.app-sidebar-header__subtitle {\\n\\t\\t\\toverflow: visible !important;\\n\\t\\t\\theight: auto;\\n\\t\\t\\twhite-space: normal !important;\\n\\t\\t\\tline-height: 16px;\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__action {\\n\\t\\t// align with tab content\\n\\t\\tmargin: 0 20px;\\n\\t\\tinput {\\n\\t\\t\\tmargin: 3px;\\n\\t\\t}\\n\\t}\\n}\\n\\n// Align the appNavigation toggle with the apps header toolbar\\n.app-navigation::v-deep button.app-navigation-toggle {\\n\\ttop: 8px;\\n\\tright: -8px;\\n}\\n\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t// Overwrite changelog heading styles\\n\\t::v-deep {\\n\\t\\th3 {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 17px;\\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, \"\\n.force[data-v-06bcd5b6] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-06bcd5b6]:hover,\\n.force[data-v-06bcd5b6]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\";AAmLA;CACA,wCAAA;CACA,gCAAA;CACA,yBAAA;AACA;AACA;;CAEA,8BAAA;CACA,2CAAA;CACA,mCAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div class=\\\"section\\\" :class=\\\"{ selected: isSelected }\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t<div class=\\\"app-image app-image-icon\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t\\t<div v-if=\\\"(listView && !app.preview) || (!listView && !screenshotLoaded)\\\" class=\\\"icon-settings-dark\\\" />\\n\\n\\t\\t\\t<svg v-else-if=\\\"listView && app.preview\\\"\\n\\t\\t\\t\\twidth=\\\"32\\\"\\n\\t\\t\\t\\theight=\\\"32\\\"\\n\\t\\t\\t\\tviewBox=\\\"0 0 32 32\\\">\\n\\t\\t\\t\\t<defs><filter :id=\\\"filterId\\\"><feColorMatrix in=\\\"SourceGraphic\\\" type=\\\"matrix\\\" values=\\\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\\\" /></filter></defs>\\n\\t\\t\\t\\t<image x=\\\"0\\\"\\n\\t\\t\\t\\t\\ty=\\\"0\\\"\\n\\t\\t\\t\\t\\twidth=\\\"32\\\"\\n\\t\\t\\t\\t\\theight=\\\"32\\\"\\n\\t\\t\\t\\t\\tpreserveAspectRatio=\\\"xMinYMin meet\\\"\\n\\t\\t\\t\\t\\t:filter=\\\"filterUrl\\\"\\n\\t\\t\\t\\t\\t:xlink:href=\\\"app.preview\\\"\\n\\t\\t\\t\\t\\tclass=\\\"app-icon\\\" />\\n\\t\\t\\t</svg>\\n\\n\\t\\t\\t<img v-if=\\\"!listView && app.screenshot && screenshotLoaded\\\" :src=\\\"app.screenshot\\\" width=\\\"100%\\\">\\n\\t\\t</div>\\n\\t\\t<div class=\\\"app-name\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t\\t{{ app.name }}\\n\\t\\t</div>\\n\\t\\t<div v-if=\\\"!listView\\\" class=\\\"app-summary\\\">\\n\\t\\t\\t{{ app.summary }}\\n\\t\\t</div>\\n\\t\\t<div v-if=\\\"listView\\\" class=\\\"app-version\\\">\\n\\t\\t\\t<span v-if=\\\"app.version\\\">{{ app.version }}</span>\\n\\t\\t\\t<span v-else-if=\\\"app.appstoreData.releases[0].version\\\">{{ app.appstoreData.releases[0].version }}</span>\\n\\t\\t</div>\\n\\n\\t\\t<div class=\\\"app-level\\\">\\n\\t\\t\\t<span v-if=\\\"app.level === 300\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"t('settings', 'This app is supported via your current Nextcloud subscription.')\\\"\\n\\t\\t\\t\\tclass=\\\"supported icon-checkmark-color\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Supported') }}</span>\\n\\t\\t\\t<span v-if=\\\"app.level === 200\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\\\"\\n\\t\\t\\t\\tclass=\\\"official icon-checkmark\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Featured') }}</span>\\n\\t\\t\\t<AppScore v-if=\\\"hasRating && !listView\\\" :score=\\\"app.score\\\" />\\n\\t\\t</div>\\n\\n\\t\\t<div class=\\\"actions\\\">\\n\\t\\t\\t<div v-if=\\\"app.error\\\" class=\\\"warning\\\">\\n\\t\\t\\t\\t{{ app.error }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-if=\\\"isLoading\\\" class=\\\"icon icon-loading-small\\\" />\\n\\t\\t\\t<input v-if=\\\"app.update\\\"\\n\\t\\t\\t\\tclass=\\\"update primary\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"t('settings', 'Update to {update}', {update:app.update})\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"update(app.id)\\\">\\n\\t\\t\\t<input v-if=\\\"app.canUnInstall\\\"\\n\\t\\t\\t\\tclass=\\\"uninstall\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"t('settings', 'Remove')\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"remove(app.id)\\\">\\n\\t\\t\\t<input v-if=\\\"app.active\\\"\\n\\t\\t\\t\\tclass=\\\"enable\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"t('settings','Disable')\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"disable(app.id)\\\">\\n\\t\\t\\t<input v-if=\\\"!app.active && (app.canInstall || app.isCompatible)\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"enableButtonTooltip\\\"\\n\\t\\t\\t\\tclass=\\\"enable\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"enableButtonText\\\"\\n\\t\\t\\t\\t:disabled=\\\"!app.canInstall || installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"enable(app.id)\\\">\\n\\t\\t\\t<input v-else-if=\\\"!app.active\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"forceEnableButtonTooltip\\\"\\n\\t\\t\\t\\tclass=\\\"enable force\\\"\\n\\t\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t\\t:value=\\\"forceEnableButtonText\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"forceEnable(app.id)\\\">\\n\\t\\t</div>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport AppScore from './AppScore'\\nimport AppManagement from '../../mixins/AppManagement'\\nimport SvgFilterMixin from '../SvgFilterMixin'\\n\\nexport default {\\n\\tname: 'AppItem',\\n\\tcomponents: {\\n\\t\\tAppScore,\\n\\t},\\n\\tmixins: [AppManagement, SvgFilterMixin],\\n\\tprops: {\\n\\t\\tapp: {},\\n\\t\\tcategory: {},\\n\\t\\tlistView: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tisSelected: false,\\n\\t\\t\\tscrolled: false,\\n\\t\\t\\tscreenshotLoaded: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\thasRating() {\\n\\t\\t\\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\\n\\t\\t},\\n\\t},\\n\\twatch: {\\n\\t\\t'$route.params.id'(id) {\\n\\t\\t\\tthis.isSelected = (this.app.id === id)\\n\\t\\t},\\n\\t},\\n\\tmounted() {\\n\\t\\tthis.isSelected = (this.app.id === this.$route.params.id)\\n\\t\\tif (this.app.releases && this.app.screenshot) {\\n\\t\\t\\tconst image = new Image()\\n\\t\\t\\timage.onload = (e) => {\\n\\t\\t\\t\\tthis.screenshotLoaded = true\\n\\t\\t\\t}\\n\\t\\t\\timage.src = this.app.screenshot\\n\\t\\t}\\n\\t},\\n\\twatchers: {\\n\\n\\t},\\n\\tmethods: {\\n\\t\\tasync showAppDetails(event) {\\n\\t\\t\\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tawait this.$router.push({\\n\\t\\t\\t\\t\\tname: 'apps-details',\\n\\t\\t\\t\\t\\tparams: { category: this.category, id: this.app.id },\\n\\t\\t\\t\\t})\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t// we already view this app\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tprefix(prefix, content) {\\n\\t\\t\\treturn prefix + '_' + content\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.force {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-color: var(--color-error);\\n\\t\\tcolor: var(--color-error);\\n\\t}\\n\\t.force:hover,\\n\\t.force:active {\\n\\t\\tbackground: var(--color-error);\\n\\t\\tborder-color: var(--color-error) !important;\\n\\t\\tcolor: var(--color-main-background);\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Content',{class:{ 'with-app-sidebar': _vm.app},attrs:{\"app-name\":\"settings\",\"content-class\":{ 'icon-loading': _vm.loadingList },\"navigation-class\":{ 'icon-loading': _vm.loading }}},[_c('AppNavigation',{scopedSlots:_vm._u([{key:\"list\",fn:function(){return [_c('AppNavigationItem',{attrs:{\"id\":\"app-category-your-apps\",\"to\":{ name: 'apps' },\"exact\":true,\"icon\":\"icon-category-installed\",\"title\":_vm.t('settings', 'Your apps')}}),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"icon\":\"icon-category-enabled\",\"title\":_vm.t('settings', 'Active apps')}}),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"icon\":\"icon-category-disabled\",\"title\":_vm.t('settings', 'Disabled apps')}}),_vm._v(\" \"),(_vm.updateCount > 0)?_c('AppNavigationItem',{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"icon\":\"icon-download\",\"title\":_vm.t('settings', 'Updates')}},[_c('AppNavigationCounter',{attrs:{\"slot\":\"counter\"},slot:\"counter\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.updateCount)+\"\\n\\t\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"icon\":\"icon-category-app-bundles\",\"title\":_vm.t('settings', 'App bundles')}}),_vm._v(\" \"),_c('AppNavigationSpacer'),_vm._v(\" \"),(_vm.settings.appstoreEnabled)?[_c('AppNavigationItem',{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"icon\":\"icon-favorite\",\"title\":_vm.t('settings', 'Featured apps')}}),_vm._v(\" \"),_vm._l((_vm.categories),function(cat){return _c('AppNavigationItem',{key:'icon-category-' + cat.ident,attrs:{\"icon\":'icon-category-' + cat.ident,\"to\":{\n\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t},\"title\":cat.displayName}})})]:_vm._e(),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-developer-docs\",\"title\":_vm.t('settings', 'Developer documentation') + ' ↗'},on:{\"click\":_vm.openDeveloperDocumentation}})]},proxy:true}])}),_vm._v(\" \"),_c('AppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.app,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.app)?_c('AppSidebar',_vm._b({class:{'app-sidebar--without-background': !_vm.appSidebar.background},on:{\"close\":_vm.hideAppDetails},scopedSlots:_vm._u([(!_vm.appSidebar.background)?{key:\"header\",fn:function(){return [_c('div',{staticClass:\"app-sidebar-header__figure--default-app-icon icon-settings-dark\"})]},proxy:true}:null,{key:\"description\",fn:function(){return [(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('AppScore',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"},[_c('p',[_vm._v(_vm._s(_vm.app.version))])])]},proxy:true}],null,true)},'AppSidebar',_vm.appSidebar,false),[_vm._v(\" \"),_vm._v(\" \"),_c('AppSidebarTab',{attrs:{\"id\":\"desc\",\"icon\":\"icon-category-office\",\"name\":_vm.t('settings', 'Details'),\"order\":0}},[_c('AppDetails',{attrs:{\"app\":_vm.app}})],1),_vm._v(\" \"),(_vm.app.appstoreData && _vm.app.releases[0].translations.en.changelog)?_c('AppSidebarTab',{attrs:{\"id\":\"desca\",\"icon\":\"icon-category-organization\",\"name\":_vm.t('settings', 'Changelog'),\"order\":1}},_vm._l((_vm.app.releases),function(release){return _c('div',{key:release.version,staticClass:\"app-sidebar-tabs__release\"},[_c('h2',[_vm._v(_vm._s(release.version))]),_vm._v(\" \"),(_vm.changelog(release))?_c('Markdown',{attrs:{\"text\":_vm.changelog(release)}}):_vm._e()],1)}),0):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.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!./AppScore.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" class=\"app-score-image\">\n</template>\n<script>\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'AppScore',\n\tprops: ['score'],\n\tcomputed: {\n\t\tscoreImage() {\n\t\t\tconst score = Math.round(this.score * 10)\n\t\t\tconst imageName = 'rating/s' + score + '.svg'\n\t\t\treturn imagePath('core', imageName)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=3b3081d1&\"\nimport script from \"./AppScore.vue?vue&type=script&lang=js&\"\nexport * from \"./AppScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst addedApps = {}\n\t\t\tconst navEntries = data.ocs.data\n\t\t\tconst container = document.querySelector('#navigation #apps ul')\n\n\t\t\t// remove disabled apps\n\t\t\tnavEntries.forEach((entry) => {\n\t\t\t\tif (!container.querySelector('li[data-id=\"' + entry.id + '\"]')) {\n\t\t\t\t\taddedApps[entry.id] = true\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tcontainer.querySelectorAll('li[data-id]').forEach((el, index) => {\n\t\t\t\tconst id = el.dataset.id\n\t\t\t\t// remove all apps that are not in the correct order\n\t\t\t\tif (!navEntries[index] || (navEntries[index] && navEntries[index].id !== id)) {\n\t\t\t\t\tel.remove()\n\t\t\t\t\tdocument.querySelector(`#appmenu li[data-id=${id}]`).remove()\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tlet previousEntry = {}\n\t\t\t// add enabled apps to #navigation and #appmenu\n\t\t\tnavEntries.forEach((entry) => {\n\t\t\t\tif (container.querySelector(`li[data-id=\"${entry.id}\"]`) === null) {\n\t\t\t\t\tconst li = document.createElement('li')\n\t\t\t\t\tli.dataset.id = entry.id\n\t\t\t\t\tconst img = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t <defs>\n\t\t\t\t\t <filter id=\"invertMenuMore-${entry.id}\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"></feColorMatrix></filter>\n\t\t\t\t\t <mask id=\"hole\">\n\t\t\t\t\t <rect width=\"100%\" height=\"100%\" fill=\"white\"></rect>\n\t\t\t\t\t\t<circle r=\"4.5\" cx=\"17\" cy=\"3\" fill=\"black\"></circle>\n\t\t\t\t\t </mask>\n\t\t\t\t\t </defs>\n\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"16\" height=\"16\" filter=\"url(#invertMenuMore-${entry.id})\" preserveAspectRatio=\"xMinYMin meet\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t</svg>`\n\n\t\t\t\t\tconst imgElement = document.createElement('template')\n\t\t\t\t\timgElement.innerHTML = img\n\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\ta.setAttribute('href', entry.href)\n\n\t\t\t\t\tconst filename = document.createElement('span')\n\t\t\t\t\tfilename.appendChild(document.createTextNode(entry.name))\n\n\t\t\t\t\tconst loading = document.createElement('div')\n\t\t\t\t\tloading.setAttribute('class', 'unread-counter')\n\t\t\t\t\tloading.style.display = 'none'\n\n\t\t\t\t\t// draw attention to the newly added app entry\n\t\t\t\t\t// by flashing twice the more apps menu\n\t\t\t\t\tif (addedApps[entry.id]) {\n\t\t\t\t\t\ta.classList.add('animated')\n\t\t\t\t\t}\n\n\t\t\t\t\ta.prepend(imgElement.content.firstChild, loading, filename)\n\t\t\t\t\tli.append(a)\n\n\t\t\t\t\t// add app icon to the navigation\n\t\t\t\t\tconst previousElement = document.querySelector(`#navigation li[data-id=${previousEntry.id}]`)\n\t\t\t\t\tif (previousElement) {\n\t\t\t\t\t\tpreviousElement.insertAdjacentElement('afterend', li)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.querySelector('#navigation #apps ul').prepend(li)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (document.getElementById('appmenu').querySelector(`li[data-id=\"${entry.id}\"]`) === null) {\n\t\t\t\t\tconst li = document.createElement('li')\n\t\t\t\t\tli.dataset.id = entry.id\n\t\t\t\t\t// Generating svg embedded image (see layout.user.php)\n\t\t\t\t\tlet img\n\t\t\t\t\tif (OCA.Theming && OCA.Theming.inverted) {\n\t\t\t\t\t\timg = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t\t <defs>\n\t\t\t\t\t\t <filter id=\"invert\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter>\n\t\t\t\t\t\t </defs>\n\t\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"20\" height=\"20\" preserveAspectRatio=\"xMinYMin meet\" filter=\"url(#invert)\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t\t</svg>`\n\t\t\t\t\t} else {\n\t\t\t\t\t\timg = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"20\" height=\"20\" preserveAspectRatio=\"xMinYMin meet\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t\t</svg>`\n\t\t\t\t\t}\n\t\t\t\t\tconst imgElement = document.createElement('template')\n\t\t\t\t\timgElement.innerHTML = img\n\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\ta.setAttribute('href', entry.href)\n\n\t\t\t\t\tconst filename = document.createElement('span')\n\t\t\t\t\tfilename.appendChild(document.createTextNode(entry.name))\n\n\t\t\t\t\tconst loading = document.createElement('div')\n\t\t\t\t\tloading.setAttribute('class', 'icon-loading-dark')\n\t\t\t\t\tloading.style.display = 'none'\n\n\t\t\t\t\t// draw attention to the newly added app entry\n\t\t\t\t\t// by flashing twice the more apps menu\n\t\t\t\t\tif (addedApps[entry.id]) {\n\t\t\t\t\t\ta.classList.add('animated')\n\t\t\t\t\t}\n\n\t\t\t\t\ta.prepend(loading, filename, imgElement.content.firstChild)\n\t\t\t\t\tli.append(a)\n\n\t\t\t\t\t// add app icon to the navigation\n\t\t\t\t\tconst previousElement = document.querySelector('#appmenu li[data-id=' + previousEntry.id + ']')\n\t\t\t\t\tif (previousElement) {\n\t\t\t\t\t\tpreviousElement.insertAdjacentElement('afterend', li)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.queryElementById('appmenu').prepend(li)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpreviousEntry = entry\n\t\t\t})\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tinstalling() {\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Enable untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(group) {\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tenable(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tdisable(appId) {\n\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tremove(appId) {\n\t\t\tthis.$store.dispatch('uninstallApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tinstall(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tupdate(appId) {\n\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.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!./SvgFilterMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'SvgFilterMixin',\n\tdata() {\n\t\treturn {\n\t\t\tfilterId: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilterUrl() {\n\t\t\treturn `url(#${this.filterId})`\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.filterId = 'invertIconApps' + Math.floor((Math.random() * 100)) + new Date().getSeconds() + new Date().getMilliseconds()\n\t},\n}\n</script>\n","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"section\" :class=\"{ selected: isSelected }\" @click=\"showAppDetails\">\n\t\t<div class=\"app-image app-image-icon\" @click=\"showAppDetails\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !screenshotLoaded)\" class=\"icon-settings-dark\" />\n\n\t\t\t<svg v-else-if=\"listView && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter></defs>\n\t\t\t\t<image x=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"32\"\n\t\t\t\t\theight=\"32\"\n\t\t\t\t\tpreserveAspectRatio=\"xMinYMin meet\"\n\t\t\t\t\t:filter=\"filterUrl\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot && screenshotLoaded\" :src=\"app.screenshot\" width=\"100%\">\n\t\t</div>\n\t\t<div class=\"app-name\" @click=\"showAppDetails\">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if=\"!listView\" class=\"app-summary\">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if=\"listView\" class=\"app-version\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating && !listView\" :score=\"app.score\" />\n\t\t</div>\n\n\t\t<div class=\"actions\">\n\t\t\t<div v-if=\"app.error\" class=\"warning\">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if=\"isLoading\" class=\"icon icon-loading-small\" />\n\t\t\t<input v-if=\"app.update\"\n\t\t\t\tclass=\"update primary\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings', 'Update to {update}', {update:app.update})\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"update(app.id)\">\n\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\tclass=\"uninstall\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"remove(app.id)\">\n\t\t\t<input v-if=\"app.active\"\n\t\t\t\tclass=\"enable\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\tclass=\"enable\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t@click.stop=\"enable(app.id)\">\n\t\t\t<input v-else-if=\"!app.active\"\n\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\tclass=\"enable force\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"forceEnable(app.id)\">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from './AppScore'\nimport AppManagement from '../../mixins/AppManagement'\nimport SvgFilterMixin from '../SvgFilterMixin'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppScore,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t'$route.params.id'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.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!./AppItem.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=06bcd5b6&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=06bcd5b6&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=06bcd5b6&scoped=true&\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=06bcd5b6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06bcd5b6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.screenshotLoaded))?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-version\"},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {update}', {update:_vm.app.update}),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'PrefixMixin',\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.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!./AppList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<div v-if=\"showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ n('settings', '%n app has an update available', '%n apps have an update available', counter) }}\n\t\t\t\t\t<Button v-if=\"showUpdateAll\"\n\t\t\t\t\t\tid=\"app-list-update-all\"\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t@click=\"updateAll\">\n\t\t\t\t\t\t{{ n('settings', 'Update', 'Update all', counter) }}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"!showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ t('settings', 'All apps are up-to-date.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\t\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\n\t\t\t<transition-group v-if=\"useBundleView\"\n\t\t\t\tname=\"app-list\"\n\t\t\t\ttag=\"div\"\n\t\t\t\tclass=\"apps-list-container\">\n\t\t\t\t<template v-for=\"bundle in bundles\">\n\t\t\t\t\t<div :key=\"bundle.id\" class=\"apps-header\">\n\t\t\t\t\t\t<div class=\"app-image\" />\n\t\t\t\t\t\t<h2>{{ bundle.name }} <input type=\"button\" :value=\"bundleToggleText(bundle.id)\" @click=\"toggleBundle(bundle.id)\"></h2>\n\t\t\t\t\t\t<div class=\"app-version\" />\n\t\t\t\t\t\t<div class=\"app-level\" />\n\t\t\t\t\t\t<div class=\"app-groups\" />\n\t\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in bundleApps(bundle.id)\"\n\t\t\t\t\t\t:key=\"bundle.id + app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</transition-group>\n\t\t\t<template v-if=\"useAppStoreView\">\n\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t:list-view=\"false\" />\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in searchApps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t\t:list-view=\"true\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"search !== '' && !loading && searchApps.length === 0 && apps.length === 0\" id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\" />\n\t\t\t<h2>{{ t('settings', 'No apps found for your version') }}</h2>\n\t\t</div>\n\n\t\t<div id=\"searchresults\" />\n\t</div>\n</template>\n\n<script>\nimport AppItem from './AppList/AppItem'\nimport PrefixMixin from './PrefixMixin'\nimport pLimit from 'p-limit'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t\tButton,\n\t},\n\tmixins: [PrefixMixin],\n\tprops: ['category', 'app', 'search'],\n\tcomputed: {\n\t\tcounter() {\n\t\t\treturn this.apps.filter(app => app.update).length\n\t\t},\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\thasPendingUpdate() {\n\t\t\treturn this.apps.filter(app => app.update).length > 0\n\t\t},\n\t\tshowUpdateAll() {\n\t\t\treturn this.hasPendingUpdate && this.useListView\n\t\t},\n\t\tapps() {\n\t\t\tconst apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function(a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB)\n\t\t\t\t})\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles)\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update)\n\t\t\t}\n\t\t\tif (this.category === 'featured') {\n\t\t\t\treturn apps.filter(app => app.level === 200)\n\t\t\t}\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined\n\t\t\t\t\t&& (app.category === this.category || app.category.indexOf(this.category) > -1)\n\t\t\t})\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getServerData.bundles.filter(bundle => this.bundleApps(bundle.id).length > 0)\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => {\n\t\t\t\t\t\treturn app.bundleIds !== undefined && app.bundleIds.includes(bundle)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id))\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates' || this.category === 'featured')\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles')\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\treturn self.bundleApps(id).filter(app => !app.active).length === 0\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\tif (self.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable all')\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id)\n\t\t\t}\n\t\t\treturn this.enableBundle(id)\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tupdateAll() {\n\t\t\tconst limit = pLimit(1)\n\t\t\tthis.apps\n\t\t\t\t.filter(app => app.update)\n\t\t\t\t.map(app => limit(() => this.$store.dispatch('updateApp', { appId: app.id }))\n\t\t\t\t)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=35e8fed4&\"\nimport script from \"./AppList.vue?vue&type=script&lang=js&\"\nexport * from \"./AppList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', '%n app has an update available', '%n apps have an update available', _vm.counter))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('Button',{attrs:{\"id\":\"app-list-update-all\",\"type\":\"primary\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', 'Update', 'Update all', _vm.counter))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'All apps are up-to-date.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_vm._l((_vm.bundles),function(bundle){return [_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])}\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!./Markdown.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!./Markdown.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"settings-markdown\" v-html=\"renderMarkdown\" />\n</template>\n\n<script>\nimport { marked } from 'marked'\nimport dompurify from 'dompurify'\n\nexport default {\n\tname: 'Markdown',\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed: {\n\t\trenderMarkdown() {\n\t\t\tconst renderer = new marked.Renderer()\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\tlet prot\n\t\t\t\ttry {\n\t\t\t\t\tprot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tlet out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"'\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"'\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>'\n\t\t\t\treturn out\n\t\t\t}\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text\n\t\t\t\t}\n\t\t\t\treturn title\n\t\t\t}\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote\n\t\t\t}\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.text.trim(), {\n\t\t\t\t\trenderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'h1',\n\t\t\t\t\t\t'h2',\n\t\t\t\t\t\t'h3',\n\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t'h5',\n\t\t\t\t\t\t'h6',\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote',\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.settings-markdown::v-deep {\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 120%;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t\tmargin-top: 48px;\n\t}\n\n\th2 {\n\t\tfont-size: 28px;\n\t\tmargin-top: 48px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: var(--default-font-size);\n\t}\n\n\tpre {\n\t\twhite-space: pre;\n\t\toverflow-x: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t}\n\n\tul li {\n\t\tlist-style-type: disc;\n\t}\n\n\tul > li > ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\tul > li > ul > li ul li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=652eb552&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=652eb552&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=652eb552&scoped=true&\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js&\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=652eb552&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 \"652eb552\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings-markdown\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})}\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!./AppDetails.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!./AppDetails.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"app-details\">\n\t\t<div class=\"app-details__actions\">\n\t\t\t<div v-if=\"app.active && canLimitToGroups(app)\" class=\"app-details__actions-groups\">\n\t\t\t\t<input :id=\"prefix('groups_enable', app.id)\"\n\t\t\t\t\tv-model=\"groupCheckedAppsData\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"app.id\"\n\t\t\t\t\tclass=\"groups-enable__checkbox checkbox\"\n\t\t\t\t\t@change=\"setGroupLimit\">\n\t\t\t\t<label :for=\"prefix('groups_enable', app.id)\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t<input type=\"hidden\"\n\t\t\t\t\tclass=\"group_select\"\n\t\t\t\t\t:title=\"t('settings', 'All')\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t\t<Multiselect v-if=\"isLimitedToGroups(app)\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:value=\"appGroups\"\n\t\t\t\t\t:options-limit=\"5\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Limit app usage to groups')\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:tag-width=\"60\"\n\t\t\t\t\t@select=\"addGroupLimitation\"\n\t\t\t\t\t@remove=\"removeGroupLimitation\"\n\t\t\t\t\t@search-change=\"asyncFindGroup\">\n\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t</Multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"app-details__actions-manage\">\n\t\t\t\t<input v-if=\"app.update\"\n\t\t\t\t\tclass=\"update primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Update to {version}', { version: app.update })\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"update(app.id)\">\n\t\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\t\tclass=\"uninstall\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"remove(app.id)\">\n\t\t\t\t<input v-if=\"app.active\"\n\t\t\t\t\tclass=\"enable\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"disable(app.id)\">\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\t\tclass=\"enable primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t\t@click=\"enable(app.id)\">\n\t\t\t\t<input v-else-if=\"!app.active && !app.canInstall\"\n\t\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\t\tclass=\"enable force\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"forceEnable(app.id)\">\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-details__dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"app-details__documentation\">\n\t\t\t<a v-if=\"!app.internal\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'View in store') }} ↗</a>\n\n\t\t\t<a v-if=\"app.website\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.website\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a v-if=\"app.bugs\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.bugs\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a v-if=\"app.documentation && app.documentation.user\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.user\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.admin\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.admin\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.developer\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.developer\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\t\t<Markdown class=\"app-details__description\" :text=\"app.description\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport AppManagement from '../mixins/AppManagement'\nimport PrefixMixin from './PrefixMixin'\nimport Markdown from './Markdown'\n\nexport default {\n\tname: 'AppDetails',\n\n\tcomponents: {\n\t\tMultiselect,\n\t\tMarkdown,\n\t},\n\tmixins: [AppManagement, PrefixMixin],\n\n\tprops: {\n\t\tapp: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author]\n\t\t\t}\n\t\t\treturn this.app.author\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=8ea5f476&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=8ea5f476&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDetails.vue?vue&type=template&id=8ea5f476&scoped=true&\"\nimport script from \"./AppDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppDetails.vue?vue&type=style&index=0&id=8ea5f476&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 \"8ea5f476\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-details\"},[_c('div',{staticClass:\"app-details__actions\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"app-details__actions-groups\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":_vm.prefix('groups_enable', _vm.app.id),\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__actions-manage\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', { version: _vm.app.update }),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active && !_vm.app.canInstall)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"app-details__documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('Markdown',{staticClass:\"app-details__description\",attrs:{\"text\":_vm.app.description}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Content app-name=\"settings\"\n\t\t:class=\"{ 'with-app-sidebar': app}\"\n\t\t:content-class=\"{ 'icon-loading': loadingList }\"\n\t\t:navigation-class=\"{ 'icon-loading': loading }\">\n\t\t<!-- Categories & filters -->\n\t\t<AppNavigation>\n\t\t\t<template #list>\n\t\t\t\t<AppNavigationItem id=\"app-category-your-apps\"\n\t\t\t\t\t:to=\"{ name: 'apps' }\"\n\t\t\t\t\t:exact=\"true\"\n\t\t\t\t\ticon=\"icon-category-installed\"\n\t\t\t\t\t:title=\"t('settings', 'Your apps')\" />\n\t\t\t\t<AppNavigationItem id=\"app-category-enabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'enabled' } }\"\n\t\t\t\t\ticon=\"icon-category-enabled\"\n\t\t\t\t\t:title=\"t('settings', 'Active apps')\" />\n\t\t\t\t<AppNavigationItem id=\"app-category-disabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'disabled' } }\"\n\t\t\t\t\ticon=\"icon-category-disabled\"\n\t\t\t\t\t:title=\"t('settings', 'Disabled apps')\" />\n\t\t\t\t<AppNavigationItem v-if=\"updateCount > 0\"\n\t\t\t\t\tid=\"app-category-updates\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'updates' } }\"\n\t\t\t\t\ticon=\"icon-download\"\n\t\t\t\t\t:title=\"t('settings', 'Updates')\">\n\t\t\t\t\t<AppNavigationCounter slot=\"counter\">\n\t\t\t\t\t\t{{ updateCount }}\n\t\t\t\t\t</AppNavigationCounter>\n\t\t\t\t</AppNavigationItem>\n\t\t\t\t<AppNavigationItem id=\"app-category-your-bundles\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'app-bundles' } }\"\n\t\t\t\t\ticon=\"icon-category-app-bundles\"\n\t\t\t\t\t:title=\"t('settings', 'App bundles')\" />\n\n\t\t\t\t<AppNavigationSpacer />\n\n\t\t\t\t<!-- App store categories -->\n\t\t\t\t<template v-if=\"settings.appstoreEnabled\">\n\t\t\t\t\t<AppNavigationItem id=\"app-category-featured\"\n\t\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'featured' } }\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t:title=\"t('settings', 'Featured apps')\" />\n\n\t\t\t\t\t<AppNavigationItem v-for=\"cat in categories\"\n\t\t\t\t\t\t:key=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:icon=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:title=\"cat.displayName\" />\n\t\t\t\t</template>\n\n\t\t\t\t<AppNavigationItem id=\"app-developer-docs\"\n\t\t\t\t\t:title=\"t('settings', 'Developer documentation') + ' ↗'\"\n\t\t\t\t\t@click=\"openDeveloperDocumentation\" />\n\t\t\t</template>\n\t\t</AppNavigation>\n\n\t\t<!-- Apps list -->\n\t\t<AppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"app\" :search=\"searchQuery\" />\n\t\t</AppContent>\n\n\t\t<!-- Selected app details -->\n\t\t<AppSidebar v-if=\"id && app\"\n\t\t\tv-bind=\"appSidebar\"\n\t\t\t:class=\"{'app-sidebar--without-background': !appSidebar.background}\"\n\t\t\t@close=\"hideAppDetails\">\n\t\t\t<template v-if=\"!appSidebar.background\" #header>\n\t\t\t\t<div class=\"app-sidebar-header__figure--default-app-icon icon-settings-dark\" />\n\t\t\t</template>\n\n\t\t\t<template #description>\n\t\t\t\t<!-- Featured/Supported badges -->\n\t\t\t\t<div v-if=\"app.level === 300 || app.level === 200 || hasRating\" class=\"app-level\">\n\t\t\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t\t\t<AppScore v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"app-version\">\n\t\t\t\t\t<p>{{ app.version }}</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<!-- Tab content -->\n\n\t\t\t<AppSidebarTab id=\"desc\"\n\t\t\t\ticon=\"icon-category-office\"\n\t\t\t\t:name=\"t('settings', 'Details')\"\n\t\t\t\t:order=\"0\">\n\t\t\t\t<AppDetails :app=\"app\" />\n\t\t\t</AppSidebarTab>\n\t\t\t<AppSidebarTab v-if=\"app.appstoreData && app.releases[0].translations.en.changelog\"\n\t\t\t\tid=\"desca\"\n\t\t\t\ticon=\"icon-category-organization\"\n\t\t\t\t:name=\"t('settings', 'Changelog')\"\n\t\t\t\t:order=\"1\">\n\t\t\t\t<div v-for=\"release in app.releases\" :key=\"release.version\" class=\"app-sidebar-tabs__release\">\n\t\t\t\t\t<h2>{{ release.version }}</h2>\n\t\t\t\t\t<Markdown v-if=\"changelog(release)\" :text=\"changelog(release)\" />\n\t\t\t\t</div>\n\t\t\t</AppSidebarTab>\n\t\t</AppSidebar>\n\t</Content>\n</template>\n\n<script>\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport Vue from 'vue'\nimport VueLocalStorage from 'vue-localstorage'\n\nimport AppContent from '@nextcloud/vue/dist/Components/AppContent'\nimport AppNavigation from '@nextcloud/vue/dist/Components/AppNavigation'\nimport AppNavigationCounter from '@nextcloud/vue/dist/Components/AppNavigationCounter'\nimport AppNavigationItem from '@nextcloud/vue/dist/Components/AppNavigationItem'\nimport AppNavigationSpacer from '@nextcloud/vue/dist/Components/AppNavigationSpacer'\nimport AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar'\nimport AppSidebarTab from '@nextcloud/vue/dist/Components/AppSidebarTab'\nimport Content from '@nextcloud/vue/dist/Components/Content'\n\nimport AppList from '../components/AppList'\nimport AppDetails from '../components/AppDetails'\nimport AppManagement from '../mixins/AppManagement'\nimport AppScore from '../components/AppList/AppScore'\nimport Markdown from '../components/Markdown'\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\n\tcomponents: {\n\t\tAppContent,\n\t\tAppDetails,\n\t\tAppList,\n\t\tAppNavigation,\n\t\tAppNavigationCounter,\n\t\tAppNavigationItem,\n\t\tAppNavigationSpacer,\n\t\tAppScore,\n\t\tAppSidebar,\n\t\tAppSidebarTab,\n\t\tContent,\n\t\tMarkdown,\n\t},\n\n\tmixins: [AppManagement],\n\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories')\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\tapp() {\n\t\t\treturn this.apps.find(app => app.id === this.id)\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\n\t\t// sidebar app binding\n\t\tappSidebar() {\n\t\t\tconst authorName = (xmlNode) => {\n\t\t\t\tif (xmlNode['@value']) {\n\t\t\t\t\t// Complex node (with email or homepage attribute)\n\t\t\t\t\treturn xmlNode['@value']\n\t\t\t\t}\n\n\t\t\t\t// Simple text node\n\t\t\t\treturn xmlNode\n\t\t\t}\n\n\t\t\tconst author = Array.isArray(this.app.author)\n\t\t\t\t? this.app.author.map(authorName).join(', ')\n\t\t\t\t: authorName(this.app.author)\n\t\t\tconst license = t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\n\t\t\tconst subtitle = t('settings', 'by {author}\\n{license}', { author, license })\n\n\t\t\treturn {\n\t\t\t\tsubtitle,\n\t\t\t\tbackground: this.app.screenshot && this.screenshotLoaded\n\t\t\t\t\t? this.app.screenshot\n\t\t\t\t\t: this.app.preview,\n\t\t\t\tcompact: !(this.app.screenshot && this.screenshotLoaded),\n\t\t\t\ttitle: this.app.name,\n\n\t\t\t}\n\t\t},\n\t\tchangelog() {\n\t\t\treturn (release) => release.translations.en.changelog\n\t\t},\n\t},\n\n\twatch: {\n\t\tcategory() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\tapp() {\n\t\t\tthis.screenshotLoaded = false\n\t\t\tif (this.app?.releases && this.app?.screenshot) {\n\t\t\t\tconst image = new Image()\n\t\t\t\timage.onload = (e) => {\n\t\t\t\t\tthis.screenshotLoaded = true\n\t\t\t\t}\n\t\t\t\timage.src = this.app.screenshot\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories')\n\t\tthis.$store.dispatch('getAllApps')\n\t\tthis.$store.dispatch('getGroups', { offset: 0, limit: 5 })\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\n\tmounted() {\n\t\tsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tsetSearch({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: { category: this.category },\n\t\t\t})\n\t\t},\n\t\topenDeveloperDocumentation() {\n\t\t\twindow.open(this.settings.developerDocumentation)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\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!./Apps.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!./Apps.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!./Apps.vue?vue&type=style&index=0&id=d3244798&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=style&index=0&id=d3244798&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=d3244798&scoped=true&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Apps.vue?vue&type=style&index=0&id=d3244798&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 \"d3244798\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","_vm","this","_h","$createElement","_self","_c","staticClass","attrs","scoreImage","axios","generateOcsUrl","then","data","ocs","meta","statuscode","addedApps","navEntries","container","document","querySelector","forEach","entry","querySelectorAll","el","index","dataset","remove","previousEntry","li","createElement","img","icon","imgElement","innerHTML","a","setAttribute","href","filename","appendChild","createTextNode","name","loading","style","display","classList","add","prepend","content","firstChild","append","previousElement","insertAdjacentElement","getElementById","OCA","Theming","inverted","queryElementById","window","dispatchEvent","Event","computed","appGroups","app","groups","map","group","installing","$store","getters","isLoading","enableButtonText","needsDownload","t","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","groupCheckedAppsData","mounted","length","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","concat","removeGroupLimitation","currentGroups","indexOf","splice","forceEnable","response","rebuildNavigation","catch","error","showError","enable","disable","install","update","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","class","selected","isSelected","on","showAppDetails","listView","preview","screenshotLoaded","filterId","_v","filterUrl","_e","screenshot","_s","summary","version","appstoreData","releases","level","directives","rawName","value","expression","modifiers","hasRating","score","$event","stopPropagation","active","canInstall","isCompatible","installed","useBundleView","useListView","store","useAppStoreView","n","counter","updateAll","showUpdateAll","_l","key","category","bundle","bundleToggleText","toggleBundle","bundleApps","searchApps","apps","domProps","renderMarkdown","prefix","Array","isArray","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","dep","internal","appstoreUrl","website","bugs","documentation","user","admin","developer","description","loadingList","scopedSlots","_u","fn","params","updateCount","settings","cat","ident","displayName","openDeveloperDocumentation","proxy","searchQuery","_b","appSidebar","background","hideAppDetails","ratingOverall","translations","en","changelog","release"],"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 6478d879b0a..d38ead88c57 100644
--- a/dist/settings-vue-settings-apps-users-management.js
+++ b/dist/settings-vue-settings-apps-users-management.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-apps-users-management.js.LICENSE.txt */
-!function(){"use strict";var e,r,o,i={78778:function(e,r,o){var i=o(20144),u=o(34741),a=o(83678),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(s,(function(){var e=this.$createElement;return(this._self._c||e)("router-view")}),[],!1,null,null,null).exports,d=o(78345),p=o(79753),f=function(){return Promise.all([o.e(874),o.e(351)]).then(o.bind(o,74394))},l=function(){return Promise.all([o.e(874),o.e(418)]).then(o.bind(o,9838))};i.default.use(d.Z);var m=new d.Z({mode:"history",base:(0,p.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:f,props:!0,name:"users",children:[{path:":selectedGroup",name:"group",component:f}]},{path:"/:index(index.php/)?settings/apps",component:l,props:!0,name:"apps",children:[{path:":category",name:"apps-category",component:l,children:[{path:":id",name:"apps-details",component:l}]}]}]}),g=o(20629),h=o(4820),v=o(10128),A=o.n(v),b=function(e){return e.replace(/\/$/,"")},U=function(){return A()()},I=function(e,t){return h.default.get(b(e),t)},y=function(e,t){return h.default.post(b(e),t)},L=function(e,t){return h.default.put(b(e),t)},P=function(e,t){return h.default.delete(b(e),{params:t})},w=(0,o(17499).IY)().setApp("settings").detectUser().build(),E=function(e,t){return 1===t?e.sort((function(e,t){return e.usercount-e.disabled<t.usercount-t.disabled})):e.sort((function(e,t){return e.name.localeCompare(t.name)}))},O={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},C={appendUsers:function(e,t){var r=e.users.concat(Object.keys(t).map((function(e){return t[e]})));e.usersOffset+=e.usersLimit,e.users=r},setPasswordPolicyMinLength:function(e,t){e.minPasswordLength=""!==t?t:0},initGroups:function(e,t){var r=t.groups,n=t.orderBy,o=t.userCount;e.groups=r.map((function(e){return Object.assign({},O,e)})),e.orderBy=n,e.userCount=o,e.groups=E(e.groups,e.orderBy)},addGroup:function(e,t){var r=t.gid,n=t.displayName;try{if(void 0!==e.groups.find((function(e){return e.id===r})))return;var o=Object.assign({},O,{id:r,name:n});e.groups.push(o),e.groups=E(e.groups,e.orderBy)}catch(e){console.error("Can't create group",e)}},renameGroup:function(e,t){var r=t.gid,n=t.displayName,o=e.groups.findIndex((function(e){return e.id===r}));if(o>=0){var i=e.groups[o];i.name=n,e.groups.splice(o,1,i),e.groups=E(e.groups,e.orderBy)}},removeGroup:function(e,t){var r=e.groups.findIndex((function(e){return e.id===t}));r>=0&&e.groups.splice(r,1)},addUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount++,i.groups.push(n),e.groups=E(e.groups,e.orderBy)},removeUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount--;var u=i.groups;u.splice(u.indexOf(n),1),e.groups=E(e.groups,e.orderBy)},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;e.users.find((function(e){return e.id===r})).subadmin.push(n)},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid,o=e.users.find((function(e){return e.id===r})).subadmin;o.splice(o.indexOf(n),1)},deleteUser:function(e,t){var r=e.users.findIndex((function(e){return e.id===t}));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData:function(e,t){var r=t.data.ocs.data;e.users.push(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=e.users.find((function(e){return e.id===r}));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts:function(e,t){var r=t.user,n=t.actionType,o=e.groups.find((function(e){return"disabled"===e.id}));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,e.userCount+=r.enabled?1:-1,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled+=r.enabled?-1:1}));break;case"create":e.userCount++,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount++}));break;case"remove":r.enabled?(e.userCount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount--}))):(o.usercount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled--})));break;default:w.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value;if("quota"===n){var i=OC.Util.computerFileSize(o);e.users.find((function(e){return e.id===r}))[n][n]=null!==i?i:o}else e.users.find((function(e){return e.id===r}))[n]=o},resetUsers:function(e){e.users=[],e.usersOffset=0}},_=h.default.CancelToken,R=null,k={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:C,getters:{getUsers:function(e){return e.users},getGroups:function(e){return e.groups},getSubadminGroups:function(e){return e.groups.filter((function(e){return"admin"!==e.id&&"disabled"!==e.id}))},getPasswordPolicyMinLength:function(e){return e.minPasswordLength},getUsersOffset:function(e){return e.usersOffset},getUsersLimit:function(e){return e.usersLimit},getUserCount:function(e){return e.userCount}},actions:{getUsers:function(e,t){var r=t.offset,n=t.limit,o=t.search,i=t.group;return R&&R.cancel("Operation canceled by another search request."),R=_.source(),o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?I((0,p.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:R.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){h.default.isCancel(t)||e.commit("API_FAILURE",t)})):I((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:R.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){h.default.isCancel(t)||e.commit("API_FAILURE",t)}))},getGroups:function(e,t){var r=t.offset,n=t.limit,o=t.search;o="string"==typeof o?o:"";var i=-1===n?"":"&limit=".concat(n);return I((0,p.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((function(t){return Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{gid:t,displayName:t})})),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromList:function(e,t){var r=t.offset,n=t.limit,o=t.search;return o="string"==typeof o?o:"",I((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((function(t){return Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromGroup:function(e,t){var r=t.groupid,n=t.offset,o=t.limit;return I((0,p.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((function(t){return e.commit("getUsersFromList",t.data.ocs.data.users)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getPasswordPolicyMinLength:function(e){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(e,t){return U().then((function(r){return y((0,p.generateOcsUrl)("cloud/groups"),{groupid:t}).then((function(r){return e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}})).catch((function(e){throw e}))})).catch((function(r){throw e.commit("API_FAILURE",{gid:t,error:r}),r}))},renameGroup:function(e,t){var r=t.groupid,n=t.displayName;return U().then((function(t){return L((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((function(t){return e.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:function(e,t){return U().then((function(r){return P((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((function(r){return e.commit("removeGroup",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{gid:t,error:r})}))},addUserGroup:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserGroup:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return P((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return P((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},wipeUserDevices:function(e,t){return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:t})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},deleteUser:function(e,t){return U().then((function(r){return P((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(r){return e.commit("deleteUser",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},addUser:function(e,t){var r=e.commit,n=e.dispatch,o=t.userid,i=t.password,u=t.displayName,a=t.email,s=t.groups,c=t.subadmin,d=t.quota,f=t.language;return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:u,email:a,groups:s,subadmin:c,quota:d,language:f}).then((function(e){return n("addUserData",o||e.data.ocs.data.id)})).catch((function(e){throw e}))})).catch((function(e){throw r("API_FAILURE",{userid:o,error:e}),e}))},addUserData:function(e,t){return U().then((function(r){return I((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(t){return e.commit("addUserData",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=void 0===n||n,i=o?"enable":"disable";return U().then((function(t){return L((0,p.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((function(t){return e.commit("enableDisableUser",{userid:r,enabled:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?U().then((function(t){return L((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((function(t){return e.commit("setUserData",{userid:r,key:n,value:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(e,t){return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:t})).then((function(e){return!0})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))}}},F=o(26932),S=(o(73317),{APPS_API_FAILURE:function(e,r){(0,F.x2)(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories:function(e,t){var r=t.categories,n=t.updateCount;e.categories=r,e.updateCount=n},setUpdateCount:function(e,t){e.updateCount=t},addCategory:function(e,t){e.categories.push(t)},appendCategories:function(e,t){e.categories=t},setAllApps:function(e,t){e.apps=t},setError:function(e,t){var r=t.appId,n=t.error;Array.isArray(r)||(r=[r]),r.forEach((function(t){e.apps.find((function(e){return e.id===t})).error=n}))},clearError:function(e,t){var r=t.appId;t.error,e.apps.find((function(e){return e.id===r})).error=null},enableApp:function(e,t){var r=t.appId,n=t.groups,o=e.apps.find((function(e){return e.id===r}));o.active=!0,o.groups=n},disableApp:function(e,t){var r=e.apps.find((function(e){return e.id===t}));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp:function(e,t){e.apps.find((function(e){return e.id===t})).active=!1,e.apps.find((function(e){return e.id===t})).groups=[],e.apps.find((function(e){return e.id===t})).needsDownload=!0,e.apps.find((function(e){return e.id===t})).installed=!1,e.apps.find((function(e){return e.id===t})).canUnInstall=!1,e.apps.find((function(e){return e.id===t})).canInstall=!0},updateApp:function(e,t){var r=e.apps.find((function(e){return e.id===t})),n=r.update;r.update=null,r.version=n,e.updateCount--},resetApps:function(e){e.apps=[]},reset:function(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.default.set(e.loading,t,!0)})):i.default.set(e.loading,t,!0)},stopLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.default.set(e.loading,t,!1)})):i.default.set(e.loading,t,!1)}}),x={enableApp:function(e,r){var n,o=r.appId,i=r.groups;return n=Array.isArray(o)?o:[o],U().then((function(r){return e.commit("startLoading",n),e.commit("startLoading","install"),y((0,p.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((function(r){return e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),I((0,p.generateUrl)("apps/files")).then((function(){r.data.update_required&&((0,F.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:function(){return window.location.reload()},close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((function(){Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(e,t){var r,n=t.appId;return t.groups,r=Array.isArray(n)?n:[n],U().then((function(){return e.commit("startLoading",r),e.commit("startLoading","install"),y((0,p.generateUrl)("settings/apps/force"),{appId:n}).then((function(e){location.reload()})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},disableApp:function(e,t){var r,n=t.appId;return r=Array.isArray(n)?n:[n],U().then((function(t){return e.commit("startLoading",r),y((0,p.generateUrl)("settings/apps/disable"),{appIds:r}).then((function(t){return e.commit("stopLoading",r),r.forEach((function(t){e.commit("disableApp",t)})),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},uninstallApp:function(e,t){var r=t.appId;return U().then((function(t){return e.commit("startLoading",r),I((0,p.generateUrl)("settings/apps/uninstall/".concat(r))).then((function(t){return e.commit("stopLoading",r),e.commit("uninstallApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},updateApp:function(e,t){var r=t.appId;return U().then((function(t){return e.commit("startLoading",r),e.commit("startLoading","install"),I((0,p.generateUrl)("settings/apps/update/".concat(r))).then((function(t){return e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},getAllApps:function(e){return e.commit("startLoading","list"),I((0,p.generateUrl)("settings/apps/list")).then((function(t){return e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0})).catch((function(t){return e.commit("API_FAILURE",t)}))},getCategories:function(e){return e.commit("startLoading","categories"),I((0,p.generateUrl)("settings/apps/categories")).then((function(t){return t.data.length>0&&(e.commit("appendCategories",t.data),e.commit("stopLoading","categories"),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))}},G={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1},mutations:S,getters:{loading:function(e){return function(t){return e.loading[t]}},getCategories:function(e){return e.categories},getAllApps:function(e){return e.apps},getUpdateCount:function(e){return e.updateCount}},actions:x},D={state:{},mutations:{},getters:{},actions:{setAppConfig:function(e,t){var r=t.app,n=t.key,o=t.value;return U().then((function(e){return y((0,p.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{app:r,key:n,value:o,error:t})}))}}};i.default.use(g.ZP);var T={API_FAILURE:function(e,r){try{var n=r.error.response.data.ocs.meta.message;(0,F.x2)(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+n,{isHTML:!0})}catch(e){(0,F.x2)(t("settings","An error occured during the request. Unable to proceed."))}console.error(e,r)}},j=new g.yh({modules:{users:k,apps:G,settings:{state:{serverData:{}},mutations:{setServerData:function(e,t){e.serverData=t}},getters:{getServerData:function(e){return e.serverData}},actions:{}},oc:D},strict:!1,mutations:T});i.default.use(u.default,{defaultHtml:!1}),(0,a.Z)(j,m),o.nc=btoa(OC.requestToken),i.default.prototype.t=t,i.default.prototype.n=n,i.default.prototype.OC=OC,i.default.prototype.OCA=OCA,i.default.prototype.oc_userconfig=oc_userconfig,new i.default({router:m,store:j,render:function(e){return e(c)}}).$mount("#content")}},u={};function a(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=i,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,r,n,o){if(!r){var i=1/0;for(d=0;d<e.length;d++){r=e[d][0],n=e[d][1],o=e[d][2];for(var u=!0,s=0;s<r.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[s])}))?r.splice(s--,1):(u=!1,o<i&&(i=o));if(u){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,r){return a.f[r](e,t),t}),[]))},a.u=function(e){return{351:"settings-users",418:"settings-apps-view"}[e]+"-"+e+".js?v="+{351:"69ccd4416e595e8d32a5",418:"5fd8ba7c52d9c93a2e93"}[e]},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="nextcloud:",a.l=function(e,t,n,i){if(r[e])r[e].push(t);else{var u,s;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var p=c[d];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==o+n){u=p;break}}u||(s=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",o+n),u.src=e),r[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((function(e){return e(n)})),t)return t(n)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),s&&document.head.appendChild(u)}},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=562,function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){a.b=document.baseURI||self.location.href;var e={562:0};a.f.j=function(t,r){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((function(r,o){n=e[t]=[r,o]}));r.push(n[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,(function(r){if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}}),"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,o,i=r[0],u=r[1],s=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(n in u)a.o(u,n)&&(a.m[n]=u[n]);if(s)var d=s(a)}for(t&&t(r);c<i.length;c++)o=i[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}();var s=a.O(void 0,[874],(function(){return a(78778)}));s=a.O(s)}();
-//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=7c2dd27f04c8bafea2c1 \ No newline at end of file
+!function(){"use strict";var e,r,o,i={78778:function(e,r,o){var i=o(20144),u=o(34741),a=o(83678),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(s,(function(){var e=this.$createElement;return(this._self._c||e)("router-view")}),[],!1,null,null,null).exports,d=o(78345),p=o(79753),f=function(){return Promise.all([o.e(874),o.e(351)]).then(o.bind(o,74394))},l=function(){return Promise.all([o.e(874),o.e(418)]).then(o.bind(o,77538))};i.default.use(d.Z);var m=new d.Z({mode:"history",base:(0,p.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:f,props:!0,name:"users",children:[{path:":selectedGroup",name:"group",component:f}]},{path:"/:index(index.php/)?settings/apps",component:l,props:!0,name:"apps",children:[{path:":category",name:"apps-category",component:l,children:[{path:":id",name:"apps-details",component:l}]}]}]}),g=o(20629),h=o(4820),v=o(10128),A=o.n(v),b=function(e){return e.replace(/\/$/,"")},U=function(){return A()()},I=function(e,t){return h.default.get(b(e),t)},y=function(e,t){return h.default.post(b(e),t)},L=function(e,t){return h.default.put(b(e),t)},P=function(e,t){return h.default.delete(b(e),{params:t})},w=(0,o(17499).IY)().setApp("settings").detectUser().build(),E=function(e,t){return 1===t?e.sort((function(e,t){return e.usercount-e.disabled<t.usercount-t.disabled})):e.sort((function(e,t){return e.name.localeCompare(t.name)}))},O={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},C={appendUsers:function(e,t){var r=e.users.concat(Object.keys(t).map((function(e){return t[e]})));e.usersOffset+=e.usersLimit,e.users=r},setPasswordPolicyMinLength:function(e,t){e.minPasswordLength=""!==t?t:0},initGroups:function(e,t){var r=t.groups,n=t.orderBy,o=t.userCount;e.groups=r.map((function(e){return Object.assign({},O,e)})),e.orderBy=n,e.userCount=o,e.groups=E(e.groups,e.orderBy)},addGroup:function(e,t){var r=t.gid,n=t.displayName;try{if(void 0!==e.groups.find((function(e){return e.id===r})))return;var o=Object.assign({},O,{id:r,name:n});e.groups.push(o),e.groups=E(e.groups,e.orderBy)}catch(e){console.error("Can't create group",e)}},renameGroup:function(e,t){var r=t.gid,n=t.displayName,o=e.groups.findIndex((function(e){return e.id===r}));if(o>=0){var i=e.groups[o];i.name=n,e.groups.splice(o,1,i),e.groups=E(e.groups,e.orderBy)}},removeGroup:function(e,t){var r=e.groups.findIndex((function(e){return e.id===t}));r>=0&&e.groups.splice(r,1)},addUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount++,i.groups.push(n),e.groups=E(e.groups,e.orderBy)},removeUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount--;var u=i.groups;u.splice(u.indexOf(n),1),e.groups=E(e.groups,e.orderBy)},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;e.users.find((function(e){return e.id===r})).subadmin.push(n)},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid,o=e.users.find((function(e){return e.id===r})).subadmin;o.splice(o.indexOf(n),1)},deleteUser:function(e,t){var r=e.users.findIndex((function(e){return e.id===t}));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData:function(e,t){var r=t.data.ocs.data;e.users.push(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=e.users.find((function(e){return e.id===r}));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts:function(e,t){var r=t.user,n=t.actionType,o=e.groups.find((function(e){return"disabled"===e.id}));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,e.userCount+=r.enabled?1:-1,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled+=r.enabled?-1:1}));break;case"create":e.userCount++,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount++}));break;case"remove":r.enabled?(e.userCount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount--}))):(o.usercount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled--})));break;default:w.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value;if("quota"===n){var i=OC.Util.computerFileSize(o);e.users.find((function(e){return e.id===r}))[n][n]=null!==i?i:o}else e.users.find((function(e){return e.id===r}))[n]=o},resetUsers:function(e){e.users=[],e.usersOffset=0}},_=h.default.CancelToken,R=null,k={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:C,getters:{getUsers:function(e){return e.users},getGroups:function(e){return e.groups},getSubadminGroups:function(e){return e.groups.filter((function(e){return"admin"!==e.id&&"disabled"!==e.id}))},getPasswordPolicyMinLength:function(e){return e.minPasswordLength},getUsersOffset:function(e){return e.usersOffset},getUsersLimit:function(e){return e.usersLimit},getUserCount:function(e){return e.userCount}},actions:{getUsers:function(e,t){var r=t.offset,n=t.limit,o=t.search,i=t.group;return R&&R.cancel("Operation canceled by another search request."),R=_.source(),o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?I((0,p.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:R.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){h.default.isCancel(t)||e.commit("API_FAILURE",t)})):I((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:R.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){h.default.isCancel(t)||e.commit("API_FAILURE",t)}))},getGroups:function(e,t){var r=t.offset,n=t.limit,o=t.search;o="string"==typeof o?o:"";var i=-1===n?"":"&limit=".concat(n);return I((0,p.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((function(t){return Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{gid:t,displayName:t})})),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromList:function(e,t){var r=t.offset,n=t.limit,o=t.search;return o="string"==typeof o?o:"",I((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((function(t){return Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromGroup:function(e,t){var r=t.groupid,n=t.offset,o=t.limit;return I((0,p.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((function(t){return e.commit("getUsersFromList",t.data.ocs.data.users)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getPasswordPolicyMinLength:function(e){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(e,t){return U().then((function(r){return y((0,p.generateOcsUrl)("cloud/groups"),{groupid:t}).then((function(r){return e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}})).catch((function(e){throw e}))})).catch((function(r){throw e.commit("API_FAILURE",{gid:t,error:r}),r}))},renameGroup:function(e,t){var r=t.groupid,n=t.displayName;return U().then((function(t){return L((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((function(t){return e.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:function(e,t){return U().then((function(r){return P((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((function(r){return e.commit("removeGroup",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{gid:t,error:r})}))},addUserGroup:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserGroup:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return P((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return P((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},wipeUserDevices:function(e,t){return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:t})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},deleteUser:function(e,t){return U().then((function(r){return P((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(r){return e.commit("deleteUser",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},addUser:function(e,t){var r=e.commit,n=e.dispatch,o=t.userid,i=t.password,u=t.displayName,a=t.email,s=t.groups,c=t.subadmin,d=t.quota,f=t.language;return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:u,email:a,groups:s,subadmin:c,quota:d,language:f}).then((function(e){return n("addUserData",o||e.data.ocs.data.id)})).catch((function(e){throw e}))})).catch((function(e){throw r("API_FAILURE",{userid:o,error:e}),e}))},addUserData:function(e,t){return U().then((function(r){return I((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(t){return e.commit("addUserData",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=void 0===n||n,i=o?"enable":"disable";return U().then((function(t){return L((0,p.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((function(t){return e.commit("enableDisableUser",{userid:r,enabled:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?U().then((function(t){return L((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((function(t){return e.commit("setUserData",{userid:r,key:n,value:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(e,t){return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:t})).then((function(e){return!0})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))}}},F=o(26932),S=(o(73317),{APPS_API_FAILURE:function(e,r){(0,F.x2)(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories:function(e,t){var r=t.categories,n=t.updateCount;e.categories=r,e.updateCount=n},setUpdateCount:function(e,t){e.updateCount=t},addCategory:function(e,t){e.categories.push(t)},appendCategories:function(e,t){e.categories=t},setAllApps:function(e,t){e.apps=t},setError:function(e,t){var r=t.appId,n=t.error;Array.isArray(r)||(r=[r]),r.forEach((function(t){e.apps.find((function(e){return e.id===t})).error=n}))},clearError:function(e,t){var r=t.appId;t.error,e.apps.find((function(e){return e.id===r})).error=null},enableApp:function(e,t){var r=t.appId,n=t.groups,o=e.apps.find((function(e){return e.id===r}));o.active=!0,o.groups=n},disableApp:function(e,t){var r=e.apps.find((function(e){return e.id===t}));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp:function(e,t){e.apps.find((function(e){return e.id===t})).active=!1,e.apps.find((function(e){return e.id===t})).groups=[],e.apps.find((function(e){return e.id===t})).needsDownload=!0,e.apps.find((function(e){return e.id===t})).installed=!1,e.apps.find((function(e){return e.id===t})).canUnInstall=!1,e.apps.find((function(e){return e.id===t})).canInstall=!0},updateApp:function(e,t){var r=e.apps.find((function(e){return e.id===t})),n=r.update;r.update=null,r.version=n,e.updateCount--},resetApps:function(e){e.apps=[]},reset:function(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.default.set(e.loading,t,!0)})):i.default.set(e.loading,t,!0)},stopLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.default.set(e.loading,t,!1)})):i.default.set(e.loading,t,!1)}}),x={enableApp:function(e,r){var n,o=r.appId,i=r.groups;return n=Array.isArray(o)?o:[o],U().then((function(r){return e.commit("startLoading",n),e.commit("startLoading","install"),y((0,p.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((function(r){return e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),I((0,p.generateUrl)("apps/files")).then((function(){r.data.update_required&&((0,F.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:function(){return window.location.reload()},close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((function(){Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(e,t){var r,n=t.appId;return t.groups,r=Array.isArray(n)?n:[n],U().then((function(){return e.commit("startLoading",r),e.commit("startLoading","install"),y((0,p.generateUrl)("settings/apps/force"),{appId:n}).then((function(e){location.reload()})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},disableApp:function(e,t){var r,n=t.appId;return r=Array.isArray(n)?n:[n],U().then((function(t){return e.commit("startLoading",r),y((0,p.generateUrl)("settings/apps/disable"),{appIds:r}).then((function(t){return e.commit("stopLoading",r),r.forEach((function(t){e.commit("disableApp",t)})),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},uninstallApp:function(e,t){var r=t.appId;return U().then((function(t){return e.commit("startLoading",r),I((0,p.generateUrl)("settings/apps/uninstall/".concat(r))).then((function(t){return e.commit("stopLoading",r),e.commit("uninstallApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},updateApp:function(e,t){var r=t.appId;return U().then((function(t){return e.commit("startLoading",r),e.commit("startLoading","install"),I((0,p.generateUrl)("settings/apps/update/".concat(r))).then((function(t){return e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},getAllApps:function(e){return e.commit("startLoading","list"),I((0,p.generateUrl)("settings/apps/list")).then((function(t){return e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0})).catch((function(t){return e.commit("API_FAILURE",t)}))},getCategories:function(e){return e.commit("startLoading","categories"),I((0,p.generateUrl)("settings/apps/categories")).then((function(t){return t.data.length>0&&(e.commit("appendCategories",t.data),e.commit("stopLoading","categories"),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))}},G={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1},mutations:S,getters:{loading:function(e){return function(t){return e.loading[t]}},getCategories:function(e){return e.categories},getAllApps:function(e){return e.apps},getUpdateCount:function(e){return e.updateCount}},actions:x},D={state:{},mutations:{},getters:{},actions:{setAppConfig:function(e,t){var r=t.app,n=t.key,o=t.value;return U().then((function(e){return y((0,p.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{app:r,key:n,value:o,error:t})}))}}};i.default.use(g.ZP);var T={API_FAILURE:function(e,r){try{var n=r.error.response.data.ocs.meta.message;(0,F.x2)(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+n,{isHTML:!0})}catch(e){(0,F.x2)(t("settings","An error occured during the request. Unable to proceed."))}console.error(e,r)}},j=new g.yh({modules:{users:k,apps:G,settings:{state:{serverData:{}},mutations:{setServerData:function(e,t){e.serverData=t}},getters:{getServerData:function(e){return e.serverData}},actions:{}},oc:D},strict:!1,mutations:T});i.default.use(u.default,{defaultHtml:!1}),(0,a.Z)(j,m),o.nc=btoa(OC.requestToken),i.default.prototype.t=t,i.default.prototype.n=n,i.default.prototype.OC=OC,i.default.prototype.OCA=OCA,i.default.prototype.oc_userconfig=oc_userconfig,new i.default({router:m,store:j,render:function(e){return e(c)}}).$mount("#content")}},u={};function a(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=i,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,r,n,o){if(!r){var i=1/0;for(d=0;d<e.length;d++){r=e[d][0],n=e[d][1],o=e[d][2];for(var u=!0,s=0;s<r.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[s])}))?r.splice(s--,1):(u=!1,o<i&&(i=o));if(u){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,r){return a.f[r](e,t),t}),[]))},a.u=function(e){return{351:"settings-users",418:"settings-apps-view"}[e]+"-"+e+".js?v="+{351:"69ccd4416e595e8d32a5",418:"d3690d441bdf314cb5f8"}[e]},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="nextcloud:",a.l=function(e,t,n,i){if(r[e])r[e].push(t);else{var u,s;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var p=c[d];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==o+n){u=p;break}}u||(s=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",o+n),u.src=e),r[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((function(e){return e(n)})),t)return t(n)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),s&&document.head.appendChild(u)}},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=562,function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){a.b=document.baseURI||self.location.href;var e={562:0};a.f.j=function(t,r){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((function(r,o){n=e[t]=[r,o]}));r.push(n[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,(function(r){if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}}),"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,o,i=r[0],u=r[1],s=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(n in u)a.o(u,n)&&(a.m[n]=u[n]);if(s)var d=s(a)}for(t&&t(r);c<i.length;c++)o=i[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}();var s=a.O(void 0,[874],(function(){return a(78778)}));s=a.O(s)}();
+//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=2867d08612038bb241cb \ 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 13d7d72e66e..b359d18de79 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=7c2dd27f04c8bafea2c1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=template&id=50420604&","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\n\nexport default new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {Object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetCategories(context) {\n\t\tcontext.commit('startLoading', 'categories')\n\t\treturn api.get(generateUrl('settings/apps/categories'))\n\t\t\t.then((response) => {\n\t\t\t\tif (response.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', response.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"351\":\"settings-users\",\"418\":\"settings-apps-view\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"351\":\"69ccd4416e595e8d32a5\",\"418\":\"5fd8ba7c52d9c93a2e93\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(78778); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","_h","this","$createElement","_self","_c","Users","Apps","Vue","Router","mode","base","generateUrl","linkActiveClass","routes","path","component","props","name","children","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","disabled","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","Object","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","renameGroup","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","user","enabled","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","disabledGroup","forEach","userGroup","logger","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","t","message","isHTML","initCategories","categories","updateCount","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","loading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","loadingList","getUpdateCount","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","VTooltip","defaultHtml","sync","store","router","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=2867d08612038bb241cb","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=template&id=50420604&","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\n\nexport default new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {Object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetCategories(context) {\n\t\tcontext.commit('startLoading', 'categories')\n\t\treturn api.get(generateUrl('settings/apps/categories'))\n\t\t\t.then((response) => {\n\t\t\t\tif (response.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', response.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"351\":\"settings-users\",\"418\":\"settings-apps-view\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"351\":\"69ccd4416e595e8d32a5\",\"418\":\"d3690d441bdf314cb5f8\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(78778); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","_h","this","$createElement","_self","_c","Users","Apps","Vue","Router","mode","base","generateUrl","linkActiveClass","routes","path","component","props","name","children","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","disabled","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","Object","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","renameGroup","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","user","enabled","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","disabledGroup","forEach","userGroup","logger","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","t","message","isHTML","initCategories","categories","updateCount","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","loading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","loadingList","getUpdateCount","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","VTooltip","defaultHtml","sync","store","router","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/user_status-dashboard.js b/dist/user_status-dashboard.js
index 413f9081cff..8fc141bf631 100644
--- a/dist/user_status-dashboard.js
+++ b/dist/user_status-dashboard.js
@@ -1,3 +1,3 @@
/*! For license information please see user_status-dashboard.js.LICENSE.txt */
-!function(){var n,s={93365:function(n,t,s){var e={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function a(n){var t=r(n);return s(t)}function r(n){if(!s.o(e,n)){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}return e[n]}a.keys=function(){return Object.keys(e)},a.resolve=r,n.exports=a,a.id=93365},70505:function(n,s,e){"use strict";var a=e(20144),r=e(22200),o=e(9944),u=e(66164),i=e(28017),j=e.n(i),l=e(97e3),c=e.n(l),d=e(16453),m=e(80351),f=e.n(m),p={name:"Dashboard",components:{Avatar:j(),DashboardWidget:u.Z,DashboardWidgetItem:u.v,EmptyContent:c()},data:function(){return{statuses:[],loading:!0}},computed:{items:function(){var n=this;return this.statuses.map((function(s){var e=s.icon||"",a=s.message||"";""===a&&("away"===s.status&&(a=t("user_status","Away")),"dnd"===s.status&&(a=t("user_status","Do not disturb")));var r,o=""!==s.icon?"".concat(e," ").concat(a):a;return r=null===s.icon&&""===a&&null===s.timestamp?"":null===s.icon&&""===a&&null!==s.timestamp?f()(s.timestamp,"X").fromNow():null!==s.timestamp?n.t("user_status","{status}, {timestamp}",{status:o,timestamp:f()(s.timestamp,"X").fromNow()},null,{escape:!1,sanitize:!1}):o,{mainText:s.displayName,subText:r,avatarUsername:s.userId}}))}},mounted:function(){try{this.statuses=(0,d.loadState)("user_status","dashboard_data"),this.loading=!1}catch(n){console.error(n)}}},h=e(93379),b=e.n(h),v=e(7795),y=e.n(v),g=e(90569),k=e.n(g),w=e(3565),z=e.n(w),x=e(19216),O=e.n(x),_=e(44589),A=e.n(_),C=e(43973),D={};D.styleTagTransform=A(),D.setAttributes=z(),D.insert=k().bind(null,"head"),D.domAPI=y(),D.insertStyleElement=O(),b()(C.Z,D),C.Z&&C.Z.locals&&C.Z.locals;var T=(0,e(51900).Z)(p,(function(){var n=this,t=n.$createElement,s=n._self._c||t;return s("DashboardWidget",{attrs:{id:"user-status_panel",items:n.items,loading:n.loading},scopedSlots:n._u([{key:"default",fn:function(t){var e=t.item;return[s("DashboardWidgetItem",{attrs:{"main-text":e.mainText,"sub-text":e.subText},scopedSlots:n._u([{key:"avatar",fn:function(){return[s("Avatar",{staticClass:"item-avatar",attrs:{size:44,user:e.avatarUsername,"display-name":e.mainText,"show-user-status":!1,"show-user-status-compact":!1}})]},proxy:!0}],null,!0)})]}},{key:"empty-content",fn:function(){return[s("EmptyContent",{attrs:{id:"user_status-widget-empty-content",icon:"icon-user-status"}},[n._v("\n\t\t\t"+n._s(n.t("user_status","No recent status changes"))+"\n\t\t")])]},proxy:!0}])})}),[],!1,null,null,null).exports;e.nc=btoa((0,r.getRequestToken)()),a.default.prototype.t=o.translate,a.default.prototype.n=o.translatePlural,a.default.prototype.OC=OC,a.default.prototype.OCA=OCA,document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard.register("user_status",(function(n){new(a.default.extend(T))({propsData:{}}).$mount(n)}))}))},43973:function(n,t,s){"use strict";var e=s(87537),a=s.n(e),r=s(23645),o=s.n(r)()(a());o.push([n.id,"#user_status-widget-empty-content{text-align:center;margin-top:5vh}","",{version:3,sources:["webpack://./apps/user_status/src/views/Dashboard.vue"],names:[],mappings:"AAqHA,kCACC,iBAAA,CACA,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#user_status-widget-empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n}\n"],sourceRoot:""}]),t.Z=o}},e={};function a(n){var t=e[n];if(void 0!==t)return t.exports;var r=e[n]={id:n,loaded:!1,exports:{}};return s[n].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=s,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(t,s,e,r){if(!s){var o=1/0;for(l=0;l<n.length;l++){s=n[l][0],e=n[l][1],r=n[l][2];for(var u=!0,i=0;i<s.length;i++)(!1&r||o>=r)&&Object.keys(a.O).every((function(n){return a.O[n](s[i])}))?s.splice(i--,1):(u=!1,r<o&&(o=r));if(u){n.splice(l--,1);var j=e();void 0!==j&&(t=j)}}return t}r=r||0;for(var l=n.length;l>0&&n[l-1][2]>r;l--)n[l]=n[l-1];n[l]=[s,e,r]},a.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(t,{a:t}),t},a.d=function(n,t){for(var s in t)a.o(t,s)&&!a.o(n,s)&&Object.defineProperty(n,s,{enumerable:!0,get:t[s]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),a.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},a.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},a.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},a.j=63,function(){a.b=document.baseURI||self.location.href;var n={63:0};a.O.j=function(t){return 0===n[t]};var t=function(t,s){var e,r,o=s[0],u=s[1],i=s[2],j=0;if(o.some((function(t){return 0!==n[t]}))){for(e in u)a.o(u,e)&&(a.m[e]=u[e]);if(i)var l=i(a)}for(t&&t(s);j<o.length;j++)r=o[j],a.o(n,r)&&n[r]&&n[r][0](),n[r]=0;return a.O(l)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))}();var r=a.O(void 0,[874],(function(){return a(70505)}));r=a.O(r)}();
-//# sourceMappingURL=user_status-dashboard.js.map?v=119fdae41efd62b3e8ab \ No newline at end of file
+!function(){var n,s={93365:function(n,t,s){var e={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function r(n){var t=a(n);return s(t)}function a(n){if(!s.o(e,n)){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}return e[n]}r.keys=function(){return Object.keys(e)},r.resolve=a,n.exports=r,r.id=93365},79434:function(n,s,e){"use strict";var r=e(20144),a=e(22200),o=e(9944),u=e(66164),i=e(16453),j=e(28017),l=e.n(j),c=e(97e3),d=e.n(c),m=e(80351),f=e.n(m),p={name:"Dashboard",components:{Avatar:l(),DashboardWidget:u.Z,DashboardWidgetItem:u.v,EmptyContent:d()},data:function(){return{statuses:[],loading:!0}},computed:{items:function(){var n=this;return this.statuses.map((function(s){var e=s.icon||"",r=s.message||"";""===r&&("away"===s.status&&(r=t("user_status","Away")),"dnd"===s.status&&(r=t("user_status","Do not disturb")));var a,o=""!==s.icon?"".concat(e," ").concat(r):r;return a=null===s.icon&&""===r&&null===s.timestamp?"":null===s.icon&&""===r&&null!==s.timestamp?f()(s.timestamp,"X").fromNow():null!==s.timestamp?n.t("user_status","{status}, {timestamp}",{status:o,timestamp:f()(s.timestamp,"X").fromNow()},null,{escape:!1,sanitize:!1}):o,{mainText:s.displayName,subText:a,avatarUsername:s.userId}}))}},mounted:function(){try{this.statuses=(0,i.loadState)("user_status","dashboard_data"),this.loading=!1}catch(n){console.error(n)}}},h=e(93379),b=e.n(h),v=e(7795),g=e.n(v),y=e(90569),k=e.n(y),A=e(3565),w=e.n(A),x=e(19216),C=e.n(x),z=e(44589),_=e.n(z),O=e(43973),D={};D.styleTagTransform=_(),D.setAttributes=w(),D.insert=k().bind(null,"head"),D.domAPI=g(),D.insertStyleElement=C(),b()(O.Z,D),O.Z&&O.Z.locals&&O.Z.locals;var T=(0,e(51900).Z)(p,(function(){var n=this,t=n.$createElement,s=n._self._c||t;return s("DashboardWidget",{attrs:{id:"user-status_panel",items:n.items,loading:n.loading},scopedSlots:n._u([{key:"default",fn:function(t){var e=t.item;return[s("DashboardWidgetItem",{attrs:{"main-text":e.mainText,"sub-text":e.subText},scopedSlots:n._u([{key:"avatar",fn:function(){return[s("Avatar",{staticClass:"item-avatar",attrs:{size:44,user:e.avatarUsername,"display-name":e.mainText,"show-user-status":!1,"show-user-status-compact":!1}})]},proxy:!0}],null,!0)})]}},{key:"empty-content",fn:function(){return[s("EmptyContent",{attrs:{id:"user_status-widget-empty-content"},scopedSlots:n._u([{key:"icon",fn:function(){return[s("div",{staticClass:"icon-user-status"})]},proxy:!0}])},[n._v("\n\t\t\t"+n._s(n.t("user_status","No recent status changes"))+"\n\t\t")])]},proxy:!0}])})}),[],!1,null,null,null).exports;e.nc=btoa((0,a.getRequestToken)()),r.default.prototype.t=o.translate,r.default.prototype.n=o.translatePlural,r.default.prototype.OC=OC,r.default.prototype.OCA=OCA,document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard.register("user_status",(function(n){new(r.default.extend(T))({propsData:{}}).$mount(n)}))}))},43973:function(n,t,s){"use strict";var e=s(87537),r=s.n(e),a=s(23645),o=s.n(a)()(r());o.push([n.id,"#user_status-widget-empty-content{text-align:center;margin-top:5vh}#user_status-widget-empty-content .icon-user-status{width:64px;height:64px;background-size:64px;filter:var(--background-invert-if-dark)}","",{version:3,sources:["webpack://./apps/user_status/src/views/Dashboard.vue"],names:[],mappings:"AAuHA,kCACC,iBAAA,CACA,cAAA,CACA,oDACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,uCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#user_status-widget-empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n\t.icon-user-status {\n\t\twidth: 64px;\n\t\theight: 64px;\n\t\tbackground-size: 64px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n}\n"],sourceRoot:""}]),t.Z=o}},e={};function r(n){var t=e[n];if(void 0!==t)return t.exports;var a=e[n]={id:n,loaded:!1,exports:{}};return s[n].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=s,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(t,s,e,a){if(!s){var o=1/0;for(l=0;l<n.length;l++){s=n[l][0],e=n[l][1],a=n[l][2];for(var u=!0,i=0;i<s.length;i++)(!1&a||o>=a)&&Object.keys(r.O).every((function(n){return r.O[n](s[i])}))?s.splice(i--,1):(u=!1,a<o&&(o=a));if(u){n.splice(l--,1);var j=e();void 0!==j&&(t=j)}}return t}a=a||0;for(var l=n.length;l>0&&n[l-1][2]>a;l--)n[l]=n[l-1];n[l]=[s,e,a]},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,{a:t}),t},r.d=function(n,t){for(var s in t)r.o(t,s)&&!r.o(n,s)&&Object.defineProperty(n,s,{enumerable:!0,get:t[s]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},r.j=63,function(){r.b=document.baseURI||self.location.href;var n={63:0};r.O.j=function(t){return 0===n[t]};var t=function(t,s){var e,a,o=s[0],u=s[1],i=s[2],j=0;if(o.some((function(t){return 0!==n[t]}))){for(e in u)r.o(u,e)&&(r.m[e]=u[e]);if(i)var l=i(r)}for(t&&t(s);j<o.length;j++)a=o[j],r.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return r.O(l)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))}();var a=r.O(void 0,[874],(function(){return r(79434)}));a=r.O(a)}();
+//# sourceMappingURL=user_status-dashboard.js.map?v=0fb16409ead6583c7c71 \ No newline at end of file
diff --git a/dist/user_status-dashboard.js.map b/dist/user_status-dashboard.js.map
index 3c152e7e33b..518ba06d8cc 100644
--- a/dist/user_status-dashboard.js.map
+++ b/dist/user_status-dashboard.js.map
@@ -1 +1 @@
-{"version":3,"file":"user_status-dashboard.js?v=119fdae41efd62b3e8ab","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue","webpack://nextcloud/./apps/user_status/src/views/Dashboard.vue?0926","webpack://nextcloud/./apps/user_status/src/views/Dashboard.vue?d681","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=template&id=630fd03c&","webpack:///nextcloud/apps/user_status/src/dashboard.js","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<DashboardWidget id=\"user-status_panel\"\n\t\t:items=\"items\"\n\t\t:loading=\"loading\">\n\t\t<template #default=\"{ item }\">\n\t\t\t<DashboardWidgetItem :main-text=\"item.mainText\"\n\t\t\t\t:sub-text=\"item.subText\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar class=\"item-avatar\"\n\t\t\t\t\t\t:size=\"44\"\n\t\t\t\t\t\t:user=\"item.avatarUsername\"\n\t\t\t\t\t\t:display-name=\"item.mainText\"\n\t\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t\t:show-user-status-compact=\"false\" />\n\t\t\t\t</template>\n\t\t\t</DashboardWidgetItem>\n\t\t</template>\n\t\t<template #empty-content>\n\t\t\t<EmptyContent id=\"user_status-widget-empty-content\"\n\t\t\t\ticon=\"icon-user-status\">\n\t\t\t\t{{ t('user_status', 'No recent status changes') }}\n\t\t\t</EmptyContent>\n\t\t</template>\n\t</DashboardWidget>\n</template>\n\n<script>\nimport { DashboardWidget, DashboardWidgetItem } from '@nextcloud/vue-dashboard'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport { loadState } from '@nextcloud/initial-state'\nimport moment from '@nextcloud/moment'\n\nexport default {\n\tname: 'Dashboard',\n\tcomponents: {\n\t\tAvatar,\n\t\tDashboardWidget,\n\t\tDashboardWidgetItem,\n\t\tEmptyContent,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstatuses: [],\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\titems() {\n\t\t\treturn this.statuses.map((item) => {\n\t\t\t\tconst icon = item.icon || ''\n\t\t\t\tlet message = item.message || ''\n\t\t\t\tif (message === '') {\n\t\t\t\t\tif (item.status === 'away') {\n\t\t\t\t\t\tmessage = t('user_status', 'Away')\n\t\t\t\t\t}\n\t\t\t\t\tif (item.status === 'dnd') {\n\t\t\t\t\t\tmessage = t('user_status', 'Do not disturb')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst status = item.icon !== '' ? `${icon} ${message}` : message\n\n\t\t\t\tlet subText\n\t\t\t\tif (item.icon === null && message === '' && item.timestamp === null) {\n\t\t\t\t\tsubText = ''\n\t\t\t\t} else if (item.icon === null && message === '' && item.timestamp !== null) {\n\t\t\t\t\tsubText = moment(item.timestamp, 'X').fromNow()\n\t\t\t\t} else if (item.timestamp !== null) {\n\t\t\t\t\tsubText = this.t('user_status', '{status}, {timestamp}', {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\ttimestamp: moment(item.timestamp, 'X').fromNow(),\n\t\t\t\t\t}, null, { escape: false, sanitize: false })\n\t\t\t\t} else {\n\t\t\t\t\tsubText = status\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tmainText: item.displayName,\n\t\t\t\t\tsubText,\n\t\t\t\t\tavatarUsername: item.userId,\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmounted() {\n\t\ttry {\n\t\t\tthis.statuses = loadState('user_status', 'dashboard_data')\n\t\t\tthis.loading = false\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n#user_status-widget-empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=630fd03c&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DashboardWidget',{attrs:{\"id\":\"user-status_panel\",\"items\":_vm.items,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('DashboardWidgetItem',{attrs:{\"main-text\":item.mainText,\"sub-text\":item.subText},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"item-avatar\",attrs:{\"size\":44,\"user\":item.avatarUsername,\"display-name\":item.mainText,\"show-user-status\":false,\"show-user-status-compact\":false}})]},proxy:true}],null,true)})]}},{key:\"empty-content\",fn:function(){return [_c('EmptyContent',{attrs:{\"id\":\"user_status-widget-empty-content\",\"icon\":\"icon-user-status\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'No recent status changes'))+\"\\n\\t\\t\")])]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate, translatePlural } from '@nextcloud/l10n'\nimport Dashboard from './views/Dashboard'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = translate\nVue.prototype.n = translatePlural\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tOCA.Dashboard.register('user_status', (el) => {\n\t\tconst View = Vue.extend(Dashboard)\n\t\tnew View({\n\t\t\tpropsData: {},\n\t\t}).$mount(el)\n\t})\n\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#user_status-widget-empty-content{text-align:center;margin-top:5vh}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/views/Dashboard.vue\"],\"names\":[],\"mappings\":\"AAqHA,kCACC,iBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#user_status-widget-empty-content {\\n\\ttext-align: center;\\n\\tmargin-top: 5vh;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 63;","__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\t63: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(70505); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","attrs","items","loading","scopedSlots","_u","key","fn","ref","item","mainText","subText","staticClass","avatarUsername","proxy","_v","_s","t","__webpack_nonce__","btoa","getRequestToken","Vue","translate","translatePlural","OC","OCA","document","addEventListener","Dashboard","register","el","propsData","$mount","___CSS_LOADER_EXPORT___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"user_status-dashboard.js?v=0fb16409ead6583c7c71","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue","webpack://nextcloud/./apps/user_status/src/views/Dashboard.vue?0926","webpack://nextcloud/./apps/user_status/src/views/Dashboard.vue?d681","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=template&id=b5c0335c&","webpack:///nextcloud/apps/user_status/src/dashboard.js","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<DashboardWidget id=\"user-status_panel\"\n\t\t:items=\"items\"\n\t\t:loading=\"loading\">\n\t\t<template #default=\"{ item }\">\n\t\t\t<DashboardWidgetItem :main-text=\"item.mainText\"\n\t\t\t\t:sub-text=\"item.subText\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar class=\"item-avatar\"\n\t\t\t\t\t\t:size=\"44\"\n\t\t\t\t\t\t:user=\"item.avatarUsername\"\n\t\t\t\t\t\t:display-name=\"item.mainText\"\n\t\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t\t:show-user-status-compact=\"false\" />\n\t\t\t\t</template>\n\t\t\t</DashboardWidgetItem>\n\t\t</template>\n\t\t<template #empty-content>\n\t\t\t<EmptyContent id=\"user_status-widget-empty-content\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<div class=\"icon-user-status\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('user_status', 'No recent status changes') }}\n\t\t\t</EmptyContent>\n\t\t</template>\n\t</DashboardWidget>\n</template>\n\n<script>\nimport { DashboardWidget, DashboardWidgetItem } from '@nextcloud/vue-dashboard'\nimport { loadState } from '@nextcloud/initial-state'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport moment from '@nextcloud/moment'\n\nexport default {\n\tname: 'Dashboard',\n\tcomponents: {\n\t\tAvatar,\n\t\tDashboardWidget,\n\t\tDashboardWidgetItem,\n\t\tEmptyContent,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstatuses: [],\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\titems() {\n\t\t\treturn this.statuses.map((item) => {\n\t\t\t\tconst icon = item.icon || ''\n\t\t\t\tlet message = item.message || ''\n\t\t\t\tif (message === '') {\n\t\t\t\t\tif (item.status === 'away') {\n\t\t\t\t\t\tmessage = t('user_status', 'Away')\n\t\t\t\t\t}\n\t\t\t\t\tif (item.status === 'dnd') {\n\t\t\t\t\t\tmessage = t('user_status', 'Do not disturb')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst status = item.icon !== '' ? `${icon} ${message}` : message\n\n\t\t\t\tlet subText\n\t\t\t\tif (item.icon === null && message === '' && item.timestamp === null) {\n\t\t\t\t\tsubText = ''\n\t\t\t\t} else if (item.icon === null && message === '' && item.timestamp !== null) {\n\t\t\t\t\tsubText = moment(item.timestamp, 'X').fromNow()\n\t\t\t\t} else if (item.timestamp !== null) {\n\t\t\t\t\tsubText = this.t('user_status', '{status}, {timestamp}', {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\ttimestamp: moment(item.timestamp, 'X').fromNow(),\n\t\t\t\t\t}, null, { escape: false, sanitize: false })\n\t\t\t\t} else {\n\t\t\t\t\tsubText = status\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tmainText: item.displayName,\n\t\t\t\t\tsubText,\n\t\t\t\t\tavatarUsername: item.userId,\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmounted() {\n\t\ttry {\n\t\t\tthis.statuses = loadState('user_status', 'dashboard_data')\n\t\t\tthis.loading = false\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n#user_status-widget-empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n\t.icon-user-status {\n\t\twidth: 64px;\n\t\theight: 64px;\n\t\tbackground-size: 64px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=b5c0335c&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DashboardWidget',{attrs:{\"id\":\"user-status_panel\",\"items\":_vm.items,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('DashboardWidgetItem',{attrs:{\"main-text\":item.mainText,\"sub-text\":item.subText},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"item-avatar\",attrs:{\"size\":44,\"user\":item.avatarUsername,\"display-name\":item.mainText,\"show-user-status\":false,\"show-user-status-compact\":false}})]},proxy:true}],null,true)})]}},{key:\"empty-content\",fn:function(){return [_c('EmptyContent',{attrs:{\"id\":\"user_status-widget-empty-content\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"icon-user-status\"})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'No recent status changes'))+\"\\n\\t\\t\")])]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate, translatePlural } from '@nextcloud/l10n'\nimport Dashboard from './views/Dashboard'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = translate\nVue.prototype.n = translatePlural\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tOCA.Dashboard.register('user_status', (el) => {\n\t\tconst View = Vue.extend(Dashboard)\n\t\tnew View({\n\t\t\tpropsData: {},\n\t\t}).$mount(el)\n\t})\n\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#user_status-widget-empty-content{text-align:center;margin-top:5vh}#user_status-widget-empty-content .icon-user-status{width:64px;height:64px;background-size:64px;filter:var(--background-invert-if-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/views/Dashboard.vue\"],\"names\":[],\"mappings\":\"AAuHA,kCACC,iBAAA,CACA,cAAA,CACA,oDACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,uCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#user_status-widget-empty-content {\\n\\ttext-align: center;\\n\\tmargin-top: 5vh;\\n\\t.icon-user-status {\\n\\t\\twidth: 64px;\\n\\t\\theight: 64px;\\n\\t\\tbackground-size: 64px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 63;","__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\t63: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(79434); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","attrs","items","loading","scopedSlots","_u","key","fn","ref","item","mainText","subText","staticClass","avatarUsername","proxy","_v","_s","t","__webpack_nonce__","btoa","getRequestToken","Vue","translate","translatePlural","OC","OCA","document","addEventListener","Dashboard","register","el","propsData","$mount","___CSS_LOADER_EXPORT___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/weather_status-weather-status.js b/dist/weather_status-weather-status.js
index a24cb5cd7b1..e26ac605613 100644
--- a/dist/weather_status-weather-status.js
+++ b/dist/weather_status-weather-status.js
@@ -1,3 +1,3 @@
/*! For license information please see weather_status-weather-status.js.LICENSE.txt */
-!function(){var M,n={93365:function(M,t,n){var u={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function e(M){var t=N(M);return n(t)}function N(M){if(!n.o(u,M)){var t=new Error("Cannot find module '"+M+"'");throw t.code="MODULE_NOT_FOUND",t}return u[M]}e.keys=function(){return Object.keys(u)},e.resolve=N,M.exports=e,e.id=93365},76149:function(M,n,u){"use strict";var e=u(20144),N=u(22200),A=u(26932),j=u(80351),i=u.n(j),D=u(9944),r=u(79440),L=u.n(r),g=u(56286),I=u.n(g),a=u(88408),y=u.n(a),s=u(74466),c=u.n(s),o=u(33521),T=u.n(o),w=u(41009),C=u.n(w),z=u(4820),x=u(79753);function E(M,t,n,u,e,N,A){try{var j=M[N](A),i=j.value}catch(M){return void n(M)}j.done?t(i):Promise.resolve(i).then(u,e)}function l(M){return function(){var t=this,n=arguments;return new Promise((function(u,e){var N=M.apply(t,n);function A(M){E(N,u,e,A,j,"next",M)}function j(M){E(N,u,e,A,j,"throw",M)}A(void 0)}))}}var h=function(){var M=l(regeneratorRuntime.mark((function M(t,n){var u,e;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return u=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.put(u,{address:"",lat:t,lon:n});case 3:return e=M.sent,M.abrupt("return",e.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t,n){return M.apply(this,arguments)}}(),d=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.put(n,{address:t,lat:null,lon:null});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}(),O=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/mode"),M.next=3,z.default.put(n,{mode:t});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}(),Q=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/use-personal"),M.next=3,z.default.put(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),S=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),m=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/forecast"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),k=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/favorites"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),Y=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/favorites"),M.next=3,z.default.put(n,{favorites:t});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}();function p(M,t,n,u,e,N,A){try{var j=M[N](A),i=j.value}catch(M){return void n(M)}j.done?t(i):Promise.resolve(i).then(u,e)}function v(M){return function(){var t=this,n=arguments;return new Promise((function(u,e){var N=M.apply(t,n);function A(M){p(N,u,e,A,j,"next",M)}function j(M){p(N,u,e,A,j,"throw",M)}A(void 0)}))}}var f={clearsky_day:{icon:"icon-clearsky-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} clear sky later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} clear sky",{temperature:M,unit:n})}},clearsky_night:{icon:"icon-clearsky-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} clear sky later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} clear sky",{temperature:M,unit:n})}},cloudy:{icon:"icon-cloudy",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} cloudy",{temperature:M,unit:n})}},fair_day:{icon:"icon-fair-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} fair weather later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} fair weather",{temperature:M,unit:n})}},fair_night:{icon:"icon-fair-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} fair weather later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} fair weather",{temperature:M,unit:n})}},partlycloudy_day:{icon:"icon-partlycloudy-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} partly cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} partly cloudy",{temperature:M,unit:n})}},partlycloudy_night:{icon:"icon-partlycloudy-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} partly cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} partly cloudy",{temperature:M,unit:n})}},fog:{icon:"icon-fog",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} foggy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} foggy",{temperature:M,unit:n})}},lightrain:{icon:"icon-lightrain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall",{temperature:M,unit:n})}},rain:{icon:"icon-rain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall",{temperature:M,unit:n})}},heavyrain:{icon:"icon-heavyrain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall",{temperature:M,unit:n})}},rainshowers_day:{icon:"icon-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall showers",{temperature:M,unit:n})}},rainshowers_night:{icon:"icon-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall showers",{temperature:M,unit:n})}},lightrainshowers_day:{icon:"icon-light-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall showers",{temperature:M,unit:n})}},lightrainshowers_night:{icon:"icon-light-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall showers",{temperature:M,unit:n})}},heavyrainshowers_day:{icon:"icon-heavy-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall showers",{temperature:M,unit:n})}},heavyrainshowers_night:{icon:"icon-heavy-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall showers",{temperature:M,unit:n})}}},U={name:"App",components:{Actions:L(),ActionButton:I(),ActionInput:y(),ActionLink:c(),ActionSeparator:T(),ActionText:C()},props:{inline:{type:Boolean,default:!1}},data:function(){return{locale:(0,D.getLocale)(),loading:!0,errorMessage:"",mode:1,address:null,lat:null,lon:null,offset:5,forecasts:[],loop:null,favorites:[],showFavorites:!1}},computed:{useFahrenheitLocale:function(){return["en_US","en_MH","en_FM","en_PW","en_KY","en_LR"].includes(this.locale)},temperatureUnit:function(){return this.useFahrenheitLocale?"°F":"°C"},locationText:function(){return t("weather_status","More weather for {adr}",{adr:this.address})},temperature:function(){return this.getTemperature(this.forecasts,0)},futureTemperature:function(){return this.getTemperature(this.forecasts,this.offset)},weatherCode:function(){return this.getWeatherCode(this.forecasts,0)},futureWeatherCode:function(){return this.getWeatherCode(this.forecasts,this.offset)},weatherIcon:function(){return this.getWeatherIcon(this.weatherCode,this.loading)},futureWeatherIcon:function(){return this.getWeatherIcon(this.futureWeatherCode,this.loading)},currentWeatherMessage:function(){return this.loading?t("weather_status","Loading weather"):this.errorMessage?this.errorMessage:this.getWeatherMessage(this.weatherCode,this.temperature)},forecastMessage:function(){return this.loading?t("weather_status","Loading weather"):this.getWeatherMessage(this.futureWeatherCode,this.futureTemperature,!0)},weatherLinkTarget:function(){return"https://www.windy.com/-Rain-thunder-rain?rain,"+this.lat+","+this.lon+",11"},gotWeather:function(){return this.address&&!this.errorMessage},addRemoveFavoriteIcon:function(){return this.currentAddressIsFavorite?"icon-starred":"icon-star"},addRemoveFavoriteText:function(){return this.currentAddressIsFavorite?t("weather_status","Remove from favorites"):t("weather_status","Add as favorite")},currentAddressIsFavorite:function(){var M=this;return this.favorites.find((function(t){return t===M.address}))},toggleFavoritesIcon:function(){return this.showFavorites?"icon-triangle-s":"icon-triangle-e"},displayedFavorites:function(){return this.showFavorites?this.favorites:[]}},mounted:function(){this.initWeatherStatus()},methods:{initWeatherStatus:function(){var M=this;return v(regeneratorRuntime.mark((function n(){var u,e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,S();case 3:return u=n.sent,M.lat=u.lat,M.lon=u.lon,M.address=u.address,M.mode=u.mode,1===M.mode?M.askBrowserLocation():2===M.mode&&M.startLoop(),n.next=11,k();case 11:e=n.sent,M.favorites=e,n.next=22;break;case 15:if(n.prev=15,n.t0=n.catch(0),"ECONNABORTED"!==(null===n.t0||void 0===n.t0?void 0:n.t0.code)){n.next=20;break}return console.info("The weather status request was cancelled because the user navigates."),n.abrupt("return");case 20:n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error getting the weather status information.")),console.error(n.t0);case 22:case"end":return n.stop()}}),n,null,[[0,15]])})))()},startLoop:function(){var M=this;clearInterval(this.loop),this.lat&&this.lon?(this.loop=setInterval((function(){return M.getForecast()}),36e5),this.getForecast()):this.loading=!1},askBrowserLocation:function(){var M=this;this.loading=!0,this.errorMessage="",navigator.geolocation&&window.isSecureContext?navigator.geolocation.getCurrentPosition((function(t){console.debug("browser location success"),M.lat=t.coords.latitude,M.lon=t.coords.longitude,M.saveMode(1),M.mode=1,M.saveLocation(M.lat,M.lon)}),(function(t){console.debug("location permission refused"),console.debug(t),M.saveMode(2),M.mode=2,M.lat&&M.lon?M.startLoop():M.usePersonalAddress()})):(console.debug("no secure context!"),this.saveMode(2),this.mode=2,this.startLoop())},getForecast:function(){var M=this;return v(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,m();case 3:M.forecasts=n.sent,n.next=10;break;case 6:n.prev=6,n.t0=n.catch(0),M.errorMessage=t("weather_status","No weather information found"),console.debug(n.t0);case 10:M.loading=!1;case 11:case"end":return n.stop()}}),n,null,[[0,6]])})))()},setAddress:function(M){var n=this;return v(regeneratorRuntime.mark((function u(){var e;return regeneratorRuntime.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return n.loading=!0,n.errorMessage="",u.prev=2,u.next=5,d(M);case 5:(e=u.sent).success?(n.lat=e.lat,n.lon=e.lon,n.address=e.address,n.mode=2,n.startLoop()):(n.errorMessage=t("weather_status","Location not found"),n.loading=!1),u.next=13;break;case 9:u.prev=9,u.t0=u.catch(2),u.t0.response&&401===u.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error setting the location address.")),n.loading=!1;case 13:case"end":return u.stop()}}),u,null,[[2,9]])})))()},saveLocation:function(M,n){var u=this;return v(regeneratorRuntime.mark((function e(){var N;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,h(M,n);case 3:N=e.sent,u.address=N.address,u.startLoop(),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(0),e.t0.response&&401===e.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error setting the location.")),console.debug(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,8]])})))()},saveMode:function(M){return v(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,O(M);case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error saving the mode.")),console.debug(n.t0);case 9:case"end":return n.stop()}}),n,null,[[0,5]])})))()},onBrowserLocationClick:function(){this.askBrowserLocation()},usePersonalAddress:function(){var M=this;return v(regeneratorRuntime.mark((function n(){var u;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return M.loading=!0,n.prev=1,n.next=4,Q();case 4:u=n.sent,M.lat=u.lat,M.lon=u.lon,M.address=u.address,M.mode=2,M.startLoop(),n.next=17;break;case 12:n.prev=12,n.t0=n.catch(1),n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error using personal address.")),console.debug(n.t0),M.loading=!1;case 17:case"end":return n.stop()}}),n,null,[[1,12]])})))()},onAddressSubmit:function(){var M=this.$refs.addressInput.$el.querySelector('input[type="text"]').value;this.setAddress(M)},getLocalizedTemperature:function(M){return this.useFahrenheitLocale?1.8*M+32:M},onAddRemoveFavoriteClick:function(){var M=this.currentAddressIsFavorite;if(M){var t=this.favorites.indexOf(M);-1!==t&&this.favorites.splice(t,1)}else this.favorites.push(this.address);Y(this.favorites)},onFavoriteClick:function(M,t){if(M.target.classList.contains("action-button__icon")){var n=this.favorites.indexOf(t);-1!==n&&this.favorites.splice(n,1),Y(this.favorites)}else t!==this.address&&this.setAddress(t)},formatTime:function(M){return i()(M).format("LT")},getTemperature:function(M){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return M.length>t?M[t].data.instant.details.air_temperature:""},getWeatherCode:function(M){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return M.length>t?M[t].data.next_1_hours.summary.symbol_code:""},getWeatherIcon:function(M,t){return t?"icon-loading-small":M&&M in f?f[M].icon:"icon-fair-day"},getWeatherMessage:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return M&&M in f?f[M].text(Math.round(this.getLocalizedTemperature(n)),this.temperatureUnit,u):t("weather_status","Set location for weather")}}},b=U,Z=u(93379),G=u.n(Z),W=u(7795),B=u.n(W),P=u(90569),_=u.n(P),R=u(3565),F=u.n(R),J=u(19216),H=u.n(J),V=u(44589),X=u.n(V),q=u(62554),$={};$.styleTagTransform=X(),$.setAttributes=F(),$.insert=_().bind(null,"head"),$.domAPI=B(),$.insertStyleElement=H(),G()(q.Z,$),q.Z&&q.Z.locals&&q.Z.locals;var K=(0,u(51900).Z)(b,(function(){var M=this,t=M.$createElement,n=M._self._c||t;return n("li",{class:{inline:M.inline}},[n("div",{attrs:{id:"weather-status-menu-item"}},[n("Actions",{staticClass:"weather-status-menu-item__subheader",attrs:{"default-icon":M.weatherIcon,"menu-title":M.currentWeatherMessage}},[M.gotWeather?n("ActionText",{attrs:{icon:M.futureWeatherIcon}},[M._v("\n\t\t\t\t"+M._s(M.forecastMessage)+"\n\t\t\t")]):M._e(),M._v(" "),M.gotWeather?n("ActionLink",{attrs:{icon:"icon-address",target:"_blank",href:M.weatherLinkTarget,"close-after-click":!0}},[M._v("\n\t\t\t\t"+M._s(M.locationText)+"\n\t\t\t")]):M._e(),M._v(" "),M.gotWeather?n("ActionButton",{attrs:{icon:M.addRemoveFavoriteIcon},on:{click:M.onAddRemoveFavoriteClick}},[M._v("\n\t\t\t\t"+M._s(M.addRemoveFavoriteText)+"\n\t\t\t")]):M._e(),M._v(" "),M.address&&!M.errorMessage?n("ActionSeparator"):M._e(),M._v(" "),n("ActionButton",{attrs:{icon:"icon-crosshair","close-after-click":!0},on:{click:M.onBrowserLocationClick}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Detect location"))+"\n\t\t\t")]),M._v(" "),n("ActionInput",{ref:"addressInput",attrs:{disabled:!1,icon:"icon-rename",type:"text",value:""},on:{submit:M.onAddressSubmit}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Set custom address"))+"\n\t\t\t")]),M._v(" "),n("ActionButton",{directives:[{name:"show",rawName:"v-show",value:M.favorites.length>0,expression:"favorites.length > 0"}],attrs:{icon:M.toggleFavoritesIcon},on:{click:function(t){M.showFavorites=!M.showFavorites}}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Favorites"))+"\n\t\t\t")]),M._v(" "),M._l(M.displayedFavorites,(function(t){return n("ActionButton",{key:t,attrs:{icon:"icon-starred"},on:{click:function(n){return M.onFavoriteClick(n,t)}}},[M._v("\n\t\t\t\t"+M._s(t)+"\n\t\t\t")])}))],2)],1)])}),[],!1,null,null,null).exports;u.nc=btoa((0,N.getRequestToken)()),e.default.prototype.t=t,document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("weather",(function(M){return new(e.default.extend(K))({propsData:{inline:!0}}).$mount(M)}))}))},62554:function(M,t,n){"use strict";var u=n(87537),e=n.n(u),N=n(23645),A=n.n(N),j=n(61667),i=n.n(j),D=new URL(n(87320),n.b),r=new URL(n(3953),n.b),L=new URL(n(71211),n.b),g=new URL(n(87760),n.b),I=new URL(n(30570),n.b),a=new URL(n(74351),n.b),y=new URL(n(26625),n.b),s=new URL(n(16767),n.b),c=new URL(n(53748),n.b),o=new URL(n(26320),n.b),T=new URL(n(26157),n.b),w=new URL(n(37837),n.b),C=new URL(n(94776),n.b),z=new URL(n(14593),n.b),x=new URL(n(53107),n.b),E=new URL(n(97251),n.b),l=new URL(n(18138),n.b),h=new URL(n(53254),n.b),d=new URL(n(50663),n.b),O=new URL(n(75322),n.b),Q=A()(e()),S=i()(D),m=i()(r),k=i()(L),Y=i()(g),p=i()(I),v=i()(a),f=i()(y),U=i()(s),b=i()(c),Z=i()(o),G=i()(T),W=i()(w),B=i()(C),P=i()(z),_=i()(x),R=i()(E),F=i()(l),J=i()(h),H=i()(d),V=i()(O);Q.push([M.id,".icon-weather-status{background-image:url("+S+")}body.theme--dark .icon-weather-status{background-image:url("+m+")}.icon-clearsky-day{background-image:url("+k+")}.icon-clearsky-night{background-image:url("+Y+")}.icon-cloudy{background-image:url("+p+")}.icon-fair-day{background-image:url("+v+")}.icon-fair-night{background-image:url("+f+")}.icon-partlycloudy-day{background-image:url("+U+")}.icon-partlycloudy-night{background-image:url("+b+")}.icon-fog{background-image:url("+Z+")}.icon-lightrain{background-image:url("+G+")}.icon-rain{background-image:url("+W+")}.icon-heavyrain{background-image:url("+B+")}.icon-light-rainshowers-day{background-image:url("+P+")}.icon-light-rainshowers-night{background-image:url("+_+")}.icon-rainshowers-day{background-image:url("+R+")}.icon-rainshowers-night{background-image:url("+F+")}.icon-heavy-rainshowers-day{background-image:url("+J+")}.icon-heavy-rainshowers-night{background-image:url("+H+")}.icon-crosshair{background-color:var(--color-main-text);padding:0 !important;mask:url("+V+") no-repeat;mask-size:18px 18px;mask-position:center;-webkit-mask:url("+V+") no-repeat;-webkit-mask-size:18px 18px;-webkit-mask-position:center;min-width:44px !important;min-height:44px !important}li:not(.inline) .weather-status-menu-item__header{display:block;align-items:center;color:var(--color-main-text);padding:10px 12px 5px 12px;box-sizing:border-box;opacity:1;white-space:nowrap;width:100%;text-align:center;max-width:250px;text-overflow:ellipsis;min-width:175px}li:not(.inline) .weather-status-menu-item__subheader{width:100%}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon{background-color:var(--color-main-background);background-size:16px;border:0;border-radius:0;font-weight:normal;padding-left:40px}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:hover,li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:focus{box-shadow:inset 4px 0 var(--color-primary-element)}.inline .weather-status-menu-item__subheader{width:100%}.inline .weather-status-menu-item__subheader .trigger>.icon{background-size:16px;border:0;border-radius:var(--border-radius-pill);font-weight:normal;padding-left:40px}.inline .weather-status-menu-item__subheader .trigger>.icon.icon-loading-small::after{left:21px}li{list-style-type:none}","",{version:3,sources:["webpack://./apps/weather_status/src/App.vue"],names:[],mappings:"AAwgBA,qBACC,wDAAA,CAED,sCACC,wDAAA,CAED,mBACC,wDAAA,CAED,qBACC,wDAAA,CAED,aACC,wDAAA,CAED,eACC,wDAAA,CAED,iBACC,wDAAA,CAED,uBACC,wDAAA,CAED,yBACC,wDAAA,CAED,UACC,wDAAA,CAED,gBACC,yDAAA,CAED,WACC,yDAAA,CAED,gBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,sBACC,yDAAA,CAED,wBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,gBACI,uCAAA,CACA,oBAAA,CACA,uDAAA,CACA,mBAAA,CACA,oBAAA,CACA,+DAAA,CACA,2BAAA,CACA,4BAAA,CACA,yBAAA,CACA,0BAAA,CAIH,kDACC,aAAA,CACA,kBAAA,CACA,4BAAA,CACA,0BAAA,CACA,qBAAA,CACA,SAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,qDACC,UAAA,CAEA,oEACC,6CAAA,CACA,oBAAA,CACA,QAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CAEA,oJAEC,mDAAA,CAMJ,6CACC,UAAA,CAEA,4DACC,oBAAA,CACA,QAAA,CACA,uCAAA,CACA,kBAAA,CACA,iBAAA,CAGC,sFACC,SAAA,CAMJ,GACC,oBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.icon-weather-status {\n\tbackground-image: url('./../img/app-dark.svg');\n}\nbody.theme--dark .icon-weather-status {\n\tbackground-image: url('./../img/app.svg');\n}\n.icon-clearsky-day {\n\tbackground-image: url('./../img/sun.svg');\n}\n.icon-clearsky-night {\n\tbackground-image: url('./../img/moon.svg');\n}\n.icon-cloudy {\n\tbackground-image: url('./../img/cloud-cloud.svg');\n}\n.icon-fair-day {\n\tbackground-image: url('./../img/sun-small-cloud.svg');\n}\n.icon-fair-night {\n\tbackground-image: url('./../img/moon-small-cloud.svg');\n}\n.icon-partlycloudy-day {\n\tbackground-image: url('./../img/sun-cloud.svg');\n}\n.icon-partlycloudy-night {\n\tbackground-image: url('./../img/moon-cloud.svg');\n}\n.icon-fog {\n\tbackground-image: url('./../img/fog.svg');\n}\n.icon-lightrain {\n\tbackground-image: url('./../img/light-rain.svg');\n}\n.icon-rain {\n\tbackground-image: url('./../img/rain.svg');\n}\n.icon-heavyrain {\n\tbackground-image: url('./../img/heavy-rain.svg');\n}\n.icon-light-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\n}\n.icon-light-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\n}\n.icon-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-rain.svg');\n}\n.icon-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-rain.svg');\n}\n.icon-heavy-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\n}\n.icon-heavy-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\n}\n.icon-crosshair {\n background-color: var(--color-main-text);\n padding: 0 !important;\n mask: url(./../img/cross.svg) no-repeat;\n mask-size: 18px 18px;\n mask-position: center;\n -webkit-mask: url(./../img/cross.svg) no-repeat;\n -webkit-mask-size: 18px 18px;\n -webkit-mask-position: center;\n min-width: 44px !important;\n min-height: 44px !important;\n}\n\nli:not(.inline) .weather-status-menu-item {\n\t&__header {\n\t\tdisplay: block;\n\t\talign-items: center;\n\t\tcolor: var(--color-main-text);\n\t\tpadding: 10px 12px 5px 12px;\n\t\tbox-sizing: border-box;\n\t\topacity: 1;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tmax-width: 250px;\n\t\ttext-overflow: ellipsis;\n\t\tmin-width: 175px;\n\t}\n\n\t&__subheader {\n\t\twidth: 100%;\n\n\t\t.trigger > .icon {\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-size: 16px;\n\t\t\tborder: 0;\n\t\t\tborder-radius: 0;\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 40px;\n\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.inline .weather-status-menu-item__subheader {\n\twidth: 100%;\n\n\t.trigger > .icon {\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: normal;\n\t\tpadding-left: 40px;\n\n\t\t&.icon-loading-small {\n\t\t\t&::after {\n\t\t\t\tleft: 21px;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n"],sourceRoot:""}]),t.Z=Q},87320:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0MC4yMiAyMTAuMDRjMzguNDggMCA2OS43OC0zMS4zIDY5Ljc4LTY5Ljc4cy0zMS4zLTY5Ljc4LTY5Ljc4LTY5Ljc4Yy0zOC40NyAwLTY5Ljc4IDMxLjMtNjkuNzggNjkuNzhzMzEuMyA2OS43OCA2OS43OCA2OS43OE0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU0xMzIuOCAyNDEuNjN2MzEuNDZhNy40MyA3LjQzIDAgMDAxNC44NSAwdi0zMS40NmE3LjQzIDcuNDMgMCAwMC0xNC44NSAwTTg5LjU0IDU5LjkxYTcuNDMgNy40MyAwIDAwNi40My0xMS4xNEw4MC4yNCAyMS41M2E3LjQzIDcuNDMgMCAwMC0xMi44NiA3LjQzTDgzLjEgNTYuMmE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU0xODcuMiAyMjEuNjJhNy40MyA3LjQzIDAgMDAtMi43MiAxMC4xNEwyMDAuMiAyNTlhNy40MiA3LjQyIDAgMTAxMi44Ni03LjQybC0xNS43My0yNy4yNWE3LjQzIDcuNDMgMCAwMC0xMC4xNS0yLjcxTTE4Ljc2IDcwLjE0YTcuNDMgNy40MyAwIDAwMi43MiAxMC4xNUw0OC43MiA5NmE3LjQyIDcuNDIgMCAxMDcuNDMtMTIuODZMMjguOSA2Ny40MmE3LjQzIDcuNDMgMCAwMC0xMC4xNCAyLjcyTTI1OC45NyAyMDAuMjRsLTI3LjI1LTE1LjczYTcuNDMgNy40MyAwIDAwLTcuNDIgMTIuODdsMjcuMjQgMTUuNzNhNy40IDcuNCAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1TTQ2LjI4IDE0MC4yN2MwLTQuMS0zLjMzLTcuNDItNy40My03LjQySDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZjNC4xIDAgNy40My0zLjMzIDcuNDMtNy40M00yNzMuMDUgMTMyLjg1aC0zMS40NmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZhNy40MyA3LjQzIDAgMDAwLTE0Ljg1TTQ4LjczIDE4NC41MUwyMS41IDIwMC4yNGE3LjQzIDcuNDMgMCAxMDcuNDIgMTIuODZsMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40My0xMi44Nk0yNTEuNTQgNjcuNDJMMjI0LjMgODMuMTVBNy40MyA3LjQzIDAgMDAyMzEuNzIgOTZsMjcuMjQtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40Mi0xMi44Nk04My4xIDIyNC4zNGwtMTUuNzMgMjcuMjRhNy40MyA3LjQzIDAgMDAxMi44NyA3LjQzbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEyLjg3LTcuNDJNMTg3LjIgNTguOTFhNy40IDcuNCAwIDAwMTAuMTQtMi43MWwxNS43My0yNy4yNWE3LjQzIDcuNDMgMCAxMC0xMi44Ni03LjQybC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDIuNzEgMTAuMTQiLz48L3N2Zz4="},3953:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTE0MC4yMiAyMTAuMDRjMzguNDggMCA2OS43OC0zMS4zIDY5Ljc4LTY5Ljc4cy0zMS4zLTY5Ljc4LTY5Ljc4LTY5Ljc4Yy0zOC40NyAwLTY5Ljc4IDMxLjMtNjkuNzggNjkuNzhzMzEuMyA2OS43OCA2OS43OCA2OS43OE0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU0xMzIuOCAyNDEuNjN2MzEuNDZhNy40MyA3LjQzIDAgMDAxNC44NSAwdi0zMS40NmE3LjQzIDcuNDMgMCAwMC0xNC44NSAwTTg5LjU0IDU5LjkxYTcuNDMgNy40MyAwIDAwNi40My0xMS4xNEw4MC4yNCAyMS41M2E3LjQzIDcuNDMgMCAwMC0xMi44NiA3LjQzTDgzLjEgNTYuMmE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU0xODcuMiAyMjEuNjJhNy40MyA3LjQzIDAgMDAtMi43MiAxMC4xNEwyMDAuMiAyNTlhNy40MiA3LjQyIDAgMTAxMi44Ni03LjQybC0xNS43My0yNy4yNWE3LjQzIDcuNDMgMCAwMC0xMC4xNS0yLjcxTTE4Ljc2IDcwLjE0YTcuNDMgNy40MyAwIDAwMi43MiAxMC4xNUw0OC43MiA5NmE3LjQyIDcuNDIgMCAxMDcuNDMtMTIuODZMMjguOSA2Ny40MmE3LjQzIDcuNDMgMCAwMC0xMC4xNCAyLjcyTTI1OC45NyAyMDAuMjRsLTI3LjI1LTE1LjczYTcuNDMgNy40MyAwIDAwLTcuNDIgMTIuODdsMjcuMjQgMTUuNzNhNy40IDcuNCAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1TTQ2LjI4IDE0MC4yN2MwLTQuMS0zLjMzLTcuNDItNy40My03LjQySDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZjNC4xIDAgNy40My0zLjMzIDcuNDMtNy40M00yNzMuMDUgMTMyLjg1aC0zMS40NmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZhNy40MyA3LjQzIDAgMDAwLTE0Ljg1TTQ4LjczIDE4NC41MUwyMS41IDIwMC4yNGE3LjQzIDcuNDMgMCAxMDcuNDIgMTIuODZsMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40My0xMi44Nk0yNTEuNTQgNjcuNDJMMjI0LjMgODMuMTVBNy40MyA3LjQzIDAgMDAyMzEuNzIgOTZsMjcuMjQtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40Mi0xMi44Nk04My4xIDIyNC4zNGwtMTUuNzMgMjcuMjRhNy40MyA3LjQzIDAgMDAxMi44NyA3LjQzbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEyLjg3LTcuNDJNMTg3LjIgNTguOTFhNy40IDcuNCAwIDAwMTAuMTQtMi43MWwxNS43My0yNy4yNWE3LjQzIDcuNDMgMCAxMC0xMi44Ni03LjQybC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDIuNzEgMTAuMTQiLz48L2c+PC9zdmc+"},30570:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjk0LjcxIiBoZWlnaHQ9IjE4OS4xNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTA5LjAzIDExOS4yYzAtMjkuMTkgMjYuNC01Mi45NCA1OC44Ni01Mi45NCA3LjAyIDAgMTMuODEgMS4wOCAyMC4yOSAzLjIyYTU0LjM2IDU0LjM2IDAgMDEyNS4wNC0xNC4zNkE1MS45NSA1MS45NSAwIDAwMTY2LjkgMjYuM2MtNC4yMSAwLTguNDEuNTItMTIuNDggMS41Mi0zIC43NC02LjE1LS40NC03LjktMi45OWE1Ny4xMyA1Ny4xMyAwIDAwLTg1LjU4LTkuODQgNTYuOTUgNTYuOTUgMCAwMC0xOC4zMyAzNi42NSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjY5LjM0LTEuMzguNjgtMi4wNSAxLjA2LS42Mi4zNC0xLjI5LjYtMS45OC43NkE0NC4zIDQ0LjMgMCAwMDkuOCA3NC42NmE0My4yIDQzLjIgMCAwMC05LjggMjcuNThjMCAyNC4xOSAxOS43OCA0My44NiA0NC4xIDQzLjg2aDUyLjk2YTQ4LjA0IDQ4LjA0IDAgMDExMi4wMy0yNC42M2MtLjAzLS43Ni0uMDUtMS41MS0uMDUtMi4yNyIgZmlsbD0iIzYxYzllNyIvPjxwYXRoIGQ9Ik0yNjkuMjUgMTIwLjRhNy40MyA3LjQzIDAgMDEtNC40Ni05LjUgMjguODUgMjguODUgMCAwMDEuNzItOS44MmMwLTE0LjEtMTAuMjctMjYuMTYtMjQuNy0zMC45YTQzLjYzIDQzLjYzIDAgMDAtMjEuMDgtMS41NWMtOS45IDEuNjgtMTguNzQgNi43LTI0LjUgMTQuMTJhNy40MyA3LjQzIDAgMDEtOC44IDIuMjYgNDkuMTIgNDkuMTIgMCAwMC0xOS41My0zLjk2Yy0yNC4yNyAwLTQ0LjAyIDE3LjEtNDQuMDIgMzguMSAwIDEuMzQuMDkgMi43My4yNiA0LjFhNy4zOSA3LjM5IDAgMDEtMi4yMyA2LjI2IDM0LjMgMzQuMyAwIDAwLTkuNzEgMTYuNTMgMzEuMDMgMzEuMDMgMCAwMC4wMiAxNC44NWM0IDE2LjEzIDIwLjYyIDI4LjI3IDQwLjQ2IDI4LjI3aDEwMC42M2MyMi44MiAwIDQxLjM4LTE2LjA0IDQxLjM4LTM1Ljc2IDAtMTQuNDUtOS45OS0yNy40MS0yNS40NC0zMyIgZmlsbD0iIzQ0OTJhOCIvPjwvc3ZnPg=="},75322:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiLz48cGF0aCBkPSJNMjIgMTJoLTRNNiAxMkgyTTEyIDZWMk0xMiAyMnYtNCIvPjwvc3ZnPg=="},26320:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU0LjQ0IiBoZWlnaHQ9IjI1Ni4zOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjMzLjMgNzEuNThhNy40MiA3LjQyIDAgMDEtMi42My0zLjg0IDU1LjUgNTUuNSAwIDAwLTUzLjA4LTM5Ljg3Yy00LjUgMC05IC41NS0xMy4zNSAxLjYzLTMgLjc0LTYuMTUtLjQ1LTcuOS0zQTYxLjEgNjEuMSAwIDAwMTA2IC4wMSA2MC44OSA2MC44OSAwIDAwNjQuODMgMTZhNjAuODcgNjAuODcgMCAwMC0xOS42IDM5LjIgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNC0xLjQ3LjcyLTIuMiAxLjEyLS42MS4zNS0xLjI4LjYtMS45Ny43NUE0Ny40OCA0Ny40OCAwIDAwMTAuNSA3OS4zNyA0Ni4zIDQ2LjMgMCAwMDAgMTA4LjkyYzAgMjUuOTEgMjEuMiA0NyA0Ny4yNiA0N0gyMDQuNmMyNi4wNiAwIDQ3LjI3LTIxLjA5IDQ3LjI3LTQ3YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0TTIzMS4zMiAxODcuOTFjMC00LjEtMy4zMy03LjQzLTcuNDMtNy40M0gyOC44N2E3LjQyIDcuNDIgMCAxMDAgMTQuODZoMTk1LjAyYzQuMSAwIDcuNDMtMy4zNCA3LjQzLTcuNDNNMjEzLjE0IDI0MS41NEgxOC4xMmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMTk1LjAyYTcuNDIgNy40MiAwIDEwMC0xNC44NU02Mi4yOCAyMTEuNDNhNy40MiA3LjQyIDAgMTAwIDE0Ljg1aDcxLjQ3YTcuNDMgNy40MyAwIDAwMC0xNC44NUg2Mi4yOE0yNDcgMjExLjQzaC03MS40OGE3LjQyIDcuNDIgMCAxMDAgMTQuODVIMjQ3YTcuNDMgNy40MyAwIDAwMC0xNC44NSIvPjwvZz48L3N2Zz4="},94776:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxLjg4IiBoZWlnaHQ9IjI1OC42NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjUxLjg1IDEwOC45YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0IDcuNDMgNy40MyAwIDAxLTIuNjMtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzUgMS42Mi0zIC43NC02LjE1LS40NS03LjktM0E2MS4xIDYxLjEgMCAwMDEwNiAwYTYwLjg5IDYwLjg5IDAgMDAtNDEuMTggMTUuOTcgNjAuODcgNjAuODcgMCAwMC0xOS42IDM5LjIgNy40MyA3LjQzIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42MS4zNC0xLjI4LjYtMS45Ny43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjNBNDYuMyA0Ni4zIDAgMDAtLjAxIDEwOC45YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNiA0N0gyMDQuNmMyNi4wNyAwIDQ3LjI3LTIxLjA4IDQ3LjI3LTQ3IiBmaWxsPSIjNDQ5MmE4Ii8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTY2LjY2IDIyMy40NGE3LjQyIDcuNDIgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MiA3LjQyIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xMDcuNCAyNTguNjJhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04LjkzLTI5LjE4YTcuNDIgNy40MiAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU5LjIyIDIxMy4wNmE3LjQzIDcuNDMgMCAwMC00LjkzIDkuMjhsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAxMDE0LjItNC4zNUwxNjguNSAyMThhNy40MyA3LjQzIDAgMDAtOS4yNy00LjkzTTEyOC44NCAyMjMuNDRhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04LjkzLTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMTkxLjAzIDIyMy40NGE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThBNy40MiA3LjQyIDAgMTAxNzUgMTg5bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNiIvPjwvZz48L3N2Zz4="},26157:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjk0LjcxIiBoZWlnaHQ9IjI1OC41NyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMTA5LjA0IDExOS4xOGMwLTI5LjIgMjYuNC01Mi45NSA1OC44Ny01Mi45NSA3IDAgMTMuOCAxLjA4IDIwLjI4IDMuMjJhNTQuMzIgNTQuMzIgMCAwMTI1LjA0LTE0LjM1IDUxLjkzIDUxLjkzIDAgMDAtNDYuMzItMjguODNjLTQuMjEgMC04LjQxLjUxLTEyLjQ3IDEuNTItMyAuNzUtNi4xNi0uNDUtNy45MS0zQTU3LjE1IDU3LjE1IDAgMDA5OS40Ni4wMmMtMTQuMyAwLTI3Ljk3IDUuMzEtMzguNTEgMTQuOTVhNTYuOTMgNTYuOTMgMCAwMC0xOC4zMyAzNi42NSA3LjQzIDcuNDMgMCAwMS00LjIgNmMtLjY4LjMyLTEuMzcuNjgtMi4wNSAxLjA1LS42Mi4zNS0xLjI5LjYtMS45OC43NUE0NC4zIDQ0LjMgMCAwMDkuOCA3NC42NCA0My4yIDQzLjIgMCAwMDAgMTAyLjJjMCAyNC4xOCAxOS43OCA0My44NiA0NC4xIDQzLjg2aDUyLjk2YTQ4LjA0IDQ4LjA0IDAgMDExMi4wMy0yNC42M2MtLjAzLS43Ni0uMDUtMS41MS0uMDUtMi4yNk02NC45OSAyNTguNTlhNy40NCA3LjQ0IDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMTI3LjE3IDI1OC41OWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xODkuMzYgMjU4LjU5YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2Ii8+PC9nPjxwYXRoIGQ9Ik0yNjkuMjYgMTIwLjQyYTcuNDMgNy40MyAwIDAxLTQuNDYtOS41IDI4Ljg2IDI4Ljg2IDAgMDAxLjczLTkuODJjMC0xNC4xLTEwLjI4LTI2LjE1LTI0LjctMzAuOTFhNDMuNTcgNDMuNTcgMCAwMC0yMS4wOS0xLjU1Yy05LjkgMS42OS0xOC43NCA2LjctMjQuNDkgMTQuMTJhNy40MyA3LjQzIDAgMDEtOC44IDIuMjggNDkuMTIgNDkuMTIgMCAwMC0xOS41NC0zLjk2Yy0yNC4yNyAwLTQ0LjAyIDE3LjA5LTQ0LjAyIDM4LjA5IDAgMS4zNS4wOSAyLjczLjI2IDQuMWE3LjQzIDcuNDMgMCAwMS0yLjIzIDYuMjYgMzQuMjEgMzQuMjEgMCAwMC05LjcxIDE2LjUzIDMxLjAzIDMxLjAzIDAgMDAuMDMgMTQuODVjNCAxNi4xMyAyMC42MSAyOC4yNyA0MC40NSAyOC4yN2gxMDAuNjNjMjIuODIgMCA0MS4zOC0xNi4wNSA0MS4zOC0zNS43NiAwLTE0LjQ2LTkuOTgtMjcuNDEtMjUuNDQtMzMiIGZpbGw9IiM0NDkyYTgiLz48L3N2Zz4="},50663:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNOTEuOTggMjg3LjFhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU0LjE2IDI4Ny4xYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTIxNi4zNSAyODcuMWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xMTYuNTggMjU5Ljk3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2TTE3OC43NiAyNTkuOTdhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjc4LjMzIDI4Ny4wOWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0yNDAuNzMgMjU5Ljk1YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxwYXRoIGQ9Ik03OS44Mi0uMDVjLTMuMzcgMS4wMi02LjY5IDIuMi05Ljk2IDMuNTQtNTcuNTUgMjMuNTctODUuMiA4OS41Ni02MS42MyAxNDcuMTIgOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3YTYxLjYgNjEuNiAwIDAxLTEwLjgtMzQuODNjMC0xNC4zIDQuOTMtMjguMTMgMTMuOTYtMzkuMjJhNjIuNjYgNjIuNjYgMCAwMTUuOTktNi4zNiAxMjUuODIgMTI1LjgyIDAgMDEtMS42OS03MC4wOUExMjguNDMgMTI4LjQzIDAgMDE3OS44Mi0uMDV6IiBmaWxsPSIjZTFjMDE0Ii8+PC9zdmc+"},53107:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNMTE5Ljk1IDI4OS42M2E3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xODIuMTMgMjg5LjYzYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45My0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI0NC4zMiAyODkuNjNhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjUiLz48L2c+PHBhdGggZD0iTTgwLjY2LS45Qzc3LjI5LjE0IDczLjk3IDEuMzIgNzAuNyAyLjY2IDEzLjE1IDI2LjIyLTE0LjUgOTIuMjEgOS4wNyAxNDkuNzdjOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3QTYxLjYgNjEuNiAwIDAxMzcuMDcgMTY0YzAtMTQuMyA0LjkzLTI4LjEzIDEzLjk2LTM5LjIyYTYyLjY2IDYyLjY2IDAgMDE1Ljk5LTYuMzYgMTI1LjgyIDEyNS44MiAwIDAxLTEuNjktNzAuMDlBMTI4LjQzIDEyOC40MyAwIDAxODAuNjYtLjg5eiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},18138:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNMTI1LjAzIDI4Ny45NGE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xODcuMjEgMjg3Ljk0YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45My0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI0OS40IDI4Ny45NGE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xNDkuNjMgMjYwLjhhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjExLjgxIDI2MC44YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xN2E3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NSAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2Ii8+PC9nPjxwYXRoIGQ9Ik03OS44Mi0uMDVjLTMuMzcgMS4wMi02LjY5IDIuMi05Ljk2IDMuNTQtNTcuNTUgMjMuNTctODUuMiA4OS41Ni02MS42MyAxNDcuMTIgOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3YTYxLjYgNjEuNiAwIDAxLTEwLjgtMzQuODNjMC0xNC4zIDQuOTMtMjguMTMgMTMuOTYtMzkuMjJhNjIuNjYgNjIuNjYgMCAwMTUuOTktNi4zNiAxMjUuODIgMTI1LjgyIDAgMDEtMS42OS03MC4wOUExMjguNDMgMTI4LjQzIDAgMDE3OS44Mi0uMDV6IiBmaWxsPSIjZTFjMDE0Ii8+PC9zdmc+"},53748:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM4LjMiIGhlaWdodD0iMjI4LjU3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM2MWM5ZTciPjxwYXRoIGQ9Ik05MS42NCA2Ni41NEw4Ni40NiA4NS45bDE4LjUyLTcuNjYgMTYuOCAxMC45MS0xLjU1LTE5Ljk3IDE1LjU3LTEyLjYyLTE5LjQ4LTQuNjktNy4xOS0xOC43LTEwLjQ4IDE3LjA3LTIwLjAxIDEuMDQgMTMgMTUuMjZNMTc2Ljc5IDQ1LjQ2bC03LjY3LTEwLjMtMy41MSAxMi4zNS0xMi4xNyA0LjEgMTAuNjYgNy4xNi4xNCAxMi44NCAxMC4xLTcuOTIgMTIuMjcgMy44My00LjQyLTEyLjA2IDcuNDMtMTAuNDgtMTIuODMuNDgiLz48cGF0aCBkPSJNMjEyLjE3IDE1NS42NGE1LjI1IDUuMjUgMCAwMS0xLjg3LTIuNzMgMzkuNTIgMzkuNTIgMCAwMC0zNy43OS0yOC4zOGMtMy4yIDAtNi40LjM5LTkuNSAxLjE2YTUuMjkgNS4yOSAwIDAxLTUuNjMtMi4xNCA0My41IDQzLjUgMCAwMC02NS4xNC03LjQ4IDQzLjM1IDQzLjM1IDAgMDAtMTMuOTUgMjcuOSA1LjMgNS4zIDAgMDEtMyA0LjI4Yy0uNTIuMjQtMS4wNC41MS0xLjU2LjgtLjQ0LjI0LS45MS40Mi0xLjQuNTNhMzMuODQgMzMuODQgMCAwMC0xOC43NyAxMS42IDMyLjk5IDMyLjk5IDAgMDAtNy40OCAyMS4wNWMwIDE4LjQ0IDE1LjEgMzMuNDUgMzMuNjUgMzMuNDVoMTEyYzE4LjU2IDAgMzMuNjYtMTUgMzMuNjYtMzMuNDVhMzMuMiAzMy4yIDAgMDAtMTMuMjItMjYuNTkiIHBhaW50LW9yZGVyPSJzdHJva2UgZmlsbCBtYXJrZXJzIi8+PC9nPjxwYXRoIGQ9Ik04Mi45LS4zM2ExMTcuNjIgMTE3LjYyIDAgMDAtMTAuMyAzLjY3QzEzLjA2IDI3LjczLTE1LjU1IDk2IDguODQgMTU1LjU0YTExNi40MyAxMTYuNDMgMCAwMDI2LjM2IDM5LjI0IDQ1LjYyIDQ1LjYyIDAgMDEtMS44Ny0xMi45QTQ2LjMgNDYuMyAwIDAxNDMuNyAxNTIuN2wuMDEtLjAxYTQ2LjU5IDQ2LjU5IDAgMDEyMC41Mi0xNC40N0ExMzAuNCAxMzAuNCAwIDAxNTYuNyA1MC42IDEzMi44OCAxMzIuODggMCAwMTgyLjktLjMyeiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},26625:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM4LjMiIGhlaWdodD0iMjI4LjU3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM2MWM5ZTciPjxwYXRoIGQ9Ik05OC40MyAxMDIuMTJsLTUuMTkgMTkuMzYgMTguNTMtNy42NSAxNi44IDEwLjktMS41Ni0xOS45NyAxNS41OC0xMi42MS0xOS40OS00LjctNy4xOC0xOC43LTEwLjQ4IDE3LjA4LTIwLjAyIDEuMDQgMTMuMDEgMTUuMjVNMTc2Ljc5IDQ1LjQ2bC03LjY3LTEwLjMtMy41MSAxMi4zNS0xMi4xNyA0LjEgMTAuNjYgNy4xNi4xNCAxMi44NCAxMC4xLTcuOTIgMTIuMjcgMy44My00LjQyLTEyLjA2IDcuNDMtMTAuNDgtMTIuODMuNDgiLz48cGF0aCBkPSJNMjIwLjc2IDE3OS41OWEzLjUzIDMuNTMgMCAwMS0xLjI2LTEuODQgMjYuNTQgMjYuNTQgMCAwMC0zMS43Ni0xOC4yOCAzLjU1IDMuNTUgMCAwMS0zLjc4LTEuNDQgMjkuMjEgMjkuMjEgMCAwMC01My4xMiAxMy43MiAzLjU2IDMuNTYgMCAwMS0yIDIuODdjLS4zNi4xNy0uNzEuMzUtMS4wNi41NC0uMy4xNi0uNjEuMjgtLjk1LjM1YTIyLjczIDIyLjczIDAgMDAtMTIuNiA3LjggMjIuMTUgMjIuMTUgMCAwMC01LjAyIDE0LjEzIDIyLjU2IDIyLjU2IDAgMDAyMi42IDIyLjQ3aDc1LjIzYTIyLjU2IDIyLjU2IDAgMDAyMi42LTIyLjQ3IDIyLjMgMjIuMyAwIDAwLTguODgtMTcuODUiIHBhaW50LW9yZGVyPSJzdHJva2UgZmlsbCBtYXJrZXJzIi8+PC9nPjxwYXRoIGQ9Ik04Mi40Ny0uMDJhMTE3LjYyIDExNy42MiAwIDAwLTEwLjMgMy42N0MxMi42MyAyOC4wMy0xNS45NyA5Ni4zIDguNDEgMTU1Ljg1YTExNS45MSAxMTUuOTEgMCAwMDYyLjkgNjMuNCAxMTYuMTggMTE2LjE4IDAgMDA1NC4zOSA4LjczYy0xNC40LTIuNzQtMjUuNDUtMTUuNDQtMjUuNDUtMzAuNTcgMC0zLjQ2LjU5LTYuODYgMS43LTEwLjA5YTEzMC40MiAxMzAuNDIgMCAwMS00MC4xMi01My4zNSAxMzAuNCAxMzAuNCAwIDAxLTUuNTYtODMuMDZBMTMyLjg4IDEzMi44OCAwIDAxODIuNDctLjAyeiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},87760:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTg5LjYzIiBoZWlnaHQ9IjIyOC40IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02Mi4xMSAxMzRhMTMwLjQgMTMwLjQgMCAwMS01LjU1LTgzLjA1QTEzMi44OSAxMzIuODkgMCAwMTgyLjc2IDBhMTE3LjY0IDExNy42NCAwIDAwLTEwLjMgMy42N0MxMi45MiAyOC4wNy0xNS43IDk2LjM0IDguNyAxNTUuODhhMTE1LjkxIDExNS45MSAwIDAwNjIuODkgNjMuNCAxMTUuOTMgMTE1LjkzIDAgMDA4OS4zLjM2YzMuMzktMS4zOSA2LjctMi45MiA5LjkyLTQuNjJhMTMyLjY2IDEzMi42NiAwIDAxLTU0LjQtMTcuOTIgMTMwLjQ1IDEzMC40NSAwIDAxLTU0LjMtNjMuMSIgZmlsbD0iI2UxYzAxNCIvPjxwYXRoIGQ9Ik0xMjIuMTUgMTIzLjNsLTUuMTkgMTkuMzcgMTguNTItNy42NSAxNi44MSAxMC45LTEuNTYtMTkuOTcgMTUuNTgtMTIuNjEtMTkuNDktNC43LTcuMTgtMTguNy0xMC40OCAxNy4wOC0yMC4wMiAxLjA0IDEzLjAxIDE1LjI1TTE3Ni43OSA0NS40NmwtNy42Ny0xMC4zLTMuNTEgMTIuMzUtMTIuMTcgNC4xIDEwLjY2IDcuMTYuMTQgMTIuODQgMTAuMS03LjkyIDEyLjI3IDMuODMtNC40Mi0xMi4wNiA3LjQzLTEwLjQ4LTEyLjgzLjQ4IiBmaWxsPSIjNjFjOWU3Ii8+PC9zdmc+"},37837:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxLjg3IiBoZWlnaHQ9IjIyMy40NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNDcuMjYgMTU1LjlIMjA0LjZjMjYuMDYgMCA0Ny4yNy0yMS4xIDQ3LjI3LTQ3YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0IDcuNDMgNy40MyAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NC02LjE1LS40NS03LjktM0E2MS4xIDYxLjEgMCAwMDEwNi4wMSAwYTYwLjg5IDYwLjg5IDAgMDAtNDEuMTggMTUuOTggNjAuODggNjAuODggMCAwMC0xOS42IDM5LjE5IDcuNDIgNy40MiAwIDAxLTQuMiA2Yy0uNzQuMzUtMS40OC43My0yLjIgMS4xMy0uNjIuMzQtMS4yOS42LTEuOTguNzVhNDcuNDcgNDcuNDcgMCAwMC0yNi4zNSAxNi4zQTQ2LjMgNDYuMyAwIDAwMCAxMDguOWMwIDI1LjkyIDIxLjIgNDcgNDcuMjYgNDciIGZpbGw9IiM0NDkyYTgiLz48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNNTUuNTUgMTc5Ljc0YTcuNDIgNy40MiAwIDAwLTQuOTIgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDEwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDIgNy40MiAwIDAwLTkuMjgtNC45M00xMTcuNzQgMTc5Ljc0YTcuNDMgNy40MyAwIDAwLTQuOTMgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTkuMjctNC45M00xNzkuOTIgMTc5Ljc0YTcuNDMgNy40MyAwIDAwLTQuOTIgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTkuMjgtNC45MyIvPjwvZz48L3N2Zz4="},53254:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM005NS4zNSAyNjMuNzdhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU3LjUzIDI2My43N2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yMTkuNzIgMjYzLjc3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMTk0LjQxIDI5MC41OWE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xMzIuNyAyODkuMzlhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk1LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjgwLjE3IDI2MS42YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI1NC44NiAyODguNDFhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjUiLz48L2c+PC9zdmc+"},14593:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM00xMjMuNTIgMjkxLjMzYTcuNDEgNy40MSAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTE4NS43IDI5MS4zM2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTMtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yNDcuODkgMjkxLjMzYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48L3N2Zz4="},97251:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM00xMTYuOTIgMjY0Ljk3YTcuNDEgNy40MSAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTE3OS4xIDI2NC45N2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTMtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yNDEuMjkgMjY0Ljk3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48cGF0aCBkPSJNMjE1Ljk4IDI5MS43OWE3LjQxIDcuNDEgMCAwMDcuMS05LjZMMjE0LjE1IDI1M2E3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NSAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2TTE1NC4yNyAyOTAuNTlhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjYiIGZpbGw9IiM2MWM5ZTciLz48L3N2Zz4="},16767:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjIxMy42MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjg4LjYgMTI5LjM3YTcuMzggNy4zOCAwIDAxLTIuNjMtMy44NCA1NS41MSA1NS41MSAwIDAwLTUzLjA4LTM5Ljg3Yy00LjUgMC05IC41NS0xMy4zNCAxLjYzLTMgLjc1LTYuMTUtLjQ1LTcuOS0zYTYxLjEgNjEuMSAwIDAwLTkxLjUxLTEwLjUgNjAuODkgNjAuODkgMCAwMC0xOS42IDM5LjIgNy40NCA3LjQ0IDAgMDEtNC4yIDZjLS43My4zNC0xLjQ3LjcxLTIuMiAxLjExLS42Mi4zNS0xLjI5LjYtMS45OC43NWE0Ny41NCA0Ny41NCAwIDAwLTI2LjM1IDE2LjMgNDYuMzMgNDYuMzMgMCAwMC0xMC41MSAyOS41NmMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42MyA0Ni42MyAwIDAwLTE4LjU2LTM3LjM0IiBmaWxsPSIjNjFjOWU3Ii8+PGcgZmlsbD0iI2RlYzYwZiI+PHBhdGggZD0iTTU1LjU3IDkyLjU3YTM2LjcgMzYuNyAwIDAwOS41NCAyNC43NiA2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzkgNzUuNjggNzUuNjggMCAwMTI1LjYxLTQ1Ljc4IDM2Ljk3IDM2Ljk3IDAgMDAtNTYuMzcgMzEuNDFNOTIuNSAzNS43N2M0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzVjcuNDVhNy40MiA3LjQyIDAgMTAtMTQuODUgMHYyMC45YzAgNC4wOSAzLjMzIDcuNDIgNy40MyA3LjQyTTUzLjk3IDQwLjdhNy40MiA3LjQyIDAgMTAxMi44Ny03LjQybC0xMC40NS0xOC4xYTcuNDMgNy40MyAwIDAwLTEyLjg2IDcuNDNsMTAuNDQgMTguMU0xNS4xIDU2LjQ0bDE4LjA5IDEwLjQ1YTcuNDcgNy40NyAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1bC0xOC4xLTEwLjQ1YTcuNDMgNy40MyAwIDAwLTcuNDMgMTIuODdNNy40MiAxMDAuMDRIMjguM2E3LjQzIDcuNDMgMCAwMDAtMTQuODZINy40MWE3LjQyIDcuNDIgMCAxMDAgMTQuODZNNDMuMzMgMTIwLjk3YTcuNDIgNy40MiAwIDAwLTEwLjE0LTIuNzJsLTE4LjEgMTAuNDRhNy40MyA3LjQzIDAgMDA3LjQzIDEyLjg2bDE4LjEtMTAuNDRhNy40MyA3LjQzIDAgMDAyLjcxLTEwLjE0TTEyMC45IDQzLjM3YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4xYTcuNDMgNy40MyAwIDAwLTEyLjg2LTcuNDJsLTEwLjQ1IDE4LjFhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE0Ii8+PC9nPjwvc3ZnPg=="},74351:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1NyAyMTkuNzRhNC4zIDQuMyAwIDAxLTEuNTMtMi4yNCAzMi4zOCAzMi4zOCAwIDAwLTMwLjk2LTIzLjI2Yy0yLjYzIDAtNS4yNS4zMi03Ljc4Ljk1YTQuMzMgNC4zMyAwIDAxLTQuNjEtMS43NSAzNS42MyAzNS42MyAwIDAwLTUzLjM4LTYuMTMgMzUuNTIgMzUuNTIgMCAwMC0xMS40MyAyMi44NyA0LjM0IDQuMzQgMCAwMS0yLjQ1IDMuNWMtLjQyLjItLjg2LjQyLTEuMjguNjUtLjM2LjItLjc1LjM1LTEuMTUuNDRhMjcuNzMgMjcuNzMgMCAwMC0xNS4zNyA5LjUgMjcuMDMgMjcuMDMgMCAwMC02LjEzIDE3LjI1IDI3LjUyIDI3LjUyIDAgMDAyNy41NiAyNy40aDkxLjc3YzE1LjIgMCAyNy41Ny0xMi4yOSAyNy41Ny0yNy40YTI3LjIgMjcuMiAwIDAwLTEwLjgyLTIxLjc4IiBmaWxsPSIjNjFjOWU3IiBwYWludC1vcmRlcj0ic3Ryb2tlIGZpbGwgbWFya2VycyIvPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik0xNDAuMiA3MC43M0E2OS44NiA2OS44NiAwIDAwNzAuNCAxNDAuNWMwIDMzLjMzIDIzLjUgNjEuMjcgNTQuOCA2OC4xNGE0MC42IDQwLjYgMCAwMTEwLjAzLTUuMSA0OC42MSA0OC42MSAwIDAxMTQuNy0yNS41OGguMDFhNDguNTkgNDguNTkgMCAwMTUzLjUtOC4wNSA2OS4zNSA2OS4zNSAwIDAwNi41Mi0yOS40MSA2OS44NiA2OS44NiAwIDAwLTY5Ljc4LTY5Ljc4em0tLjkgMTMxLjQ0bC0uMS4wNC0uMDQuMDMuMTMtLjA3ek0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU04OS41NCA1OS45MWE3LjQzIDcuNDMgMCAwMDYuNDMtMTEuMTRMODAuMjQgMjEuNTNhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40M0w4My4xIDU2LjJhNy40MiA3LjQyIDAgMDA2LjQzIDMuNzFNMTguNzYgNzAuMTRhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE1TDQ4LjcyIDk2YTcuNDIgNy40MiAwIDEwNy40My0xMi44NkwyOC45IDY3LjQyYTcuNDMgNy40MyAwIDAwLTEwLjE0IDIuNzJNNDYuMjggMTQwLjI3YzAtNC4xLTMuMzMtNy40Mi03LjQzLTcuNDJINy40YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmM0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzTTI3My4wNSAxMzIuODVoLTMxLjQ2YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmE3LjQzIDcuNDMgMCAwMDAtMTQuODVNNDguNzMgMTg0LjUxTDIxLjUgMjAwLjI0YTcuNDMgNy40MyAwIDEwNy40MiAxMi44NmwyNy4yNS0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQzLTEyLjg2TTI1MS41NCA2Ny40MkwyMjQuMyA4My4xNUE3LjQzIDcuNDMgMCAwMDIzMS43MiA5NmwyNy4yNC0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQyLTEyLjg2TTgzLjEgMjI0LjM0bC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDEyLjg3IDcuNDNsMTUuNzMtMjcuMjVhNy40MyA3LjQzIDAgMDAtMTIuODctNy40Mk0xODcuMiA1OC45MWE3LjQgNy40IDAgMDAxMC4xNC0yLjcxbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDEwLTEyLjg2LTcuNDJsLTE1LjczIDI3LjI0YTcuNDMgNy40MyAwIDAwMi43MSAxMC4xNCIvPjwvZz48L3N2Zz4="},71211:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZGVjNjBmIj48cGF0aCBkPSJNMTQwLjIyIDIxMC4wNGMzOC40OCAwIDY5Ljc4LTMxLjMgNjkuNzgtNjkuNzhzLTMxLjMtNjkuNzgtNjkuNzgtNjkuNzhjLTM4LjQ3IDAtNjkuNzggMzEuMy02OS43OCA2OS43OHMzMS4zIDY5Ljc4IDY5Ljc4IDY5Ljc4TTEzMi44IDM4LjlhNy40MyA3LjQzIDAgMDAxNC44NSAwVjcuNDRhNy40MyA3LjQzIDAgMDAtMTQuODUgMFYzOC45TTEzMi44IDI0MS42M3YzMS40NmE3LjQzIDcuNDMgMCAwMDE0Ljg1IDB2LTMxLjQ2YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBNODkuNTQgNTkuOTFhNy40MyA3LjQzIDAgMDA2LjQzLTExLjE0TDgwLjI0IDIxLjUzYTcuNDMgNy40MyAwIDAwLTEyLjg2IDcuNDNMODMuMSA1Ni4yYTcuNDIgNy40MiAwIDAwNi40MyAzLjcxTTE4Ny4yIDIyMS42MmE3LjQzIDcuNDMgMCAwMC0yLjcyIDEwLjE0TDIwMC4yIDI1OWE3LjQyIDcuNDIgMCAxMDEyLjg2LTcuNDJsLTE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEwLjE1LTIuNzFNMTguNzYgNzAuMTRhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE1TDQ4LjcyIDk2YTcuNDIgNy40MiAwIDEwNy40My0xMi44NkwyOC45IDY3LjQyYTcuNDMgNy40MyAwIDAwLTEwLjE0IDIuNzJNMjU4Ljk3IDIwMC4yNGwtMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40MiAxMi44N2wyNy4yNCAxNS43M2E3LjQgNy40IDAgMDAxMC4xNC0yLjcyIDcuNDMgNy40MyAwIDAwLTIuNzEtMTAuMTVNNDYuMjggMTQwLjI3YzAtNC4xLTMuMzMtNy40Mi03LjQzLTcuNDJINy40YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmM0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzTTI3My4wNSAxMzIuODVoLTMxLjQ2YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmE3LjQzIDcuNDMgMCAwMDAtMTQuODVNNDguNzMgMTg0LjUxTDIxLjUgMjAwLjI0YTcuNDMgNy40MyAwIDEwNy40MiAxMi44NmwyNy4yNS0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQzLTEyLjg2TTI1MS41NCA2Ny40MkwyMjQuMyA4My4xNUE3LjQzIDcuNDMgMCAwMDIzMS43MiA5NmwyNy4yNC0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQyLTEyLjg2TTgzLjEgMjI0LjM0bC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDEyLjg3IDcuNDNsMTUuNzMtMjcuMjVhNy40MyA3LjQzIDAgMDAtMTIuODctNy40Mk0xODcuMiA1OC45MWE3LjQgNy40IDAgMDAxMC4xNC0yLjcxbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDEwLTEyLjg2LTcuNDJsLTE1LjczIDI3LjI0YTcuNDMgNy40MyAwIDAwMi43MSAxMC4xNCIgZmlsbD0iI2RlYzYwZiIvPjwvZz48L3N2Zz4K"}},u={};function e(M){var t=u[M];if(void 0!==t)return t.exports;var N=u[M]={id:M,loaded:!1,exports:{}};return n[M].call(N.exports,N,N.exports,e),N.loaded=!0,N.exports}e.m=n,e.amdD=function(){throw new Error("define cannot be used indirect")},e.amdO={},M=[],e.O=function(t,n,u,N){if(!n){var A=1/0;for(r=0;r<M.length;r++){n=M[r][0],u=M[r][1],N=M[r][2];for(var j=!0,i=0;i<n.length;i++)(!1&N||A>=N)&&Object.keys(e.O).every((function(M){return e.O[M](n[i])}))?n.splice(i--,1):(j=!1,N<A&&(A=N));if(j){M.splice(r--,1);var D=u();void 0!==D&&(t=D)}}return t}N=N||0;for(var r=M.length;r>0&&M[r-1][2]>N;r--)M[r]=M[r-1];M[r]=[n,u,N]},e.n=function(M){var t=M&&M.__esModule?function(){return M.default}:function(){return M};return e.d(t,{a:t}),t},e.d=function(M,t){for(var n in t)e.o(t,n)&&!e.o(M,n)&&Object.defineProperty(M,n,{enumerable:!0,get:t[n]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(M){if("object"==typeof window)return window}}(),e.o=function(M,t){return Object.prototype.hasOwnProperty.call(M,t)},e.r=function(M){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(M,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(M,"__esModule",{value:!0})},e.nmd=function(M){return M.paths=[],M.children||(M.children=[]),M},e.j=275,function(){e.b=document.baseURI||self.location.href;var M={275:0};e.O.j=function(t){return 0===M[t]};var t=function(t,n){var u,N,A=n[0],j=n[1],i=n[2],D=0;if(A.some((function(t){return 0!==M[t]}))){for(u in j)e.o(j,u)&&(e.m[u]=j[u]);if(i)var r=i(e)}for(t&&t(n);D<A.length;D++)N=A[D],e.o(M,N)&&M[N]&&M[N][0](),M[N]=0;return e.O(r)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var N=e.O(void 0,[874],(function(){return e(76149)}));N=e.O(N)}();
-//# sourceMappingURL=weather_status-weather-status.js.map?v=88e3f9aef3a7464d19c8 \ No newline at end of file
+!function(){var M,n={93365:function(M,t,n){var e={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function u(M){var t=N(M);return n(t)}function N(M){if(!n.o(e,M)){var t=new Error("Cannot find module '"+M+"'");throw t.code="MODULE_NOT_FOUND",t}return e[M]}u.keys=function(){return Object.keys(e)},u.resolve=N,M.exports=u,u.id=93365},10592:function(M,n,e){"use strict";var u=e(20144),N=e(22200),j=e(26932),A=e(80351),i=e.n(A),r=e(9944),D=e(79440),L=e.n(D),a=e(56286),g=e.n(a),I=e(88408),y=e.n(I),s=e(74466),c=e.n(s),o=e(33521),T=e.n(o),w=e(41009),C=e.n(w),z=e(4820),x=e(79753);function E(M,t,n,e,u,N,j){try{var A=M[N](j),i=A.value}catch(M){return void n(M)}A.done?t(i):Promise.resolve(i).then(e,u)}function l(M){return function(){var t=this,n=arguments;return new Promise((function(e,u){var N=M.apply(t,n);function j(M){E(N,e,u,j,A,"next",M)}function A(M){E(N,e,u,j,A,"throw",M)}j(void 0)}))}}var h=function(){var M=l(regeneratorRuntime.mark((function M(t,n){var e,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return e=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.put(e,{address:"",lat:t,lon:n});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t,n){return M.apply(this,arguments)}}(),d=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,e;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.put(n,{address:t,lat:null,lon:null});case 3:return e=M.sent,M.abrupt("return",e.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}(),O=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,e;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/mode"),M.next=3,z.default.put(n,{mode:t});case 3:return e=M.sent,M.abrupt("return",e.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}(),S=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/use-personal"),M.next=3,z.default.put(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),Q=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),m=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/forecast"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),k=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/favorites"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),Y=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,e;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/favorites"),M.next=3,z.default.put(n,{favorites:t});case 3:return e=M.sent,M.abrupt("return",e.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}();function p(M,t,n,e,u,N,j){try{var A=M[N](j),i=A.value}catch(M){return void n(M)}A.done?t(i):Promise.resolve(i).then(e,u)}function v(M){return function(){var t=this,n=arguments;return new Promise((function(e,u){var N=M.apply(t,n);function j(M){p(N,e,u,j,A,"next",M)}function A(M){p(N,e,u,j,A,"throw",M)}j(void 0)}))}}var f={clearsky_day:{icon:"icon-clearsky-day",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} clear sky later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} clear sky",{temperature:M,unit:n})}},clearsky_night:{icon:"icon-clearsky-night",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} clear sky later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} clear sky",{temperature:M,unit:n})}},cloudy:{icon:"icon-cloudy",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} cloudy",{temperature:M,unit:n})}},fair_day:{icon:"icon-fair-day",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} fair weather later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} fair weather",{temperature:M,unit:n})}},fair_night:{icon:"icon-fair-night",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} fair weather later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} fair weather",{temperature:M,unit:n})}},partlycloudy_day:{icon:"icon-partlycloudy-day",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} partly cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} partly cloudy",{temperature:M,unit:n})}},partlycloudy_night:{icon:"icon-partlycloudy-night",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} partly cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} partly cloudy",{temperature:M,unit:n})}},fog:{icon:"icon-fog",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} foggy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} foggy",{temperature:M,unit:n})}},lightrain:{icon:"icon-lightrain",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} light rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall",{temperature:M,unit:n})}},rain:{icon:"icon-rain",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall",{temperature:M,unit:n})}},heavyrain:{icon:"icon-heavyrain",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} heavy rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall",{temperature:M,unit:n})}},rainshowers_day:{icon:"icon-rainshowers-day",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall showers",{temperature:M,unit:n})}},rainshowers_night:{icon:"icon-rainshowers-night",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall showers",{temperature:M,unit:n})}},lightrainshowers_day:{icon:"icon-light-rainshowers-day",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} light rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall showers",{temperature:M,unit:n})}},lightrainshowers_night:{icon:"icon-light-rainshowers-night",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} light rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall showers",{temperature:M,unit:n})}},heavyrainshowers_day:{icon:"icon-heavy-rainshowers-day",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} heavy rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall showers",{temperature:M,unit:n})}},heavyrainshowers_night:{icon:"icon-heavy-rainshowers-night",text:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e?t("weather_status","{temperature} {unit} heavy rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall showers",{temperature:M,unit:n})}}},U={name:"App",components:{Actions:L(),ActionButton:g(),ActionInput:y(),ActionLink:c(),ActionSeparator:T(),ActionText:C()},props:{inline:{type:Boolean,default:!1}},data:function(){return{locale:(0,r.getLocale)(),loading:!0,errorMessage:"",mode:1,address:null,lat:null,lon:null,offset:5,forecasts:[],loop:null,favorites:[],showFavorites:!1}},computed:{useFahrenheitLocale:function(){return["en_US","en_MH","en_FM","en_PW","en_KY","en_LR"].includes(this.locale)},temperatureUnit:function(){return this.useFahrenheitLocale?"°F":"°C"},locationText:function(){return t("weather_status","More weather for {adr}",{adr:this.address})},temperature:function(){return this.getTemperature(this.forecasts,0)},futureTemperature:function(){return this.getTemperature(this.forecasts,this.offset)},weatherCode:function(){return this.getWeatherCode(this.forecasts,0)},futureWeatherCode:function(){return this.getWeatherCode(this.forecasts,this.offset)},weatherIcon:function(){return this.getWeatherIcon(this.weatherCode,this.loading)},futureWeatherIcon:function(){return this.getWeatherIcon(this.futureWeatherCode,this.loading)},currentWeatherMessage:function(){return this.loading?t("weather_status","Loading weather"):this.errorMessage?this.errorMessage:this.getWeatherMessage(this.weatherCode,this.temperature)},forecastMessage:function(){return this.loading?t("weather_status","Loading weather"):this.getWeatherMessage(this.futureWeatherCode,this.futureTemperature,!0)},weatherLinkTarget:function(){return"https://www.windy.com/-Rain-thunder-rain?rain,"+this.lat+","+this.lon+",11"},gotWeather:function(){return this.address&&!this.errorMessage},addRemoveFavoriteIcon:function(){return this.currentAddressIsFavorite?"icon-starred":"icon-star"},addRemoveFavoriteText:function(){return this.currentAddressIsFavorite?t("weather_status","Remove from favorites"):t("weather_status","Add as favorite")},currentAddressIsFavorite:function(){var M=this;return this.favorites.find((function(t){return t===M.address}))},toggleFavoritesIcon:function(){return this.showFavorites?"icon-triangle-s":"icon-triangle-e"},displayedFavorites:function(){return this.showFavorites?this.favorites:[]}},mounted:function(){this.initWeatherStatus()},methods:{initWeatherStatus:function(){var M=this;return v(regeneratorRuntime.mark((function n(){var e,u;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,Q();case 3:return e=n.sent,M.lat=e.lat,M.lon=e.lon,M.address=e.address,M.mode=e.mode,1===M.mode?M.askBrowserLocation():2===M.mode&&M.startLoop(),n.next=11,k();case 11:u=n.sent,M.favorites=u,n.next=22;break;case 15:if(n.prev=15,n.t0=n.catch(0),"ECONNABORTED"!==(null===n.t0||void 0===n.t0?void 0:n.t0.code)){n.next=20;break}return console.info("The weather status request was cancelled because the user navigates."),n.abrupt("return");case 20:n.t0.response&&401===n.t0.response.status?(0,j.x2)(t("weather_status","You are not logged in.")):(0,j.x2)(t("weather_status","There was an error getting the weather status information.")),console.error(n.t0);case 22:case"end":return n.stop()}}),n,null,[[0,15]])})))()},startLoop:function(){var M=this;clearInterval(this.loop),this.lat&&this.lon?(this.loop=setInterval((function(){return M.getForecast()}),36e5),this.getForecast()):this.loading=!1},askBrowserLocation:function(){var M=this;this.loading=!0,this.errorMessage="",navigator.geolocation&&window.isSecureContext?navigator.geolocation.getCurrentPosition((function(t){console.debug("browser location success"),M.lat=t.coords.latitude,M.lon=t.coords.longitude,M.saveMode(1),M.mode=1,M.saveLocation(M.lat,M.lon)}),(function(t){console.debug("location permission refused"),console.debug(t),M.saveMode(2),M.mode=2,M.lat&&M.lon?M.startLoop():M.usePersonalAddress()})):(console.debug("no secure context!"),this.saveMode(2),this.mode=2,this.startLoop())},getForecast:function(){var M=this;return v(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,m();case 3:M.forecasts=n.sent,n.next=10;break;case 6:n.prev=6,n.t0=n.catch(0),M.errorMessage=t("weather_status","No weather information found"),console.debug(n.t0);case 10:M.loading=!1;case 11:case"end":return n.stop()}}),n,null,[[0,6]])})))()},setAddress:function(M){var n=this;return v(regeneratorRuntime.mark((function e(){var u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.errorMessage="",e.prev=2,e.next=5,d(M);case 5:(u=e.sent).success?(n.lat=u.lat,n.lon=u.lon,n.address=u.address,n.mode=2,n.startLoop()):(n.errorMessage=t("weather_status","Location not found"),n.loading=!1),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),e.t0.response&&401===e.t0.response.status?(0,j.x2)(t("weather_status","You are not logged in.")):(0,j.x2)(t("weather_status","There was an error setting the location address.")),n.loading=!1;case 13:case"end":return e.stop()}}),e,null,[[2,9]])})))()},saveLocation:function(M,n){var e=this;return v(regeneratorRuntime.mark((function u(){var N;return regeneratorRuntime.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return u.prev=0,u.next=3,h(M,n);case 3:N=u.sent,e.address=N.address,e.startLoop(),u.next=12;break;case 8:u.prev=8,u.t0=u.catch(0),u.t0.response&&401===u.t0.response.status?(0,j.x2)(t("weather_status","You are not logged in.")):(0,j.x2)(t("weather_status","There was an error setting the location.")),console.debug(u.t0);case 12:case"end":return u.stop()}}),u,null,[[0,8]])})))()},saveMode:function(M){return v(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,O(M);case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),n.t0.response&&401===n.t0.response.status?(0,j.x2)(t("weather_status","You are not logged in.")):(0,j.x2)(t("weather_status","There was an error saving the mode.")),console.debug(n.t0);case 9:case"end":return n.stop()}}),n,null,[[0,5]])})))()},onBrowserLocationClick:function(){this.askBrowserLocation()},usePersonalAddress:function(){var M=this;return v(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return M.loading=!0,n.prev=1,n.next=4,S();case 4:e=n.sent,M.lat=e.lat,M.lon=e.lon,M.address=e.address,M.mode=2,M.startLoop(),n.next=17;break;case 12:n.prev=12,n.t0=n.catch(1),n.t0.response&&401===n.t0.response.status?(0,j.x2)(t("weather_status","You are not logged in.")):(0,j.x2)(t("weather_status","There was an error using personal address.")),console.debug(n.t0),M.loading=!1;case 17:case"end":return n.stop()}}),n,null,[[1,12]])})))()},onAddressSubmit:function(){var M=this.$refs.addressInput.$el.querySelector('input[type="text"]').value;this.setAddress(M)},getLocalizedTemperature:function(M){return this.useFahrenheitLocale?1.8*M+32:M},onAddRemoveFavoriteClick:function(){var M=this.currentAddressIsFavorite;if(M){var t=this.favorites.indexOf(M);-1!==t&&this.favorites.splice(t,1)}else this.favorites.push(this.address);Y(this.favorites)},onFavoriteClick:function(M,t){if(M.target.classList.contains("action-button__icon")){var n=this.favorites.indexOf(t);-1!==n&&this.favorites.splice(n,1),Y(this.favorites)}else t!==this.address&&this.setAddress(t)},formatTime:function(M){return i()(M).format("LT")},getTemperature:function(M){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return M.length>t?M[t].data.instant.details.air_temperature:""},getWeatherCode:function(M){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return M.length>t?M[t].data.next_1_hours.summary.symbol_code:""},getWeatherIcon:function(M,t){return t?"icon-loading-small":M&&M in f?f[M].icon:"icon-fair-day"},getWeatherMessage:function(M,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return M&&M in f?f[M].text(Math.round(this.getLocalizedTemperature(n)),this.temperatureUnit,e):t("weather_status","Set location for weather")}}},b=U,Z=e(93379),W=e.n(Z),G=e(7795),B=e.n(G),_=e(90569),P=e.n(_),R=e(3565),F=e.n(R),J=e(19216),H=e.n(J),V=e(44589),X=e.n(V),q=e(62554),$={};$.styleTagTransform=X(),$.setAttributes=F(),$.insert=P().bind(null,"head"),$.domAPI=B(),$.insertStyleElement=H(),W()(q.Z,$),q.Z&&q.Z.locals&&q.Z.locals;var K=(0,e(51900).Z)(b,(function(){var M=this,t=M.$createElement,n=M._self._c||t;return n("li",{class:{inline:M.inline}},[n("div",{attrs:{id:"weather-status-menu-item"}},[n("Actions",{staticClass:"weather-status-menu-item__subheader",attrs:{"default-icon":M.weatherIcon,"menu-title":M.currentWeatherMessage}},[M.gotWeather?n("ActionText",{attrs:{icon:M.futureWeatherIcon}},[M._v("\n\t\t\t\t"+M._s(M.forecastMessage)+"\n\t\t\t")]):M._e(),M._v(" "),M.gotWeather?n("ActionLink",{attrs:{icon:"icon-address",target:"_blank",href:M.weatherLinkTarget,"close-after-click":!0}},[M._v("\n\t\t\t\t"+M._s(M.locationText)+"\n\t\t\t")]):M._e(),M._v(" "),M.gotWeather?n("ActionButton",{attrs:{icon:M.addRemoveFavoriteIcon},on:{click:M.onAddRemoveFavoriteClick}},[M._v("\n\t\t\t\t"+M._s(M.addRemoveFavoriteText)+"\n\t\t\t")]):M._e(),M._v(" "),M.address&&!M.errorMessage?n("ActionSeparator"):M._e(),M._v(" "),n("ActionButton",{attrs:{icon:"icon-crosshair","close-after-click":!0},on:{click:M.onBrowserLocationClick}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Detect location"))+"\n\t\t\t")]),M._v(" "),n("ActionInput",{ref:"addressInput",attrs:{disabled:!1,icon:"icon-rename",type:"text",value:""},on:{submit:M.onAddressSubmit}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Set custom address"))+"\n\t\t\t")]),M._v(" "),n("ActionButton",{directives:[{name:"show",rawName:"v-show",value:M.favorites.length>0,expression:"favorites.length > 0"}],attrs:{icon:M.toggleFavoritesIcon},on:{click:function(t){M.showFavorites=!M.showFavorites}}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Favorites"))+"\n\t\t\t")]),M._v(" "),M._l(M.displayedFavorites,(function(t){return n("ActionButton",{key:t,attrs:{icon:"icon-starred"},on:{click:function(n){return M.onFavoriteClick(n,t)}}},[M._v("\n\t\t\t\t"+M._s(t)+"\n\t\t\t")])}))],2)],1)])}),[],!1,null,null,null).exports;e.nc=btoa((0,N.getRequestToken)()),u.default.prototype.t=t,document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("weather",(function(M){return new(u.default.extend(K))({propsData:{inline:!0}}).$mount(M)}))}))},62554:function(M,t,n){"use strict";var e=n(87537),u=n.n(e),N=n(23645),j=n.n(N),A=n(61667),i=n.n(A),r=new URL(n(87320),n.b),D=new URL(n(71211),n.b),L=new URL(n(87760),n.b),a=new URL(n(30570),n.b),g=new URL(n(74351),n.b),I=new URL(n(26625),n.b),y=new URL(n(16767),n.b),s=new URL(n(53748),n.b),c=new URL(n(26320),n.b),o=new URL(n(26157),n.b),T=new URL(n(37837),n.b),w=new URL(n(94776),n.b),C=new URL(n(14593),n.b),z=new URL(n(53107),n.b),x=new URL(n(97251),n.b),E=new URL(n(18138),n.b),l=new URL(n(53254),n.b),h=new URL(n(50663),n.b),d=new URL(n(75322),n.b),O=j()(u()),S=i()(r),Q=i()(D),m=i()(L),k=i()(a),Y=i()(g),p=i()(I),v=i()(y),f=i()(s),U=i()(c),b=i()(o),Z=i()(T),W=i()(w),G=i()(C),B=i()(z),_=i()(x),P=i()(E),R=i()(l),F=i()(h),J=i()(d);O.push([M.id,".icon-weather-status{background-image:url("+S+")}.icon-clearsky-day{background-image:url("+Q+")}.icon-clearsky-night{background-image:url("+m+")}.icon-cloudy{background-image:url("+k+")}.icon-fair-day{background-image:url("+Y+")}.icon-fair-night{background-image:url("+p+")}.icon-partlycloudy-day{background-image:url("+v+")}.icon-partlycloudy-night{background-image:url("+f+")}.icon-fog{background-image:url("+U+")}.icon-lightrain{background-image:url("+b+")}.icon-rain{background-image:url("+Z+")}.icon-heavyrain{background-image:url("+W+")}.icon-light-rainshowers-day{background-image:url("+G+")}.icon-light-rainshowers-night{background-image:url("+B+")}.icon-rainshowers-day{background-image:url("+_+")}.icon-rainshowers-night{background-image:url("+P+")}.icon-heavy-rainshowers-day{background-image:url("+R+")}.icon-heavy-rainshowers-night{background-image:url("+F+")}.icon-crosshair{background-color:var(--color-main-text);padding:0 !important;mask:url("+J+") no-repeat;mask-size:18px 18px;mask-position:center;-webkit-mask:url("+J+") no-repeat;-webkit-mask-size:18px 18px;-webkit-mask-position:center;min-width:44px !important;min-height:44px !important}li:not(.inline) .weather-status-menu-item__header{display:block;align-items:center;color:var(--color-main-text);padding:10px 12px 5px 12px;box-sizing:border-box;opacity:1;white-space:nowrap;width:100%;text-align:center;max-width:250px;text-overflow:ellipsis;min-width:175px}li:not(.inline) .weather-status-menu-item__subheader{width:100%}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon{background-color:var(--color-main-background);background-size:16px;border:0;border-radius:0;font-weight:normal;padding-left:40px}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:hover,li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:focus{box-shadow:inset 4px 0 var(--color-primary-element)}.inline .weather-status-menu-item__subheader{width:100%}.inline .weather-status-menu-item__subheader .trigger>.icon{background-size:16px;border:0;border-radius:var(--border-radius-pill);font-weight:normal;padding-left:40px}.inline .weather-status-menu-item__subheader .trigger>.icon.icon-loading-small::after{left:21px}li{list-style-type:none}","",{version:3,sources:["webpack://./apps/weather_status/src/App.vue"],names:[],mappings:"AAwgBA,qBACC,wDAAA,CAED,mBACC,wDAAA,CAED,qBACC,wDAAA,CAED,aACC,wDAAA,CAED,eACC,wDAAA,CAED,iBACC,wDAAA,CAED,uBACC,wDAAA,CAED,yBACC,wDAAA,CAED,UACC,wDAAA,CAED,gBACC,wDAAA,CAED,WACC,yDAAA,CAED,gBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,sBACC,yDAAA,CAED,wBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,gBACI,uCAAA,CACA,oBAAA,CACA,uDAAA,CACA,mBAAA,CACA,oBAAA,CACA,+DAAA,CACA,2BAAA,CACA,4BAAA,CACA,yBAAA,CACA,0BAAA,CAIH,kDACC,aAAA,CACA,kBAAA,CACA,4BAAA,CACA,0BAAA,CACA,qBAAA,CACA,SAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,qDACC,UAAA,CAEA,oEACC,6CAAA,CACA,oBAAA,CACA,QAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CAEA,oJAEC,mDAAA,CAMJ,6CACC,UAAA,CAEA,4DACC,oBAAA,CACA,QAAA,CACA,uCAAA,CACA,kBAAA,CACA,iBAAA,CAGC,sFACC,SAAA,CAMJ,GACC,oBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.icon-weather-status {\n\tbackground-image: url('./../img/app-dark.svg');\n}\n.icon-clearsky-day {\n\tbackground-image: url('./../img/sun.svg');\n}\n.icon-clearsky-night {\n\tbackground-image: url('./../img/moon.svg');\n}\n.icon-cloudy {\n\tbackground-image: url('./../img/cloud-cloud.svg');\n}\n.icon-fair-day {\n\tbackground-image: url('./../img/sun-small-cloud.svg');\n}\n.icon-fair-night {\n\tbackground-image: url('./../img/moon-small-cloud.svg');\n}\n.icon-partlycloudy-day {\n\tbackground-image: url('./../img/sun-cloud.svg');\n}\n.icon-partlycloudy-night {\n\tbackground-image: url('./../img/moon-cloud.svg');\n}\n.icon-fog {\n\tbackground-image: url('./../img/fog.svg');\n}\n.icon-lightrain {\n\tbackground-image: url('./../img/light-rain.svg');\n}\n.icon-rain {\n\tbackground-image: url('./../img/rain.svg');\n}\n.icon-heavyrain {\n\tbackground-image: url('./../img/heavy-rain.svg');\n}\n.icon-light-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\n}\n.icon-light-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\n}\n.icon-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-rain.svg');\n}\n.icon-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-rain.svg');\n}\n.icon-heavy-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\n}\n.icon-heavy-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\n}\n.icon-crosshair {\n background-color: var(--color-main-text);\n padding: 0 !important;\n mask: url(./../img/cross.svg) no-repeat;\n mask-size: 18px 18px;\n mask-position: center;\n -webkit-mask: url(./../img/cross.svg) no-repeat;\n -webkit-mask-size: 18px 18px;\n -webkit-mask-position: center;\n min-width: 44px !important;\n min-height: 44px !important;\n}\n\nli:not(.inline) .weather-status-menu-item {\n\t&__header {\n\t\tdisplay: block;\n\t\talign-items: center;\n\t\tcolor: var(--color-main-text);\n\t\tpadding: 10px 12px 5px 12px;\n\t\tbox-sizing: border-box;\n\t\topacity: 1;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tmax-width: 250px;\n\t\ttext-overflow: ellipsis;\n\t\tmin-width: 175px;\n\t}\n\n\t&__subheader {\n\t\twidth: 100%;\n\n\t\t.trigger > .icon {\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-size: 16px;\n\t\t\tborder: 0;\n\t\t\tborder-radius: 0;\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 40px;\n\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.inline .weather-status-menu-item__subheader {\n\twidth: 100%;\n\n\t.trigger > .icon {\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: normal;\n\t\tpadding-left: 40px;\n\n\t\t&.icon-loading-small {\n\t\t\t&::after {\n\t\t\t\tleft: 21px;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n"],sourceRoot:""}]),t.Z=O},87320:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0MC4yMiAyMTAuMDRjMzguNDggMCA2OS43OC0zMS4zIDY5Ljc4LTY5Ljc4cy0zMS4zLTY5Ljc4LTY5Ljc4LTY5Ljc4Yy0zOC40NyAwLTY5Ljc4IDMxLjMtNjkuNzggNjkuNzhzMzEuMyA2OS43OCA2OS43OCA2OS43OE0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU0xMzIuOCAyNDEuNjN2MzEuNDZhNy40MyA3LjQzIDAgMDAxNC44NSAwdi0zMS40NmE3LjQzIDcuNDMgMCAwMC0xNC44NSAwTTg5LjU0IDU5LjkxYTcuNDMgNy40MyAwIDAwNi40My0xMS4xNEw4MC4yNCAyMS41M2E3LjQzIDcuNDMgMCAwMC0xMi44NiA3LjQzTDgzLjEgNTYuMmE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU0xODcuMiAyMjEuNjJhNy40MyA3LjQzIDAgMDAtMi43MiAxMC4xNEwyMDAuMiAyNTlhNy40MiA3LjQyIDAgMTAxMi44Ni03LjQybC0xNS43My0yNy4yNWE3LjQzIDcuNDMgMCAwMC0xMC4xNS0yLjcxTTE4Ljc2IDcwLjE0YTcuNDMgNy40MyAwIDAwMi43MiAxMC4xNUw0OC43MiA5NmE3LjQyIDcuNDIgMCAxMDcuNDMtMTIuODZMMjguOSA2Ny40MmE3LjQzIDcuNDMgMCAwMC0xMC4xNCAyLjcyTTI1OC45NyAyMDAuMjRsLTI3LjI1LTE1LjczYTcuNDMgNy40MyAwIDAwLTcuNDIgMTIuODdsMjcuMjQgMTUuNzNhNy40IDcuNCAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1TTQ2LjI4IDE0MC4yN2MwLTQuMS0zLjMzLTcuNDItNy40My03LjQySDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZjNC4xIDAgNy40My0zLjMzIDcuNDMtNy40M00yNzMuMDUgMTMyLjg1aC0zMS40NmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZhNy40MyA3LjQzIDAgMDAwLTE0Ljg1TTQ4LjczIDE4NC41MUwyMS41IDIwMC4yNGE3LjQzIDcuNDMgMCAxMDcuNDIgMTIuODZsMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40My0xMi44Nk0yNTEuNTQgNjcuNDJMMjI0LjMgODMuMTVBNy40MyA3LjQzIDAgMDAyMzEuNzIgOTZsMjcuMjQtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40Mi0xMi44Nk04My4xIDIyNC4zNGwtMTUuNzMgMjcuMjRhNy40MyA3LjQzIDAgMDAxMi44NyA3LjQzbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEyLjg3LTcuNDJNMTg3LjIgNTguOTFhNy40IDcuNCAwIDAwMTAuMTQtMi43MWwxNS43My0yNy4yNWE3LjQzIDcuNDMgMCAxMC0xMi44Ni03LjQybC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDIuNzEgMTAuMTQiLz48L3N2Zz4="},30570:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjk0LjcxIiBoZWlnaHQ9IjE4OS4xNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTA5LjAzIDExOS4yYzAtMjkuMTkgMjYuNC01Mi45NCA1OC44Ni01Mi45NCA3LjAyIDAgMTMuODEgMS4wOCAyMC4yOSAzLjIyYTU0LjM2IDU0LjM2IDAgMDEyNS4wNC0xNC4zNkE1MS45NSA1MS45NSAwIDAwMTY2LjkgMjYuM2MtNC4yMSAwLTguNDEuNTItMTIuNDggMS41Mi0zIC43NC02LjE1LS40NC03LjktMi45OWE1Ny4xMyA1Ny4xMyAwIDAwLTg1LjU4LTkuODQgNTYuOTUgNTYuOTUgMCAwMC0xOC4zMyAzNi42NSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjY5LjM0LTEuMzguNjgtMi4wNSAxLjA2LS42Mi4zNC0xLjI5LjYtMS45OC43NkE0NC4zIDQ0LjMgMCAwMDkuOCA3NC42NmE0My4yIDQzLjIgMCAwMC05LjggMjcuNThjMCAyNC4xOSAxOS43OCA0My44NiA0NC4xIDQzLjg2aDUyLjk2YTQ4LjA0IDQ4LjA0IDAgMDExMi4wMy0yNC42M2MtLjAzLS43Ni0uMDUtMS41MS0uMDUtMi4yNyIgZmlsbD0iIzYxYzllNyIvPjxwYXRoIGQ9Ik0yNjkuMjUgMTIwLjRhNy40MyA3LjQzIDAgMDEtNC40Ni05LjUgMjguODUgMjguODUgMCAwMDEuNzItOS44MmMwLTE0LjEtMTAuMjctMjYuMTYtMjQuNy0zMC45YTQzLjYzIDQzLjYzIDAgMDAtMjEuMDgtMS41NWMtOS45IDEuNjgtMTguNzQgNi43LTI0LjUgMTQuMTJhNy40MyA3LjQzIDAgMDEtOC44IDIuMjYgNDkuMTIgNDkuMTIgMCAwMC0xOS41My0zLjk2Yy0yNC4yNyAwLTQ0LjAyIDE3LjEtNDQuMDIgMzguMSAwIDEuMzQuMDkgMi43My4yNiA0LjFhNy4zOSA3LjM5IDAgMDEtMi4yMyA2LjI2IDM0LjMgMzQuMyAwIDAwLTkuNzEgMTYuNTMgMzEuMDMgMzEuMDMgMCAwMC4wMiAxNC44NWM0IDE2LjEzIDIwLjYyIDI4LjI3IDQwLjQ2IDI4LjI3aDEwMC42M2MyMi44MiAwIDQxLjM4LTE2LjA0IDQxLjM4LTM1Ljc2IDAtMTQuNDUtOS45OS0yNy40MS0yNS40NC0zMyIgZmlsbD0iIzQ0OTJhOCIvPjwvc3ZnPg=="},75322:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiLz48cGF0aCBkPSJNMjIgMTJoLTRNNiAxMkgyTTEyIDZWMk0xMiAyMnYtNCIvPjwvc3ZnPg=="},26320:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU0LjQ0IiBoZWlnaHQ9IjI1Ni4zOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjMzLjMgNzEuNThhNy40MiA3LjQyIDAgMDEtMi42My0zLjg0IDU1LjUgNTUuNSAwIDAwLTUzLjA4LTM5Ljg3Yy00LjUgMC05IC41NS0xMy4zNSAxLjYzLTMgLjc0LTYuMTUtLjQ1LTcuOS0zQTYxLjEgNjEuMSAwIDAwMTA2IC4wMSA2MC44OSA2MC44OSAwIDAwNjQuODMgMTZhNjAuODcgNjAuODcgMCAwMC0xOS42IDM5LjIgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNC0xLjQ3LjcyLTIuMiAxLjEyLS42MS4zNS0xLjI4LjYtMS45Ny43NUE0Ny40OCA0Ny40OCAwIDAwMTAuNSA3OS4zNyA0Ni4zIDQ2LjMgMCAwMDAgMTA4LjkyYzAgMjUuOTEgMjEuMiA0NyA0Ny4yNiA0N0gyMDQuNmMyNi4wNiAwIDQ3LjI3LTIxLjA5IDQ3LjI3LTQ3YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0TTIzMS4zMiAxODcuOTFjMC00LjEtMy4zMy03LjQzLTcuNDMtNy40M0gyOC44N2E3LjQyIDcuNDIgMCAxMDAgMTQuODZoMTk1LjAyYzQuMSAwIDcuNDMtMy4zNCA3LjQzLTcuNDNNMjEzLjE0IDI0MS41NEgxOC4xMmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMTk1LjAyYTcuNDIgNy40MiAwIDEwMC0xNC44NU02Mi4yOCAyMTEuNDNhNy40MiA3LjQyIDAgMTAwIDE0Ljg1aDcxLjQ3YTcuNDMgNy40MyAwIDAwMC0xNC44NUg2Mi4yOE0yNDcgMjExLjQzaC03MS40OGE3LjQyIDcuNDIgMCAxMDAgMTQuODVIMjQ3YTcuNDMgNy40MyAwIDAwMC0xNC44NSIvPjwvZz48L3N2Zz4="},94776:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxLjg4IiBoZWlnaHQ9IjI1OC42NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjUxLjg1IDEwOC45YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0IDcuNDMgNy40MyAwIDAxLTIuNjMtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzUgMS42Mi0zIC43NC02LjE1LS40NS03LjktM0E2MS4xIDYxLjEgMCAwMDEwNiAwYTYwLjg5IDYwLjg5IDAgMDAtNDEuMTggMTUuOTcgNjAuODcgNjAuODcgMCAwMC0xOS42IDM5LjIgNy40MyA3LjQzIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42MS4zNC0xLjI4LjYtMS45Ny43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjNBNDYuMyA0Ni4zIDAgMDAtLjAxIDEwOC45YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNiA0N0gyMDQuNmMyNi4wNyAwIDQ3LjI3LTIxLjA4IDQ3LjI3LTQ3IiBmaWxsPSIjNDQ5MmE4Ii8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTY2LjY2IDIyMy40NGE3LjQyIDcuNDIgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MiA3LjQyIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xMDcuNCAyNTguNjJhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04LjkzLTI5LjE4YTcuNDIgNy40MiAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU5LjIyIDIxMy4wNmE3LjQzIDcuNDMgMCAwMC00LjkzIDkuMjhsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAxMDE0LjItNC4zNUwxNjguNSAyMThhNy40MyA3LjQzIDAgMDAtOS4yNy00LjkzTTEyOC44NCAyMjMuNDRhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04LjkzLTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMTkxLjAzIDIyMy40NGE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThBNy40MiA3LjQyIDAgMTAxNzUgMTg5bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNiIvPjwvZz48L3N2Zz4="},26157:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjk0LjcxIiBoZWlnaHQ9IjI1OC41NyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMTA5LjA0IDExOS4xOGMwLTI5LjIgMjYuNC01Mi45NSA1OC44Ny01Mi45NSA3IDAgMTMuOCAxLjA4IDIwLjI4IDMuMjJhNTQuMzIgNTQuMzIgMCAwMTI1LjA0LTE0LjM1IDUxLjkzIDUxLjkzIDAgMDAtNDYuMzItMjguODNjLTQuMjEgMC04LjQxLjUxLTEyLjQ3IDEuNTItMyAuNzUtNi4xNi0uNDUtNy45MS0zQTU3LjE1IDU3LjE1IDAgMDA5OS40Ni4wMmMtMTQuMyAwLTI3Ljk3IDUuMzEtMzguNTEgMTQuOTVhNTYuOTMgNTYuOTMgMCAwMC0xOC4zMyAzNi42NSA3LjQzIDcuNDMgMCAwMS00LjIgNmMtLjY4LjMyLTEuMzcuNjgtMi4wNSAxLjA1LS42Mi4zNS0xLjI5LjYtMS45OC43NUE0NC4zIDQ0LjMgMCAwMDkuOCA3NC42NCA0My4yIDQzLjIgMCAwMDAgMTAyLjJjMCAyNC4xOCAxOS43OCA0My44NiA0NC4xIDQzLjg2aDUyLjk2YTQ4LjA0IDQ4LjA0IDAgMDExMi4wMy0yNC42M2MtLjAzLS43Ni0uMDUtMS41MS0uMDUtMi4yNk02NC45OSAyNTguNTlhNy40NCA3LjQ0IDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMTI3LjE3IDI1OC41OWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xODkuMzYgMjU4LjU5YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2Ii8+PC9nPjxwYXRoIGQ9Ik0yNjkuMjYgMTIwLjQyYTcuNDMgNy40MyAwIDAxLTQuNDYtOS41IDI4Ljg2IDI4Ljg2IDAgMDAxLjczLTkuODJjMC0xNC4xLTEwLjI4LTI2LjE1LTI0LjctMzAuOTFhNDMuNTcgNDMuNTcgMCAwMC0yMS4wOS0xLjU1Yy05LjkgMS42OS0xOC43NCA2LjctMjQuNDkgMTQuMTJhNy40MyA3LjQzIDAgMDEtOC44IDIuMjggNDkuMTIgNDkuMTIgMCAwMC0xOS41NC0zLjk2Yy0yNC4yNyAwLTQ0LjAyIDE3LjA5LTQ0LjAyIDM4LjA5IDAgMS4zNS4wOSAyLjczLjI2IDQuMWE3LjQzIDcuNDMgMCAwMS0yLjIzIDYuMjYgMzQuMjEgMzQuMjEgMCAwMC05LjcxIDE2LjUzIDMxLjAzIDMxLjAzIDAgMDAuMDMgMTQuODVjNCAxNi4xMyAyMC42MSAyOC4yNyA0MC40NSAyOC4yN2gxMDAuNjNjMjIuODIgMCA0MS4zOC0xNi4wNSA0MS4zOC0zNS43NiAwLTE0LjQ2LTkuOTgtMjcuNDEtMjUuNDQtMzMiIGZpbGw9IiM0NDkyYTgiLz48L3N2Zz4="},50663:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNOTEuOTggMjg3LjFhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU0LjE2IDI4Ny4xYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTIxNi4zNSAyODcuMWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xMTYuNTggMjU5Ljk3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2TTE3OC43NiAyNTkuOTdhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjc4LjMzIDI4Ny4wOWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0yNDAuNzMgMjU5Ljk1YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxwYXRoIGQ9Ik03OS44Mi0uMDVjLTMuMzcgMS4wMi02LjY5IDIuMi05Ljk2IDMuNTQtNTcuNTUgMjMuNTctODUuMiA4OS41Ni02MS42MyAxNDcuMTIgOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3YTYxLjYgNjEuNiAwIDAxLTEwLjgtMzQuODNjMC0xNC4zIDQuOTMtMjguMTMgMTMuOTYtMzkuMjJhNjIuNjYgNjIuNjYgMCAwMTUuOTktNi4zNiAxMjUuODIgMTI1LjgyIDAgMDEtMS42OS03MC4wOUExMjguNDMgMTI4LjQzIDAgMDE3OS44Mi0uMDV6IiBmaWxsPSIjZTFjMDE0Ii8+PC9zdmc+"},53107:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNMTE5Ljk1IDI4OS42M2E3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xODIuMTMgMjg5LjYzYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45My0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI0NC4zMiAyODkuNjNhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjUiLz48L2c+PHBhdGggZD0iTTgwLjY2LS45Qzc3LjI5LjE0IDczLjk3IDEuMzIgNzAuNyAyLjY2IDEzLjE1IDI2LjIyLTE0LjUgOTIuMjEgOS4wNyAxNDkuNzdjOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3QTYxLjYgNjEuNiAwIDAxMzcuMDcgMTY0YzAtMTQuMyA0LjkzLTI4LjEzIDEzLjk2LTM5LjIyYTYyLjY2IDYyLjY2IDAgMDE1Ljk5LTYuMzYgMTI1LjgyIDEyNS44MiAwIDAxLTEuNjktNzAuMDlBMTI4LjQzIDEyOC40MyAwIDAxODAuNjYtLjg5eiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},18138:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNMTI1LjAzIDI4Ny45NGE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xODcuMjEgMjg3Ljk0YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45My0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI0OS40IDI4Ny45NGE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xNDkuNjMgMjYwLjhhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjExLjgxIDI2MC44YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xN2E3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NSAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2Ii8+PC9nPjxwYXRoIGQ9Ik03OS44Mi0uMDVjLTMuMzcgMS4wMi02LjY5IDIuMi05Ljk2IDMuNTQtNTcuNTUgMjMuNTctODUuMiA4OS41Ni02MS42MyAxNDcuMTIgOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3YTYxLjYgNjEuNiAwIDAxLTEwLjgtMzQuODNjMC0xNC4zIDQuOTMtMjguMTMgMTMuOTYtMzkuMjJhNjIuNjYgNjIuNjYgMCAwMTUuOTktNi4zNiAxMjUuODIgMTI1LjgyIDAgMDEtMS42OS03MC4wOUExMjguNDMgMTI4LjQzIDAgMDE3OS44Mi0uMDV6IiBmaWxsPSIjZTFjMDE0Ii8+PC9zdmc+"},53748:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM4LjMiIGhlaWdodD0iMjI4LjU3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM2MWM5ZTciPjxwYXRoIGQ9Ik05MS42NCA2Ni41NEw4Ni40NiA4NS45bDE4LjUyLTcuNjYgMTYuOCAxMC45MS0xLjU1LTE5Ljk3IDE1LjU3LTEyLjYyLTE5LjQ4LTQuNjktNy4xOS0xOC43LTEwLjQ4IDE3LjA3LTIwLjAxIDEuMDQgMTMgMTUuMjZNMTc2Ljc5IDQ1LjQ2bC03LjY3LTEwLjMtMy41MSAxMi4zNS0xMi4xNyA0LjEgMTAuNjYgNy4xNi4xNCAxMi44NCAxMC4xLTcuOTIgMTIuMjcgMy44My00LjQyLTEyLjA2IDcuNDMtMTAuNDgtMTIuODMuNDgiLz48cGF0aCBkPSJNMjEyLjE3IDE1NS42NGE1LjI1IDUuMjUgMCAwMS0xLjg3LTIuNzMgMzkuNTIgMzkuNTIgMCAwMC0zNy43OS0yOC4zOGMtMy4yIDAtNi40LjM5LTkuNSAxLjE2YTUuMjkgNS4yOSAwIDAxLTUuNjMtMi4xNCA0My41IDQzLjUgMCAwMC02NS4xNC03LjQ4IDQzLjM1IDQzLjM1IDAgMDAtMTMuOTUgMjcuOSA1LjMgNS4zIDAgMDEtMyA0LjI4Yy0uNTIuMjQtMS4wNC41MS0xLjU2LjgtLjQ0LjI0LS45MS40Mi0xLjQuNTNhMzMuODQgMzMuODQgMCAwMC0xOC43NyAxMS42IDMyLjk5IDMyLjk5IDAgMDAtNy40OCAyMS4wNWMwIDE4LjQ0IDE1LjEgMzMuNDUgMzMuNjUgMzMuNDVoMTEyYzE4LjU2IDAgMzMuNjYtMTUgMzMuNjYtMzMuNDVhMzMuMiAzMy4yIDAgMDAtMTMuMjItMjYuNTkiIHBhaW50LW9yZGVyPSJzdHJva2UgZmlsbCBtYXJrZXJzIi8+PC9nPjxwYXRoIGQ9Ik04Mi45LS4zM2ExMTcuNjIgMTE3LjYyIDAgMDAtMTAuMyAzLjY3QzEzLjA2IDI3LjczLTE1LjU1IDk2IDguODQgMTU1LjU0YTExNi40MyAxMTYuNDMgMCAwMDI2LjM2IDM5LjI0IDQ1LjYyIDQ1LjYyIDAgMDEtMS44Ny0xMi45QTQ2LjMgNDYuMyAwIDAxNDMuNyAxNTIuN2wuMDEtLjAxYTQ2LjU5IDQ2LjU5IDAgMDEyMC41Mi0xNC40N0ExMzAuNCAxMzAuNCAwIDAxNTYuNyA1MC42IDEzMi44OCAxMzIuODggMCAwMTgyLjktLjMyeiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},26625:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM4LjMiIGhlaWdodD0iMjI4LjU3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM2MWM5ZTciPjxwYXRoIGQ9Ik05OC40MyAxMDIuMTJsLTUuMTkgMTkuMzYgMTguNTMtNy42NSAxNi44IDEwLjktMS41Ni0xOS45NyAxNS41OC0xMi42MS0xOS40OS00LjctNy4xOC0xOC43LTEwLjQ4IDE3LjA4LTIwLjAyIDEuMDQgMTMuMDEgMTUuMjVNMTc2Ljc5IDQ1LjQ2bC03LjY3LTEwLjMtMy41MSAxMi4zNS0xMi4xNyA0LjEgMTAuNjYgNy4xNi4xNCAxMi44NCAxMC4xLTcuOTIgMTIuMjcgMy44My00LjQyLTEyLjA2IDcuNDMtMTAuNDgtMTIuODMuNDgiLz48cGF0aCBkPSJNMjIwLjc2IDE3OS41OWEzLjUzIDMuNTMgMCAwMS0xLjI2LTEuODQgMjYuNTQgMjYuNTQgMCAwMC0zMS43Ni0xOC4yOCAzLjU1IDMuNTUgMCAwMS0zLjc4LTEuNDQgMjkuMjEgMjkuMjEgMCAwMC01My4xMiAxMy43MiAzLjU2IDMuNTYgMCAwMS0yIDIuODdjLS4zNi4xNy0uNzEuMzUtMS4wNi41NC0uMy4xNi0uNjEuMjgtLjk1LjM1YTIyLjczIDIyLjczIDAgMDAtMTIuNiA3LjggMjIuMTUgMjIuMTUgMCAwMC01LjAyIDE0LjEzIDIyLjU2IDIyLjU2IDAgMDAyMi42IDIyLjQ3aDc1LjIzYTIyLjU2IDIyLjU2IDAgMDAyMi42LTIyLjQ3IDIyLjMgMjIuMyAwIDAwLTguODgtMTcuODUiIHBhaW50LW9yZGVyPSJzdHJva2UgZmlsbCBtYXJrZXJzIi8+PC9nPjxwYXRoIGQ9Ik04Mi40Ny0uMDJhMTE3LjYyIDExNy42MiAwIDAwLTEwLjMgMy42N0MxMi42MyAyOC4wMy0xNS45NyA5Ni4zIDguNDEgMTU1Ljg1YTExNS45MSAxMTUuOTEgMCAwMDYyLjkgNjMuNCAxMTYuMTggMTE2LjE4IDAgMDA1NC4zOSA4LjczYy0xNC40LTIuNzQtMjUuNDUtMTUuNDQtMjUuNDUtMzAuNTcgMC0zLjQ2LjU5LTYuODYgMS43LTEwLjA5YTEzMC40MiAxMzAuNDIgMCAwMS00MC4xMi01My4zNSAxMzAuNCAxMzAuNCAwIDAxLTUuNTYtODMuMDZBMTMyLjg4IDEzMi44OCAwIDAxODIuNDctLjAyeiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},87760:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTg5LjYzIiBoZWlnaHQ9IjIyOC40IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02Mi4xMSAxMzRhMTMwLjQgMTMwLjQgMCAwMS01LjU1LTgzLjA1QTEzMi44OSAxMzIuODkgMCAwMTgyLjc2IDBhMTE3LjY0IDExNy42NCAwIDAwLTEwLjMgMy42N0MxMi45MiAyOC4wNy0xNS43IDk2LjM0IDguNyAxNTUuODhhMTE1LjkxIDExNS45MSAwIDAwNjIuODkgNjMuNCAxMTUuOTMgMTE1LjkzIDAgMDA4OS4zLjM2YzMuMzktMS4zOSA2LjctMi45MiA5LjkyLTQuNjJhMTMyLjY2IDEzMi42NiAwIDAxLTU0LjQtMTcuOTIgMTMwLjQ1IDEzMC40NSAwIDAxLTU0LjMtNjMuMSIgZmlsbD0iI2UxYzAxNCIvPjxwYXRoIGQ9Ik0xMjIuMTUgMTIzLjNsLTUuMTkgMTkuMzcgMTguNTItNy42NSAxNi44MSAxMC45LTEuNTYtMTkuOTcgMTUuNTgtMTIuNjEtMTkuNDktNC43LTcuMTgtMTguNy0xMC40OCAxNy4wOC0yMC4wMiAxLjA0IDEzLjAxIDE1LjI1TTE3Ni43OSA0NS40NmwtNy42Ny0xMC4zLTMuNTEgMTIuMzUtMTIuMTcgNC4xIDEwLjY2IDcuMTYuMTQgMTIuODQgMTAuMS03LjkyIDEyLjI3IDMuODMtNC40Mi0xMi4wNiA3LjQzLTEwLjQ4LTEyLjgzLjQ4IiBmaWxsPSIjNjFjOWU3Ii8+PC9zdmc+"},37837:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxLjg3IiBoZWlnaHQ9IjIyMy40NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNDcuMjYgMTU1LjlIMjA0LjZjMjYuMDYgMCA0Ny4yNy0yMS4xIDQ3LjI3LTQ3YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0IDcuNDMgNy40MyAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NC02LjE1LS40NS03LjktM0E2MS4xIDYxLjEgMCAwMDEwNi4wMSAwYTYwLjg5IDYwLjg5IDAgMDAtNDEuMTggMTUuOTggNjAuODggNjAuODggMCAwMC0xOS42IDM5LjE5IDcuNDIgNy40MiAwIDAxLTQuMiA2Yy0uNzQuMzUtMS40OC43My0yLjIgMS4xMy0uNjIuMzQtMS4yOS42LTEuOTguNzVhNDcuNDcgNDcuNDcgMCAwMC0yNi4zNSAxNi4zQTQ2LjMgNDYuMyAwIDAwMCAxMDguOWMwIDI1LjkyIDIxLjIgNDcgNDcuMjYgNDciIGZpbGw9IiM0NDkyYTgiLz48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNNTUuNTUgMTc5Ljc0YTcuNDIgNy40MiAwIDAwLTQuOTIgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDEwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDIgNy40MiAwIDAwLTkuMjgtNC45M00xMTcuNzQgMTc5Ljc0YTcuNDMgNy40MyAwIDAwLTQuOTMgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTkuMjctNC45M00xNzkuOTIgMTc5Ljc0YTcuNDMgNy40MyAwIDAwLTQuOTIgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTkuMjgtNC45MyIvPjwvZz48L3N2Zz4="},53254:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM005NS4zNSAyNjMuNzdhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU3LjUzIDI2My43N2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yMTkuNzIgMjYzLjc3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMTk0LjQxIDI5MC41OWE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xMzIuNyAyODkuMzlhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk1LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjgwLjE3IDI2MS42YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI1NC44NiAyODguNDFhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjUiLz48L2c+PC9zdmc+"},14593:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM00xMjMuNTIgMjkxLjMzYTcuNDEgNy40MSAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTE4NS43IDI5MS4zM2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTMtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yNDcuODkgMjkxLjMzYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48L3N2Zz4="},97251:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM00xMTYuOTIgMjY0Ljk3YTcuNDEgNy40MSAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTE3OS4xIDI2NC45N2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTMtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yNDEuMjkgMjY0Ljk3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48cGF0aCBkPSJNMjE1Ljk4IDI5MS43OWE3LjQxIDcuNDEgMCAwMDcuMS05LjZMMjE0LjE1IDI1M2E3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NSAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2TTE1NC4yNyAyOTAuNTlhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjYiIGZpbGw9IiM2MWM5ZTciLz48L3N2Zz4="},16767:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjIxMy42MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjg4LjYgMTI5LjM3YTcuMzggNy4zOCAwIDAxLTIuNjMtMy44NCA1NS41MSA1NS41MSAwIDAwLTUzLjA4LTM5Ljg3Yy00LjUgMC05IC41NS0xMy4zNCAxLjYzLTMgLjc1LTYuMTUtLjQ1LTcuOS0zYTYxLjEgNjEuMSAwIDAwLTkxLjUxLTEwLjUgNjAuODkgNjAuODkgMCAwMC0xOS42IDM5LjIgNy40NCA3LjQ0IDAgMDEtNC4yIDZjLS43My4zNC0xLjQ3LjcxLTIuMiAxLjExLS42Mi4zNS0xLjI5LjYtMS45OC43NWE0Ny41NCA0Ny41NCAwIDAwLTI2LjM1IDE2LjMgNDYuMzMgNDYuMzMgMCAwMC0xMC41MSAyOS41NmMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42MyA0Ni42MyAwIDAwLTE4LjU2LTM3LjM0IiBmaWxsPSIjNjFjOWU3Ii8+PGcgZmlsbD0iI2RlYzYwZiI+PHBhdGggZD0iTTU1LjU3IDkyLjU3YTM2LjcgMzYuNyAwIDAwOS41NCAyNC43NiA2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzkgNzUuNjggNzUuNjggMCAwMTI1LjYxLTQ1Ljc4IDM2Ljk3IDM2Ljk3IDAgMDAtNTYuMzcgMzEuNDFNOTIuNSAzNS43N2M0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzVjcuNDVhNy40MiA3LjQyIDAgMTAtMTQuODUgMHYyMC45YzAgNC4wOSAzLjMzIDcuNDIgNy40MyA3LjQyTTUzLjk3IDQwLjdhNy40MiA3LjQyIDAgMTAxMi44Ny03LjQybC0xMC40NS0xOC4xYTcuNDMgNy40MyAwIDAwLTEyLjg2IDcuNDNsMTAuNDQgMTguMU0xNS4xIDU2LjQ0bDE4LjA5IDEwLjQ1YTcuNDcgNy40NyAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1bC0xOC4xLTEwLjQ1YTcuNDMgNy40MyAwIDAwLTcuNDMgMTIuODdNNy40MiAxMDAuMDRIMjguM2E3LjQzIDcuNDMgMCAwMDAtMTQuODZINy40MWE3LjQyIDcuNDIgMCAxMDAgMTQuODZNNDMuMzMgMTIwLjk3YTcuNDIgNy40MiAwIDAwLTEwLjE0LTIuNzJsLTE4LjEgMTAuNDRhNy40MyA3LjQzIDAgMDA3LjQzIDEyLjg2bDE4LjEtMTAuNDRhNy40MyA3LjQzIDAgMDAyLjcxLTEwLjE0TTEyMC45IDQzLjM3YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4xYTcuNDMgNy40MyAwIDAwLTEyLjg2LTcuNDJsLTEwLjQ1IDE4LjFhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE0Ii8+PC9nPjwvc3ZnPg=="},74351:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1NyAyMTkuNzRhNC4zIDQuMyAwIDAxLTEuNTMtMi4yNCAzMi4zOCAzMi4zOCAwIDAwLTMwLjk2LTIzLjI2Yy0yLjYzIDAtNS4yNS4zMi03Ljc4Ljk1YTQuMzMgNC4zMyAwIDAxLTQuNjEtMS43NSAzNS42MyAzNS42MyAwIDAwLTUzLjM4LTYuMTMgMzUuNTIgMzUuNTIgMCAwMC0xMS40MyAyMi44NyA0LjM0IDQuMzQgMCAwMS0yLjQ1IDMuNWMtLjQyLjItLjg2LjQyLTEuMjguNjUtLjM2LjItLjc1LjM1LTEuMTUuNDRhMjcuNzMgMjcuNzMgMCAwMC0xNS4zNyA5LjUgMjcuMDMgMjcuMDMgMCAwMC02LjEzIDE3LjI1IDI3LjUyIDI3LjUyIDAgMDAyNy41NiAyNy40aDkxLjc3YzE1LjIgMCAyNy41Ny0xMi4yOSAyNy41Ny0yNy40YTI3LjIgMjcuMiAwIDAwLTEwLjgyLTIxLjc4IiBmaWxsPSIjNjFjOWU3IiBwYWludC1vcmRlcj0ic3Ryb2tlIGZpbGwgbWFya2VycyIvPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik0xNDAuMiA3MC43M0E2OS44NiA2OS44NiAwIDAwNzAuNCAxNDAuNWMwIDMzLjMzIDIzLjUgNjEuMjcgNTQuOCA2OC4xNGE0MC42IDQwLjYgMCAwMTEwLjAzLTUuMSA0OC42MSA0OC42MSAwIDAxMTQuNy0yNS41OGguMDFhNDguNTkgNDguNTkgMCAwMTUzLjUtOC4wNSA2OS4zNSA2OS4zNSAwIDAwNi41Mi0yOS40MSA2OS44NiA2OS44NiAwIDAwLTY5Ljc4LTY5Ljc4em0tLjkgMTMxLjQ0bC0uMS4wNC0uMDQuMDMuMTMtLjA3ek0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU04OS41NCA1OS45MWE3LjQzIDcuNDMgMCAwMDYuNDMtMTEuMTRMODAuMjQgMjEuNTNhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40M0w4My4xIDU2LjJhNy40MiA3LjQyIDAgMDA2LjQzIDMuNzFNMTguNzYgNzAuMTRhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE1TDQ4LjcyIDk2YTcuNDIgNy40MiAwIDEwNy40My0xMi44NkwyOC45IDY3LjQyYTcuNDMgNy40MyAwIDAwLTEwLjE0IDIuNzJNNDYuMjggMTQwLjI3YzAtNC4xLTMuMzMtNy40Mi03LjQzLTcuNDJINy40YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmM0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzTTI3My4wNSAxMzIuODVoLTMxLjQ2YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmE3LjQzIDcuNDMgMCAwMDAtMTQuODVNNDguNzMgMTg0LjUxTDIxLjUgMjAwLjI0YTcuNDMgNy40MyAwIDEwNy40MiAxMi44NmwyNy4yNS0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQzLTEyLjg2TTI1MS41NCA2Ny40MkwyMjQuMyA4My4xNUE3LjQzIDcuNDMgMCAwMDIzMS43MiA5NmwyNy4yNC0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQyLTEyLjg2TTgzLjEgMjI0LjM0bC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDEyLjg3IDcuNDNsMTUuNzMtMjcuMjVhNy40MyA3LjQzIDAgMDAtMTIuODctNy40Mk0xODcuMiA1OC45MWE3LjQgNy40IDAgMDAxMC4xNC0yLjcxbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDEwLTEyLjg2LTcuNDJsLTE1LjczIDI3LjI0YTcuNDMgNy40MyAwIDAwMi43MSAxMC4xNCIvPjwvZz48L3N2Zz4="},71211:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZGVjNjBmIj48cGF0aCBkPSJNMTQwLjIyIDIxMC4wNGMzOC40OCAwIDY5Ljc4LTMxLjMgNjkuNzgtNjkuNzhzLTMxLjMtNjkuNzgtNjkuNzgtNjkuNzhjLTM4LjQ3IDAtNjkuNzggMzEuMy02OS43OCA2OS43OHMzMS4zIDY5Ljc4IDY5Ljc4IDY5Ljc4TTEzMi44IDM4LjlhNy40MyA3LjQzIDAgMDAxNC44NSAwVjcuNDRhNy40MyA3LjQzIDAgMDAtMTQuODUgMFYzOC45TTEzMi44IDI0MS42M3YzMS40NmE3LjQzIDcuNDMgMCAwMDE0Ljg1IDB2LTMxLjQ2YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBNODkuNTQgNTkuOTFhNy40MyA3LjQzIDAgMDA2LjQzLTExLjE0TDgwLjI0IDIxLjUzYTcuNDMgNy40MyAwIDAwLTEyLjg2IDcuNDNMODMuMSA1Ni4yYTcuNDIgNy40MiAwIDAwNi40MyAzLjcxTTE4Ny4yIDIyMS42MmE3LjQzIDcuNDMgMCAwMC0yLjcyIDEwLjE0TDIwMC4yIDI1OWE3LjQyIDcuNDIgMCAxMDEyLjg2LTcuNDJsLTE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEwLjE1LTIuNzFNMTguNzYgNzAuMTRhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE1TDQ4LjcyIDk2YTcuNDIgNy40MiAwIDEwNy40My0xMi44NkwyOC45IDY3LjQyYTcuNDMgNy40MyAwIDAwLTEwLjE0IDIuNzJNMjU4Ljk3IDIwMC4yNGwtMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40MiAxMi44N2wyNy4yNCAxNS43M2E3LjQgNy40IDAgMDAxMC4xNC0yLjcyIDcuNDMgNy40MyAwIDAwLTIuNzEtMTAuMTVNNDYuMjggMTQwLjI3YzAtNC4xLTMuMzMtNy40Mi03LjQzLTcuNDJINy40YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmM0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzTTI3My4wNSAxMzIuODVoLTMxLjQ2YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmE3LjQzIDcuNDMgMCAwMDAtMTQuODVNNDguNzMgMTg0LjUxTDIxLjUgMjAwLjI0YTcuNDMgNy40MyAwIDEwNy40MiAxMi44NmwyNy4yNS0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQzLTEyLjg2TTI1MS41NCA2Ny40MkwyMjQuMyA4My4xNUE3LjQzIDcuNDMgMCAwMDIzMS43MiA5NmwyNy4yNC0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQyLTEyLjg2TTgzLjEgMjI0LjM0bC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDEyLjg3IDcuNDNsMTUuNzMtMjcuMjVhNy40MyA3LjQzIDAgMDAtMTIuODctNy40Mk0xODcuMiA1OC45MWE3LjQgNy40IDAgMDAxMC4xNC0yLjcxbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDEwLTEyLjg2LTcuNDJsLTE1LjczIDI3LjI0YTcuNDMgNy40MyAwIDAwMi43MSAxMC4xNCIgZmlsbD0iI2RlYzYwZiIvPjwvZz48L3N2Zz4K"}},e={};function u(M){var t=e[M];if(void 0!==t)return t.exports;var N=e[M]={id:M,loaded:!1,exports:{}};return n[M].call(N.exports,N,N.exports,u),N.loaded=!0,N.exports}u.m=n,u.amdD=function(){throw new Error("define cannot be used indirect")},u.amdO={},M=[],u.O=function(t,n,e,N){if(!n){var j=1/0;for(D=0;D<M.length;D++){n=M[D][0],e=M[D][1],N=M[D][2];for(var A=!0,i=0;i<n.length;i++)(!1&N||j>=N)&&Object.keys(u.O).every((function(M){return u.O[M](n[i])}))?n.splice(i--,1):(A=!1,N<j&&(j=N));if(A){M.splice(D--,1);var r=e();void 0!==r&&(t=r)}}return t}N=N||0;for(var D=M.length;D>0&&M[D-1][2]>N;D--)M[D]=M[D-1];M[D]=[n,e,N]},u.n=function(M){var t=M&&M.__esModule?function(){return M.default}:function(){return M};return u.d(t,{a:t}),t},u.d=function(M,t){for(var n in t)u.o(t,n)&&!u.o(M,n)&&Object.defineProperty(M,n,{enumerable:!0,get:t[n]})},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(M){if("object"==typeof window)return window}}(),u.o=function(M,t){return Object.prototype.hasOwnProperty.call(M,t)},u.r=function(M){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(M,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(M,"__esModule",{value:!0})},u.nmd=function(M){return M.paths=[],M.children||(M.children=[]),M},u.j=275,function(){u.b=document.baseURI||self.location.href;var M={275:0};u.O.j=function(t){return 0===M[t]};var t=function(t,n){var e,N,j=n[0],A=n[1],i=n[2],r=0;if(j.some((function(t){return 0!==M[t]}))){for(e in A)u.o(A,e)&&(u.m[e]=A[e]);if(i)var D=i(u)}for(t&&t(n);r<j.length;r++)N=j[r],u.o(M,N)&&M[N]&&M[N][0](),M[N]=0;return u.O(D)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var N=u.O(void 0,[874],(function(){return u(10592)}));N=u.O(N)}();
+//# sourceMappingURL=weather_status-weather-status.js.map?v=74d39db8be1a0a3a3085 \ No newline at end of file
diff --git a/dist/weather_status-weather-status.js.map b/dist/weather_status-weather-status.js.map
index b769773c0a1..b90971de5f2 100644
--- a/dist/weather_status-weather-status.js.map
+++ b/dist/weather_status-weather-status.js.map
@@ -1 +1 @@
-{"version":3,"file":"weather_status-weather-status.js?v=88e3f9aef3a7464d19c8","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/weather_status/src/services/weatherStatusService.js","webpack:///nextcloud/apps/weather_status/src/App.vue","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/weather_status/src/App.vue?aa30","webpack://nextcloud/./apps/weather_status/src/App.vue?02d4","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=template&id=6acc2acd&","webpack:///nextcloud/apps/weather_status/src/weather-status.js","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","/**\n * @copyright Copyright (c) 2020, Julien Veyssier\n *\n * @author Julien Veyssier <eneiluj@posteo.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n *\n *\n * @param {string} lat the latitude\n * @param {string} lon the longitude\n * @return {Promise<object>}\n */\nconst setLocation = async (lat, lon) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.put(url, {\n\t\taddress: '',\n\t\tlat,\n\t\tlon,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {string} address The location\n * @return {Promise<object>}\n */\nconst setAddress = async (address) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.put(url, {\n\t\taddress,\n\t\tlat: null,\n\t\tlon: null,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {string} mode can be 1 browser or 2 custom\n * @return {Promise<object>}\n */\nconst setMode = async (mode) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/mode')\n\tconst response = await HttpClient.put(url, {\n\t\tmode,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @return {Promise<object>}\n */\nconst usePersonalAddress = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/use-personal')\n\tconst response = await HttpClient.put(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the location information for current user\n *\n * @return {Promise<object>}\n */\nconst getLocation = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the weather forecast\n *\n * @return {Promise<object>}\n */\nconst fetchForecast = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/forecast')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the location favorites\n *\n * @return {Promise<object>}\n */\nconst getFavorites = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/favorites')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {Array} favorites List of favorite addresses\n * @return {Promise<object>}\n */\nconst saveFavorites = async (favorites) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/favorites')\n\tconst response = await HttpClient.put(url, {\n\t\tfavorites,\n\t})\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tusePersonalAddress,\n\tsetMode,\n\tgetLocation,\n\tsetLocation,\n\tsetAddress,\n\tfetchForecast,\n\tgetFavorites,\n\tsaveFavorites,\n}\n","<!--\n - @copyright Copyright (c) 2020 Julien Veyssier <eneiluj@posteo.net>\n - @author Julien Veyssier <eneiluj@posteo.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{ inline }\">\n\t\t<div id=\"weather-status-menu-item\">\n\t\t\t<Actions class=\"weather-status-menu-item__subheader\"\n\t\t\t\t:default-icon=\"weatherIcon\"\n\t\t\t\t:menu-title=\"currentWeatherMessage\">\n\t\t\t\t<ActionText v-if=\"gotWeather\"\n\t\t\t\t\t:icon=\"futureWeatherIcon\">\n\t\t\t\t\t{{ forecastMessage }}\n\t\t\t\t</ActionText>\n\t\t\t\t<ActionLink v-if=\"gotWeather\"\n\t\t\t\t\ticon=\"icon-address\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t:href=\"weatherLinkTarget\"\n\t\t\t\t\t:close-after-click=\"true\">\n\t\t\t\t\t{{ locationText }}\n\t\t\t\t</ActionLink>\n\t\t\t\t<ActionButton v-if=\"gotWeather\"\n\t\t\t\t\t:icon=\"addRemoveFavoriteIcon\"\n\t\t\t\t\t@click=\"onAddRemoveFavoriteClick\">\n\t\t\t\t\t{{ addRemoveFavoriteText }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionSeparator v-if=\"address && !errorMessage\" />\n\t\t\t\t<ActionButton icon=\"icon-crosshair\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"onBrowserLocationClick\">\n\t\t\t\t\t{{ t('weather_status', 'Detect location') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionInput ref=\"addressInput\"\n\t\t\t\t\t:disabled=\"false\"\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t@submit=\"onAddressSubmit\">\n\t\t\t\t\t{{ t('weather_status', 'Set custom address') }}\n\t\t\t\t</ActionInput>\n\t\t\t\t<ActionButton v-show=\"favorites.length > 0\"\n\t\t\t\t\t:icon=\"toggleFavoritesIcon\"\n\t\t\t\t\t@click=\"showFavorites = !showFavorites\">\n\t\t\t\t\t{{ t('weather_status', 'Favorites') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-for=\"f in displayedFavorites\"\n\t\t\t\t\t:key=\"f\"\n\t\t\t\t\ticon=\"icon-starred\"\n\t\t\t\t\t@click=\"onFavoriteClick($event, f)\">\n\t\t\t\t\t{{ f }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\n\t\t</div>\n\t</li>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport moment from '@nextcloud/moment'\nimport { getLocale } from '@nextcloud/l10n'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport * as network from './services/weatherStatusService'\n\nconst MODE_BROWSER_LOCATION = 1\nconst MODE_MANUAL_LOCATION = 2\nconst weatherOptions = {\n\tclearsky_day: {\n\t\ticon: 'icon-clearsky-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),\n\t},\n\tclearsky_night: {\n\t\ticon: 'icon-clearsky-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),\n\t},\n\tcloudy: {\n\t\ticon: 'icon-cloudy',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} cloudy', { temperature, unit }),\n\t},\n\tfair_day: {\n\t\ticon: 'icon-fair-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),\n\t},\n\tfair_night: {\n\t\ticon: 'icon-fair-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),\n\t},\n\tpartlycloudy_day: {\n\t\ticon: 'icon-partlycloudy-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),\n\t},\n\tpartlycloudy_night: {\n\t\ticon: 'icon-partlycloudy-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),\n\t},\n\tfog: {\n\t\ticon: 'icon-fog',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} foggy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} foggy', { temperature, unit }),\n\t},\n\tlightrain: {\n\t\ticon: 'icon-lightrain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall', { temperature, unit }),\n\t},\n\train: {\n\t\ticon: 'icon-rain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall', { temperature, unit }),\n\t},\n\theavyrain: {\n\t\ticon: 'icon-heavyrain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall', { temperature, unit }),\n\t},\n\trainshowers_day: {\n\t\ticon: 'icon-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),\n\t},\n\trainshowers_night: {\n\t\ticon: 'icon-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),\n\t},\n\tlightrainshowers_day: {\n\t\ticon: 'icon-light-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),\n\t},\n\tlightrainshowers_night: {\n\t\ticon: 'icon-light-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),\n\t},\n\theavyrainshowers_day: {\n\t\ticon: 'icon-heavy-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),\n\t},\n\theavyrainshowers_night: {\n\t\ticon: 'icon-heavy-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),\n\t},\n}\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tActions, ActionButton, ActionInput, ActionLink, ActionSeparator, ActionText,\n\t},\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlocale: getLocale(),\n\t\t\tloading: true,\n\t\t\terrorMessage: '',\n\t\t\tmode: MODE_BROWSER_LOCATION,\n\t\t\taddress: null,\n\t\t\tlat: null,\n\t\t\tlon: null,\n\t\t\t// how many hours ahead do we want to see the forecast?\n\t\t\toffset: 5,\n\t\t\tforecasts: [],\n\t\t\tloop: null,\n\t\t\tfavorites: [],\n\t\t\tshowFavorites: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tuseFahrenheitLocale() {\n\t\t\treturn ['en_US', 'en_MH', 'en_FM', 'en_PW', 'en_KY', 'en_LR'].includes(this.locale)\n\t\t},\n\t\ttemperatureUnit() {\n\t\t\treturn this.useFahrenheitLocale ? '°F' : '°C'\n\t\t},\n\t\tlocationText() {\n\t\t\treturn t('weather_status', 'More weather for {adr}', { adr: this.address })\n\t\t},\n\t\ttemperature() {\n\t\t\treturn this.getTemperature(this.forecasts, 0)\n\t\t},\n\t\tfutureTemperature() {\n\t\t\treturn this.getTemperature(this.forecasts, this.offset)\n\t\t},\n\t\tweatherCode() {\n\t\t\treturn this.getWeatherCode(this.forecasts, 0)\n\t\t},\n\t\tfutureWeatherCode() {\n\t\t\treturn this.getWeatherCode(this.forecasts, this.offset)\n\t\t},\n\t\tweatherIcon() {\n\t\t\treturn this.getWeatherIcon(this.weatherCode, this.loading)\n\t\t},\n\t\tfutureWeatherIcon() {\n\t\t\treturn this.getWeatherIcon(this.futureWeatherCode, this.loading)\n\t\t},\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcurrentWeatherMessage() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('weather_status', 'Loading weather')\n\t\t\t} else if (this.errorMessage) {\n\t\t\t\treturn this.errorMessage\n\t\t\t} else {\n\t\t\t\treturn this.getWeatherMessage(this.weatherCode, this.temperature)\n\t\t\t}\n\t\t},\n\t\tforecastMessage() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('weather_status', 'Loading weather')\n\t\t\t} else {\n\t\t\t\treturn this.getWeatherMessage(this.futureWeatherCode, this.futureTemperature, true)\n\t\t\t}\n\t\t},\n\t\tweatherLinkTarget() {\n\t\t\treturn 'https://www.windy.com/-Rain-thunder-rain?rain,' + this.lat + ',' + this.lon + ',11'\n\t\t},\n\t\tgotWeather() {\n\t\t\treturn this.address && !this.errorMessage\n\t\t},\n\t\taddRemoveFavoriteIcon() {\n\t\t\treturn this.currentAddressIsFavorite\n\t\t\t\t? 'icon-starred'\n\t\t\t\t: 'icon-star'\n\t\t},\n\t\taddRemoveFavoriteText() {\n\t\t\treturn this.currentAddressIsFavorite\n\t\t\t\t? t('weather_status', 'Remove from favorites')\n\t\t\t\t: t('weather_status', 'Add as favorite')\n\t\t},\n\t\tcurrentAddressIsFavorite() {\n\t\t\treturn this.favorites.find((f) => {\n\t\t\t\treturn f === this.address\n\t\t\t})\n\t\t},\n\t\ttoggleFavoritesIcon() {\n\t\t\treturn this.showFavorites\n\t\t\t\t? 'icon-triangle-s'\n\t\t\t\t: 'icon-triangle-e'\n\t\t},\n\t\tdisplayedFavorites() {\n\t\t\treturn this.showFavorites\n\t\t\t\t? this.favorites\n\t\t\t\t: []\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.initWeatherStatus()\n\t},\n\tmethods: {\n\t\tasync initWeatherStatus() {\n\t\t\ttry {\n\t\t\t\tconst loc = await network.getLocation()\n\t\t\t\tthis.lat = loc.lat\n\t\t\t\tthis.lon = loc.lon\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.mode = loc.mode\n\n\t\t\t\tif (this.mode === MODE_BROWSER_LOCATION) {\n\t\t\t\t\tthis.askBrowserLocation()\n\t\t\t\t} else if (this.mode === MODE_MANUAL_LOCATION) {\n\t\t\t\t\tthis.startLoop()\n\t\t\t\t}\n\t\t\t\tconst favs = await network.getFavorites()\n\t\t\t\tthis.favorites = favs\n\t\t\t} catch (err) {\n\t\t\t\tif (err?.code === 'ECONNABORTED') {\n\t\t\t\t\tconsole.info('The weather status request was cancelled because the user navigates.')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error getting the weather status information.'))\n\t\t\t\t}\n\t\t\t\tconsole.error(err)\n\t\t\t}\n\t\t},\n\t\tstartLoop() {\n\t\t\tclearInterval(this.loop)\n\t\t\tif (this.lat && this.lon) {\n\t\t\t\tthis.loop = setInterval(() => this.getForecast(), 60 * 1000 * 60)\n\t\t\t\tthis.getForecast()\n\t\t\t} else {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\taskBrowserLocation() {\n\t\t\tthis.loading = true\n\t\t\tthis.errorMessage = ''\n\t\t\tif (navigator.geolocation && window.isSecureContext) {\n\t\t\t\tnavigator.geolocation.getCurrentPosition((position) => {\n\t\t\t\t\tconsole.debug('browser location success')\n\t\t\t\t\tthis.lat = position.coords.latitude\n\t\t\t\t\tthis.lon = position.coords.longitude\n\t\t\t\t\tthis.saveMode(MODE_BROWSER_LOCATION)\n\t\t\t\t\tthis.mode = MODE_BROWSER_LOCATION\n\t\t\t\t\tthis.saveLocation(this.lat, this.lon)\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tconsole.debug('location permission refused')\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t\tthis.saveMode(MODE_MANUAL_LOCATION)\n\t\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\t\t// fallback on what we have if possible\n\t\t\t\t\tif (this.lat && this.lon) {\n\t\t\t\t\t\tthis.startLoop()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.usePersonalAddress()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.debug('no secure context!')\n\t\t\t\tthis.saveMode(MODE_MANUAL_LOCATION)\n\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\tthis.startLoop()\n\t\t\t}\n\t\t},\n\t\tasync getForecast() {\n\t\t\ttry {\n\t\t\t\tthis.forecasts = await network.fetchForecast()\n\t\t\t} catch (err) {\n\t\t\t\tthis.errorMessage = t('weather_status', 'No weather information found')\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t\tasync setAddress(address) {\n\t\t\tthis.loading = true\n\t\t\tthis.errorMessage = ''\n\t\t\ttry {\n\t\t\t\tconst loc = await network.setAddress(address)\n\t\t\t\tif (loc.success) {\n\t\t\t\t\tthis.lat = loc.lat\n\t\t\t\t\tthis.lon = loc.lon\n\t\t\t\t\tthis.address = loc.address\n\t\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\t\tthis.startLoop()\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorMessage = t('weather_status', 'Location not found')\n\t\t\t\t\tthis.loading = false\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error setting the location address.'))\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tasync saveLocation(lat, lon) {\n\t\t\ttry {\n\t\t\t\tconst loc = await network.setLocation(lat, lon)\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.startLoop()\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error setting the location.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t\tasync saveMode(mode) {\n\t\t\ttry {\n\t\t\t\tawait network.setMode(mode)\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error saving the mode.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t\tonBrowserLocationClick() {\n\t\t\tthis.askBrowserLocation()\n\t\t},\n\t\tasync usePersonalAddress() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst loc = await network.usePersonalAddress()\n\t\t\t\tthis.lat = loc.lat\n\t\t\t\tthis.lon = loc.lon\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\tthis.startLoop()\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error using personal address.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tonAddressSubmit() {\n\t\t\tconst newAddress = this.$refs.addressInput.$el.querySelector('input[type=\"text\"]').value\n\t\t\tthis.setAddress(newAddress)\n\t\t},\n\t\tgetLocalizedTemperature(celcius) {\n\t\t\treturn this.useFahrenheitLocale\n\t\t\t\t? (celcius * (9 / 5)) + 32\n\t\t\t\t: celcius\n\t\t},\n\t\tonAddRemoveFavoriteClick() {\n\t\t\tconst currentIsFavorite = this.currentAddressIsFavorite\n\t\t\tif (currentIsFavorite) {\n\t\t\t\tconst i = this.favorites.indexOf(currentIsFavorite)\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.favorites.splice(i, 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.favorites.push(this.address)\n\t\t\t}\n\t\t\tnetwork.saveFavorites(this.favorites)\n\t\t},\n\t\tonFavoriteClick(e, favAddress) {\n\t\t\t// clicked on the icon\n\t\t\tif (e.target.classList.contains('action-button__icon')) {\n\t\t\t\tconst i = this.favorites.indexOf(favAddress)\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.favorites.splice(i, 1)\n\t\t\t\t}\n\t\t\t\tnetwork.saveFavorites(this.favorites)\n\t\t\t} else if (favAddress !== this.address) {\n\t\t\t\t// clicked on the text\n\t\t\t\tthis.setAddress(favAddress)\n\t\t\t}\n\t\t},\n\t\tformatTime(time) {\n\t\t\treturn moment(time).format('LT')\n\t\t},\n\t\tgetTemperature(forecasts, offset = 0) {\n\t\t\treturn forecasts.length > offset ? forecasts[offset].data.instant.details.air_temperature : ''\n\t\t},\n\t\tgetWeatherCode(forecasts, offset = 0) {\n\t\t\treturn forecasts.length > offset ? forecasts[offset].data.next_1_hours.summary.symbol_code : ''\n\t\t},\n\t\tgetWeatherIcon(weatherCode, loading) {\n\t\t\tif (loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t} else {\n\t\t\t\treturn weatherCode && weatherCode in weatherOptions\n\t\t\t\t\t? weatherOptions[weatherCode].icon\n\t\t\t\t\t: 'icon-fair-day'\n\t\t\t}\n\t\t},\n\t\tgetWeatherMessage(weatherCode, temperature, later = false) {\n\t\t\treturn weatherCode && weatherCode in weatherOptions\n\t\t\t\t? weatherOptions[weatherCode].text(\n\t\t\t\t\tMath.round(this.getLocalizedTemperature(temperature)),\n\t\t\t\t\tthis.temperatureUnit,\n\t\t\t\t\tlater\n\t\t\t\t)\n\t\t\t\t: t('weather_status', 'Set location for weather')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.icon-weather-status {\n\tbackground-image: url('./../img/app-dark.svg');\n}\nbody.theme--dark .icon-weather-status {\n\tbackground-image: url('./../img/app.svg');\n}\n.icon-clearsky-day {\n\tbackground-image: url('./../img/sun.svg');\n}\n.icon-clearsky-night {\n\tbackground-image: url('./../img/moon.svg');\n}\n.icon-cloudy {\n\tbackground-image: url('./../img/cloud-cloud.svg');\n}\n.icon-fair-day {\n\tbackground-image: url('./../img/sun-small-cloud.svg');\n}\n.icon-fair-night {\n\tbackground-image: url('./../img/moon-small-cloud.svg');\n}\n.icon-partlycloudy-day {\n\tbackground-image: url('./../img/sun-cloud.svg');\n}\n.icon-partlycloudy-night {\n\tbackground-image: url('./../img/moon-cloud.svg');\n}\n.icon-fog {\n\tbackground-image: url('./../img/fog.svg');\n}\n.icon-lightrain {\n\tbackground-image: url('./../img/light-rain.svg');\n}\n.icon-rain {\n\tbackground-image: url('./../img/rain.svg');\n}\n.icon-heavyrain {\n\tbackground-image: url('./../img/heavy-rain.svg');\n}\n.icon-light-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\n}\n.icon-light-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\n}\n.icon-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-rain.svg');\n}\n.icon-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-rain.svg');\n}\n.icon-heavy-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\n}\n.icon-heavy-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\n}\n.icon-crosshair {\n background-color: var(--color-main-text);\n padding: 0 !important;\n mask: url(./../img/cross.svg) no-repeat;\n mask-size: 18px 18px;\n mask-position: center;\n -webkit-mask: url(./../img/cross.svg) no-repeat;\n -webkit-mask-size: 18px 18px;\n -webkit-mask-position: center;\n min-width: 44px !important;\n min-height: 44px !important;\n}\n\nli:not(.inline) .weather-status-menu-item {\n\t&__header {\n\t\tdisplay: block;\n\t\talign-items: center;\n\t\tcolor: var(--color-main-text);\n\t\tpadding: 10px 12px 5px 12px;\n\t\tbox-sizing: border-box;\n\t\topacity: 1;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tmax-width: 250px;\n\t\ttext-overflow: ellipsis;\n\t\tmin-width: 175px;\n\t}\n\n\t&__subheader {\n\t\twidth: 100%;\n\n\t\t.trigger > .icon {\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-size: 16px;\n\t\t\tborder: 0;\n\t\t\tborder-radius: 0;\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 40px;\n\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.inline .weather-status-menu-item__subheader {\n\twidth: 100%;\n\n\t.trigger > .icon {\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: normal;\n\t\tpadding-left: 40px;\n\n\t\t&.icon-loading-small {\n\t\t\t&::after {\n\t\t\t\tleft: 21px;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6acc2acd&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:{ inline: _vm.inline }},[_c('div',{attrs:{\"id\":\"weather-status-menu-item\"}},[_c('Actions',{staticClass:\"weather-status-menu-item__subheader\",attrs:{\"default-icon\":_vm.weatherIcon,\"menu-title\":_vm.currentWeatherMessage}},[(_vm.gotWeather)?_c('ActionText',{attrs:{\"icon\":_vm.futureWeatherIcon}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.forecastMessage)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.gotWeather)?_c('ActionLink',{attrs:{\"icon\":\"icon-address\",\"target\":\"_blank\",\"href\":_vm.weatherLinkTarget,\"close-after-click\":true}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.locationText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.gotWeather)?_c('ActionButton',{attrs:{\"icon\":_vm.addRemoveFavoriteIcon},on:{\"click\":_vm.onAddRemoveFavoriteClick}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.addRemoveFavoriteText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.address && !_vm.errorMessage)?_c('ActionSeparator'):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-crosshair\",\"close-after-click\":true},on:{\"click\":_vm.onBrowserLocationClick}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Detect location'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionInput',{ref:\"addressInput\",attrs:{\"disabled\":false,\"icon\":\"icon-rename\",\"type\":\"text\",\"value\":\"\"},on:{\"submit\":_vm.onAddressSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Set custom address'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.favorites.length > 0),expression:\"favorites.length > 0\"}],attrs:{\"icon\":_vm.toggleFavoritesIcon},on:{\"click\":function($event){_vm.showFavorites = !_vm.showFavorites}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Favorites'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.displayedFavorites),function(f){return _c('ActionButton',{key:f,attrs:{\"icon\":\"icon-starred\"},on:{\"click\":function($event){return _vm.onFavoriteClick($event, f)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(f)+\"\\n\\t\\t\\t\")])})],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julien Veyssier <eneiluj@posteo.net>\n *\n * @author Julien Veyssier <eneiluj@posteo.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport App from './App'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('weather', (el) => {\n\t\tconst Dashboard = Vue.extend(App)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t}).$mount(el)\n\t})\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./../img/app-dark.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./../img/app.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"./../img/sun.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"./../img/moon.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"./../img/cloud-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"./../img/sun-small-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"./../img/moon-small-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"./../img/sun-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"./../img/moon-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"./../img/fog.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"./../img/light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"./../img/rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"./../img/heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"./../img/sun-cloud-light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"./../img/moon-cloud-light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"./../img/sun-cloud-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"./../img/moon-cloud-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"./../img/sun-cloud-heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_18___ = new URL(\"./../img/moon-cloud-heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_19___ = new URL(\"./../img/cross.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".icon-weather-status{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}body.theme--dark .icon-weather-status{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.icon-clearsky-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.icon-clearsky-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \")}.icon-cloudy{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \")}.icon-fair-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \")}.icon-fair-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \")}.icon-partlycloudy-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \")}.icon-partlycloudy-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \")}.icon-fog{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \")}.icon-lightrain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \")}.icon-rain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \")}.icon-heavyrain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \")}.icon-light-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \")}.icon-light-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \")}.icon-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \")}.icon-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \")}.icon-heavy-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \")}.icon-heavy-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \")}.icon-crosshair{background-color:var(--color-main-text);padding:0 !important;mask:url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") no-repeat;mask-size:18px 18px;mask-position:center;-webkit-mask:url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") no-repeat;-webkit-mask-size:18px 18px;-webkit-mask-position:center;min-width:44px !important;min-height:44px !important}li:not(.inline) .weather-status-menu-item__header{display:block;align-items:center;color:var(--color-main-text);padding:10px 12px 5px 12px;box-sizing:border-box;opacity:1;white-space:nowrap;width:100%;text-align:center;max-width:250px;text-overflow:ellipsis;min-width:175px}li:not(.inline) .weather-status-menu-item__subheader{width:100%}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon{background-color:var(--color-main-background);background-size:16px;border:0;border-radius:0;font-weight:normal;padding-left:40px}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:hover,li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:focus{box-shadow:inset 4px 0 var(--color-primary-element)}.inline .weather-status-menu-item__subheader{width:100%}.inline .weather-status-menu-item__subheader .trigger>.icon{background-size:16px;border:0;border-radius:var(--border-radius-pill);font-weight:normal;padding-left:40px}.inline .weather-status-menu-item__subheader .trigger>.icon.icon-loading-small::after{left:21px}li{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/weather_status/src/App.vue\"],\"names\":[],\"mappings\":\"AAwgBA,qBACC,wDAAA,CAED,sCACC,wDAAA,CAED,mBACC,wDAAA,CAED,qBACC,wDAAA,CAED,aACC,wDAAA,CAED,eACC,wDAAA,CAED,iBACC,wDAAA,CAED,uBACC,wDAAA,CAED,yBACC,wDAAA,CAED,UACC,wDAAA,CAED,gBACC,yDAAA,CAED,WACC,yDAAA,CAED,gBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,sBACC,yDAAA,CAED,wBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,gBACI,uCAAA,CACA,oBAAA,CACA,uDAAA,CACA,mBAAA,CACA,oBAAA,CACA,+DAAA,CACA,2BAAA,CACA,4BAAA,CACA,yBAAA,CACA,0BAAA,CAIH,kDACC,aAAA,CACA,kBAAA,CACA,4BAAA,CACA,0BAAA,CACA,qBAAA,CACA,SAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,qDACC,UAAA,CAEA,oEACC,6CAAA,CACA,oBAAA,CACA,QAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CAEA,oJAEC,mDAAA,CAMJ,6CACC,UAAA,CAEA,4DACC,oBAAA,CACA,QAAA,CACA,uCAAA,CACA,kBAAA,CACA,iBAAA,CAGC,sFACC,SAAA,CAMJ,GACC,oBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.icon-weather-status {\\n\\tbackground-image: url('./../img/app-dark.svg');\\n}\\nbody.theme--dark .icon-weather-status {\\n\\tbackground-image: url('./../img/app.svg');\\n}\\n.icon-clearsky-day {\\n\\tbackground-image: url('./../img/sun.svg');\\n}\\n.icon-clearsky-night {\\n\\tbackground-image: url('./../img/moon.svg');\\n}\\n.icon-cloudy {\\n\\tbackground-image: url('./../img/cloud-cloud.svg');\\n}\\n.icon-fair-day {\\n\\tbackground-image: url('./../img/sun-small-cloud.svg');\\n}\\n.icon-fair-night {\\n\\tbackground-image: url('./../img/moon-small-cloud.svg');\\n}\\n.icon-partlycloudy-day {\\n\\tbackground-image: url('./../img/sun-cloud.svg');\\n}\\n.icon-partlycloudy-night {\\n\\tbackground-image: url('./../img/moon-cloud.svg');\\n}\\n.icon-fog {\\n\\tbackground-image: url('./../img/fog.svg');\\n}\\n.icon-lightrain {\\n\\tbackground-image: url('./../img/light-rain.svg');\\n}\\n.icon-rain {\\n\\tbackground-image: url('./../img/rain.svg');\\n}\\n.icon-heavyrain {\\n\\tbackground-image: url('./../img/heavy-rain.svg');\\n}\\n.icon-light-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\\n}\\n.icon-light-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\\n}\\n.icon-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-rain.svg');\\n}\\n.icon-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-rain.svg');\\n}\\n.icon-heavy-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\\n}\\n.icon-heavy-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\\n}\\n.icon-crosshair {\\n background-color: var(--color-main-text);\\n padding: 0 !important;\\n mask: url(./../img/cross.svg) no-repeat;\\n mask-size: 18px 18px;\\n mask-position: center;\\n -webkit-mask: url(./../img/cross.svg) no-repeat;\\n -webkit-mask-size: 18px 18px;\\n -webkit-mask-position: center;\\n min-width: 44px !important;\\n min-height: 44px !important;\\n}\\n\\nli:not(.inline) .weather-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: block;\\n\\t\\talign-items: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tpadding: 10px 12px 5px 12px;\\n\\t\\tbox-sizing: border-box;\\n\\t\\topacity: 1;\\n\\t\\twhite-space: nowrap;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: center;\\n\\t\\tmax-width: 250px;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tmin-width: 175px;\\n\\t}\\n\\n\\t&__subheader {\\n\\t\\twidth: 100%;\\n\\n\\t\\t.trigger > .icon {\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tpadding-left: 40px;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.inline .weather-status-menu-item__subheader {\\n\\twidth: 100%;\\n\\n\\t.trigger > .icon {\\n\\t\\tbackground-size: 16px;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\tfont-weight: normal;\\n\\t\\tpadding-left: 40px;\\n\\n\\t\\t&.icon-loading-small {\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tleft: 21px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 275;","__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\t275: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(76149); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","setLocation","lat","lon","url","generateOcsUrl","HttpClient","address","response","data","ocs","setAddress","setMode","mode","usePersonalAddress","getLocation","fetchForecast","getFavorites","saveFavorites","favorites","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","class","inline","attrs","staticClass","weatherIcon","currentWeatherMessage","futureWeatherIcon","_v","_s","forecastMessage","_e","weatherLinkTarget","locationText","addRemoveFavoriteIcon","on","onAddRemoveFavoriteClick","addRemoveFavoriteText","errorMessage","onBrowserLocationClick","t","ref","onAddressSubmit","directives","name","rawName","value","length","expression","toggleFavoritesIcon","$event","showFavorites","_l","f","key","onFavoriteClick","__webpack_nonce__","btoa","getRequestToken","Vue","document","addEventListener","OCA","Dashboard","registerStatus","el","App","propsData","$mount","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_IMPORT_11___","___CSS_LOADER_URL_IMPORT_12___","___CSS_LOADER_URL_IMPORT_13___","___CSS_LOADER_URL_IMPORT_14___","___CSS_LOADER_URL_IMPORT_15___","___CSS_LOADER_URL_IMPORT_16___","___CSS_LOADER_URL_IMPORT_17___","___CSS_LOADER_URL_IMPORT_18___","___CSS_LOADER_URL_IMPORT_19___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","___CSS_LOADER_URL_REPLACEMENT_11___","___CSS_LOADER_URL_REPLACEMENT_12___","___CSS_LOADER_URL_REPLACEMENT_13___","___CSS_LOADER_URL_REPLACEMENT_14___","___CSS_LOADER_URL_REPLACEMENT_15___","___CSS_LOADER_URL_REPLACEMENT_16___","___CSS_LOADER_URL_REPLACEMENT_17___","___CSS_LOADER_URL_REPLACEMENT_18___","___CSS_LOADER_URL_REPLACEMENT_19___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"weather_status-weather-status.js?v=74d39db8be1a0a3a3085","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/weather_status/src/services/weatherStatusService.js","webpack:///nextcloud/apps/weather_status/src/App.vue","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/weather_status/src/App.vue?aa30","webpack://nextcloud/./apps/weather_status/src/App.vue?02d4","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=template&id=92c2d244&","webpack:///nextcloud/apps/weather_status/src/weather-status.js","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","/**\n * @copyright Copyright (c) 2020, Julien Veyssier\n *\n * @author Julien Veyssier <eneiluj@posteo.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n *\n *\n * @param {string} lat the latitude\n * @param {string} lon the longitude\n * @return {Promise<object>}\n */\nconst setLocation = async (lat, lon) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.put(url, {\n\t\taddress: '',\n\t\tlat,\n\t\tlon,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {string} address The location\n * @return {Promise<object>}\n */\nconst setAddress = async (address) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.put(url, {\n\t\taddress,\n\t\tlat: null,\n\t\tlon: null,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {string} mode can be 1 browser or 2 custom\n * @return {Promise<object>}\n */\nconst setMode = async (mode) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/mode')\n\tconst response = await HttpClient.put(url, {\n\t\tmode,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @return {Promise<object>}\n */\nconst usePersonalAddress = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/use-personal')\n\tconst response = await HttpClient.put(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the location information for current user\n *\n * @return {Promise<object>}\n */\nconst getLocation = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the weather forecast\n *\n * @return {Promise<object>}\n */\nconst fetchForecast = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/forecast')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the location favorites\n *\n * @return {Promise<object>}\n */\nconst getFavorites = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/favorites')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {Array} favorites List of favorite addresses\n * @return {Promise<object>}\n */\nconst saveFavorites = async (favorites) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/favorites')\n\tconst response = await HttpClient.put(url, {\n\t\tfavorites,\n\t})\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tusePersonalAddress,\n\tsetMode,\n\tgetLocation,\n\tsetLocation,\n\tsetAddress,\n\tfetchForecast,\n\tgetFavorites,\n\tsaveFavorites,\n}\n","<!--\n - @copyright Copyright (c) 2020 Julien Veyssier <eneiluj@posteo.net>\n - @author Julien Veyssier <eneiluj@posteo.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{ inline }\">\n\t\t<div id=\"weather-status-menu-item\">\n\t\t\t<Actions class=\"weather-status-menu-item__subheader\"\n\t\t\t\t:default-icon=\"weatherIcon\"\n\t\t\t\t:menu-title=\"currentWeatherMessage\">\n\t\t\t\t<ActionText v-if=\"gotWeather\"\n\t\t\t\t\t:icon=\"futureWeatherIcon\">\n\t\t\t\t\t{{ forecastMessage }}\n\t\t\t\t</ActionText>\n\t\t\t\t<ActionLink v-if=\"gotWeather\"\n\t\t\t\t\ticon=\"icon-address\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t:href=\"weatherLinkTarget\"\n\t\t\t\t\t:close-after-click=\"true\">\n\t\t\t\t\t{{ locationText }}\n\t\t\t\t</ActionLink>\n\t\t\t\t<ActionButton v-if=\"gotWeather\"\n\t\t\t\t\t:icon=\"addRemoveFavoriteIcon\"\n\t\t\t\t\t@click=\"onAddRemoveFavoriteClick\">\n\t\t\t\t\t{{ addRemoveFavoriteText }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionSeparator v-if=\"address && !errorMessage\" />\n\t\t\t\t<ActionButton icon=\"icon-crosshair\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"onBrowserLocationClick\">\n\t\t\t\t\t{{ t('weather_status', 'Detect location') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionInput ref=\"addressInput\"\n\t\t\t\t\t:disabled=\"false\"\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t@submit=\"onAddressSubmit\">\n\t\t\t\t\t{{ t('weather_status', 'Set custom address') }}\n\t\t\t\t</ActionInput>\n\t\t\t\t<ActionButton v-show=\"favorites.length > 0\"\n\t\t\t\t\t:icon=\"toggleFavoritesIcon\"\n\t\t\t\t\t@click=\"showFavorites = !showFavorites\">\n\t\t\t\t\t{{ t('weather_status', 'Favorites') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-for=\"f in displayedFavorites\"\n\t\t\t\t\t:key=\"f\"\n\t\t\t\t\ticon=\"icon-starred\"\n\t\t\t\t\t@click=\"onFavoriteClick($event, f)\">\n\t\t\t\t\t{{ f }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\n\t\t</div>\n\t</li>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport moment from '@nextcloud/moment'\nimport { getLocale } from '@nextcloud/l10n'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport * as network from './services/weatherStatusService'\n\nconst MODE_BROWSER_LOCATION = 1\nconst MODE_MANUAL_LOCATION = 2\nconst weatherOptions = {\n\tclearsky_day: {\n\t\ticon: 'icon-clearsky-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),\n\t},\n\tclearsky_night: {\n\t\ticon: 'icon-clearsky-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),\n\t},\n\tcloudy: {\n\t\ticon: 'icon-cloudy',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} cloudy', { temperature, unit }),\n\t},\n\tfair_day: {\n\t\ticon: 'icon-fair-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),\n\t},\n\tfair_night: {\n\t\ticon: 'icon-fair-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),\n\t},\n\tpartlycloudy_day: {\n\t\ticon: 'icon-partlycloudy-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),\n\t},\n\tpartlycloudy_night: {\n\t\ticon: 'icon-partlycloudy-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),\n\t},\n\tfog: {\n\t\ticon: 'icon-fog',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} foggy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} foggy', { temperature, unit }),\n\t},\n\tlightrain: {\n\t\ticon: 'icon-lightrain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall', { temperature, unit }),\n\t},\n\train: {\n\t\ticon: 'icon-rain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall', { temperature, unit }),\n\t},\n\theavyrain: {\n\t\ticon: 'icon-heavyrain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall', { temperature, unit }),\n\t},\n\trainshowers_day: {\n\t\ticon: 'icon-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),\n\t},\n\trainshowers_night: {\n\t\ticon: 'icon-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),\n\t},\n\tlightrainshowers_day: {\n\t\ticon: 'icon-light-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),\n\t},\n\tlightrainshowers_night: {\n\t\ticon: 'icon-light-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),\n\t},\n\theavyrainshowers_day: {\n\t\ticon: 'icon-heavy-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),\n\t},\n\theavyrainshowers_night: {\n\t\ticon: 'icon-heavy-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),\n\t},\n}\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tActions, ActionButton, ActionInput, ActionLink, ActionSeparator, ActionText,\n\t},\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlocale: getLocale(),\n\t\t\tloading: true,\n\t\t\terrorMessage: '',\n\t\t\tmode: MODE_BROWSER_LOCATION,\n\t\t\taddress: null,\n\t\t\tlat: null,\n\t\t\tlon: null,\n\t\t\t// how many hours ahead do we want to see the forecast?\n\t\t\toffset: 5,\n\t\t\tforecasts: [],\n\t\t\tloop: null,\n\t\t\tfavorites: [],\n\t\t\tshowFavorites: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tuseFahrenheitLocale() {\n\t\t\treturn ['en_US', 'en_MH', 'en_FM', 'en_PW', 'en_KY', 'en_LR'].includes(this.locale)\n\t\t},\n\t\ttemperatureUnit() {\n\t\t\treturn this.useFahrenheitLocale ? '°F' : '°C'\n\t\t},\n\t\tlocationText() {\n\t\t\treturn t('weather_status', 'More weather for {adr}', { adr: this.address })\n\t\t},\n\t\ttemperature() {\n\t\t\treturn this.getTemperature(this.forecasts, 0)\n\t\t},\n\t\tfutureTemperature() {\n\t\t\treturn this.getTemperature(this.forecasts, this.offset)\n\t\t},\n\t\tweatherCode() {\n\t\t\treturn this.getWeatherCode(this.forecasts, 0)\n\t\t},\n\t\tfutureWeatherCode() {\n\t\t\treturn this.getWeatherCode(this.forecasts, this.offset)\n\t\t},\n\t\tweatherIcon() {\n\t\t\treturn this.getWeatherIcon(this.weatherCode, this.loading)\n\t\t},\n\t\tfutureWeatherIcon() {\n\t\t\treturn this.getWeatherIcon(this.futureWeatherCode, this.loading)\n\t\t},\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcurrentWeatherMessage() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('weather_status', 'Loading weather')\n\t\t\t} else if (this.errorMessage) {\n\t\t\t\treturn this.errorMessage\n\t\t\t} else {\n\t\t\t\treturn this.getWeatherMessage(this.weatherCode, this.temperature)\n\t\t\t}\n\t\t},\n\t\tforecastMessage() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('weather_status', 'Loading weather')\n\t\t\t} else {\n\t\t\t\treturn this.getWeatherMessage(this.futureWeatherCode, this.futureTemperature, true)\n\t\t\t}\n\t\t},\n\t\tweatherLinkTarget() {\n\t\t\treturn 'https://www.windy.com/-Rain-thunder-rain?rain,' + this.lat + ',' + this.lon + ',11'\n\t\t},\n\t\tgotWeather() {\n\t\t\treturn this.address && !this.errorMessage\n\t\t},\n\t\taddRemoveFavoriteIcon() {\n\t\t\treturn this.currentAddressIsFavorite\n\t\t\t\t? 'icon-starred'\n\t\t\t\t: 'icon-star'\n\t\t},\n\t\taddRemoveFavoriteText() {\n\t\t\treturn this.currentAddressIsFavorite\n\t\t\t\t? t('weather_status', 'Remove from favorites')\n\t\t\t\t: t('weather_status', 'Add as favorite')\n\t\t},\n\t\tcurrentAddressIsFavorite() {\n\t\t\treturn this.favorites.find((f) => {\n\t\t\t\treturn f === this.address\n\t\t\t})\n\t\t},\n\t\ttoggleFavoritesIcon() {\n\t\t\treturn this.showFavorites\n\t\t\t\t? 'icon-triangle-s'\n\t\t\t\t: 'icon-triangle-e'\n\t\t},\n\t\tdisplayedFavorites() {\n\t\t\treturn this.showFavorites\n\t\t\t\t? this.favorites\n\t\t\t\t: []\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.initWeatherStatus()\n\t},\n\tmethods: {\n\t\tasync initWeatherStatus() {\n\t\t\ttry {\n\t\t\t\tconst loc = await network.getLocation()\n\t\t\t\tthis.lat = loc.lat\n\t\t\t\tthis.lon = loc.lon\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.mode = loc.mode\n\n\t\t\t\tif (this.mode === MODE_BROWSER_LOCATION) {\n\t\t\t\t\tthis.askBrowserLocation()\n\t\t\t\t} else if (this.mode === MODE_MANUAL_LOCATION) {\n\t\t\t\t\tthis.startLoop()\n\t\t\t\t}\n\t\t\t\tconst favs = await network.getFavorites()\n\t\t\t\tthis.favorites = favs\n\t\t\t} catch (err) {\n\t\t\t\tif (err?.code === 'ECONNABORTED') {\n\t\t\t\t\tconsole.info('The weather status request was cancelled because the user navigates.')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error getting the weather status information.'))\n\t\t\t\t}\n\t\t\t\tconsole.error(err)\n\t\t\t}\n\t\t},\n\t\tstartLoop() {\n\t\t\tclearInterval(this.loop)\n\t\t\tif (this.lat && this.lon) {\n\t\t\t\tthis.loop = setInterval(() => this.getForecast(), 60 * 1000 * 60)\n\t\t\t\tthis.getForecast()\n\t\t\t} else {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\taskBrowserLocation() {\n\t\t\tthis.loading = true\n\t\t\tthis.errorMessage = ''\n\t\t\tif (navigator.geolocation && window.isSecureContext) {\n\t\t\t\tnavigator.geolocation.getCurrentPosition((position) => {\n\t\t\t\t\tconsole.debug('browser location success')\n\t\t\t\t\tthis.lat = position.coords.latitude\n\t\t\t\t\tthis.lon = position.coords.longitude\n\t\t\t\t\tthis.saveMode(MODE_BROWSER_LOCATION)\n\t\t\t\t\tthis.mode = MODE_BROWSER_LOCATION\n\t\t\t\t\tthis.saveLocation(this.lat, this.lon)\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tconsole.debug('location permission refused')\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t\tthis.saveMode(MODE_MANUAL_LOCATION)\n\t\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\t\t// fallback on what we have if possible\n\t\t\t\t\tif (this.lat && this.lon) {\n\t\t\t\t\t\tthis.startLoop()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.usePersonalAddress()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.debug('no secure context!')\n\t\t\t\tthis.saveMode(MODE_MANUAL_LOCATION)\n\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\tthis.startLoop()\n\t\t\t}\n\t\t},\n\t\tasync getForecast() {\n\t\t\ttry {\n\t\t\t\tthis.forecasts = await network.fetchForecast()\n\t\t\t} catch (err) {\n\t\t\t\tthis.errorMessage = t('weather_status', 'No weather information found')\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t\tasync setAddress(address) {\n\t\t\tthis.loading = true\n\t\t\tthis.errorMessage = ''\n\t\t\ttry {\n\t\t\t\tconst loc = await network.setAddress(address)\n\t\t\t\tif (loc.success) {\n\t\t\t\t\tthis.lat = loc.lat\n\t\t\t\t\tthis.lon = loc.lon\n\t\t\t\t\tthis.address = loc.address\n\t\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\t\tthis.startLoop()\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorMessage = t('weather_status', 'Location not found')\n\t\t\t\t\tthis.loading = false\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error setting the location address.'))\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tasync saveLocation(lat, lon) {\n\t\t\ttry {\n\t\t\t\tconst loc = await network.setLocation(lat, lon)\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.startLoop()\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error setting the location.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t\tasync saveMode(mode) {\n\t\t\ttry {\n\t\t\t\tawait network.setMode(mode)\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error saving the mode.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t\tonBrowserLocationClick() {\n\t\t\tthis.askBrowserLocation()\n\t\t},\n\t\tasync usePersonalAddress() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst loc = await network.usePersonalAddress()\n\t\t\t\tthis.lat = loc.lat\n\t\t\t\tthis.lon = loc.lon\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\tthis.startLoop()\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error using personal address.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tonAddressSubmit() {\n\t\t\tconst newAddress = this.$refs.addressInput.$el.querySelector('input[type=\"text\"]').value\n\t\t\tthis.setAddress(newAddress)\n\t\t},\n\t\tgetLocalizedTemperature(celcius) {\n\t\t\treturn this.useFahrenheitLocale\n\t\t\t\t? (celcius * (9 / 5)) + 32\n\t\t\t\t: celcius\n\t\t},\n\t\tonAddRemoveFavoriteClick() {\n\t\t\tconst currentIsFavorite = this.currentAddressIsFavorite\n\t\t\tif (currentIsFavorite) {\n\t\t\t\tconst i = this.favorites.indexOf(currentIsFavorite)\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.favorites.splice(i, 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.favorites.push(this.address)\n\t\t\t}\n\t\t\tnetwork.saveFavorites(this.favorites)\n\t\t},\n\t\tonFavoriteClick(e, favAddress) {\n\t\t\t// clicked on the icon\n\t\t\tif (e.target.classList.contains('action-button__icon')) {\n\t\t\t\tconst i = this.favorites.indexOf(favAddress)\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.favorites.splice(i, 1)\n\t\t\t\t}\n\t\t\t\tnetwork.saveFavorites(this.favorites)\n\t\t\t} else if (favAddress !== this.address) {\n\t\t\t\t// clicked on the text\n\t\t\t\tthis.setAddress(favAddress)\n\t\t\t}\n\t\t},\n\t\tformatTime(time) {\n\t\t\treturn moment(time).format('LT')\n\t\t},\n\t\tgetTemperature(forecasts, offset = 0) {\n\t\t\treturn forecasts.length > offset ? forecasts[offset].data.instant.details.air_temperature : ''\n\t\t},\n\t\tgetWeatherCode(forecasts, offset = 0) {\n\t\t\treturn forecasts.length > offset ? forecasts[offset].data.next_1_hours.summary.symbol_code : ''\n\t\t},\n\t\tgetWeatherIcon(weatherCode, loading) {\n\t\t\tif (loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t} else {\n\t\t\t\treturn weatherCode && weatherCode in weatherOptions\n\t\t\t\t\t? weatherOptions[weatherCode].icon\n\t\t\t\t\t: 'icon-fair-day'\n\t\t\t}\n\t\t},\n\t\tgetWeatherMessage(weatherCode, temperature, later = false) {\n\t\t\treturn weatherCode && weatherCode in weatherOptions\n\t\t\t\t? weatherOptions[weatherCode].text(\n\t\t\t\t\tMath.round(this.getLocalizedTemperature(temperature)),\n\t\t\t\t\tthis.temperatureUnit,\n\t\t\t\t\tlater\n\t\t\t\t)\n\t\t\t\t: t('weather_status', 'Set location for weather')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.icon-weather-status {\n\tbackground-image: url('./../img/app-dark.svg');\n}\n.icon-clearsky-day {\n\tbackground-image: url('./../img/sun.svg');\n}\n.icon-clearsky-night {\n\tbackground-image: url('./../img/moon.svg');\n}\n.icon-cloudy {\n\tbackground-image: url('./../img/cloud-cloud.svg');\n}\n.icon-fair-day {\n\tbackground-image: url('./../img/sun-small-cloud.svg');\n}\n.icon-fair-night {\n\tbackground-image: url('./../img/moon-small-cloud.svg');\n}\n.icon-partlycloudy-day {\n\tbackground-image: url('./../img/sun-cloud.svg');\n}\n.icon-partlycloudy-night {\n\tbackground-image: url('./../img/moon-cloud.svg');\n}\n.icon-fog {\n\tbackground-image: url('./../img/fog.svg');\n}\n.icon-lightrain {\n\tbackground-image: url('./../img/light-rain.svg');\n}\n.icon-rain {\n\tbackground-image: url('./../img/rain.svg');\n}\n.icon-heavyrain {\n\tbackground-image: url('./../img/heavy-rain.svg');\n}\n.icon-light-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\n}\n.icon-light-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\n}\n.icon-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-rain.svg');\n}\n.icon-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-rain.svg');\n}\n.icon-heavy-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\n}\n.icon-heavy-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\n}\n.icon-crosshair {\n background-color: var(--color-main-text);\n padding: 0 !important;\n mask: url(./../img/cross.svg) no-repeat;\n mask-size: 18px 18px;\n mask-position: center;\n -webkit-mask: url(./../img/cross.svg) no-repeat;\n -webkit-mask-size: 18px 18px;\n -webkit-mask-position: center;\n min-width: 44px !important;\n min-height: 44px !important;\n}\n\nli:not(.inline) .weather-status-menu-item {\n\t&__header {\n\t\tdisplay: block;\n\t\talign-items: center;\n\t\tcolor: var(--color-main-text);\n\t\tpadding: 10px 12px 5px 12px;\n\t\tbox-sizing: border-box;\n\t\topacity: 1;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tmax-width: 250px;\n\t\ttext-overflow: ellipsis;\n\t\tmin-width: 175px;\n\t}\n\n\t&__subheader {\n\t\twidth: 100%;\n\n\t\t.trigger > .icon {\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-size: 16px;\n\t\t\tborder: 0;\n\t\t\tborder-radius: 0;\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 40px;\n\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.inline .weather-status-menu-item__subheader {\n\twidth: 100%;\n\n\t.trigger > .icon {\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: normal;\n\t\tpadding-left: 40px;\n\n\t\t&.icon-loading-small {\n\t\t\t&::after {\n\t\t\t\tleft: 21px;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=92c2d244&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:{ inline: _vm.inline }},[_c('div',{attrs:{\"id\":\"weather-status-menu-item\"}},[_c('Actions',{staticClass:\"weather-status-menu-item__subheader\",attrs:{\"default-icon\":_vm.weatherIcon,\"menu-title\":_vm.currentWeatherMessage}},[(_vm.gotWeather)?_c('ActionText',{attrs:{\"icon\":_vm.futureWeatherIcon}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.forecastMessage)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.gotWeather)?_c('ActionLink',{attrs:{\"icon\":\"icon-address\",\"target\":\"_blank\",\"href\":_vm.weatherLinkTarget,\"close-after-click\":true}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.locationText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.gotWeather)?_c('ActionButton',{attrs:{\"icon\":_vm.addRemoveFavoriteIcon},on:{\"click\":_vm.onAddRemoveFavoriteClick}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.addRemoveFavoriteText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.address && !_vm.errorMessage)?_c('ActionSeparator'):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-crosshair\",\"close-after-click\":true},on:{\"click\":_vm.onBrowserLocationClick}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Detect location'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionInput',{ref:\"addressInput\",attrs:{\"disabled\":false,\"icon\":\"icon-rename\",\"type\":\"text\",\"value\":\"\"},on:{\"submit\":_vm.onAddressSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Set custom address'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.favorites.length > 0),expression:\"favorites.length > 0\"}],attrs:{\"icon\":_vm.toggleFavoritesIcon},on:{\"click\":function($event){_vm.showFavorites = !_vm.showFavorites}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Favorites'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.displayedFavorites),function(f){return _c('ActionButton',{key:f,attrs:{\"icon\":\"icon-starred\"},on:{\"click\":function($event){return _vm.onFavoriteClick($event, f)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(f)+\"\\n\\t\\t\\t\")])})],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julien Veyssier <eneiluj@posteo.net>\n *\n * @author Julien Veyssier <eneiluj@posteo.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport App from './App'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('weather', (el) => {\n\t\tconst Dashboard = Vue.extend(App)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t}).$mount(el)\n\t})\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./../img/app-dark.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./../img/sun.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"./../img/moon.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"./../img/cloud-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"./../img/sun-small-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"./../img/moon-small-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"./../img/sun-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"./../img/moon-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"./../img/fog.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"./../img/light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"./../img/rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"./../img/heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"./../img/sun-cloud-light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"./../img/moon-cloud-light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"./../img/sun-cloud-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"./../img/moon-cloud-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"./../img/sun-cloud-heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"./../img/moon-cloud-heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_18___ = new URL(\"./../img/cross.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".icon-weather-status{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.icon-clearsky-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.icon-clearsky-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.icon-cloudy{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \")}.icon-fair-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \")}.icon-fair-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \")}.icon-partlycloudy-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \")}.icon-partlycloudy-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \")}.icon-fog{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \")}.icon-lightrain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \")}.icon-rain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \")}.icon-heavyrain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \")}.icon-light-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \")}.icon-light-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \")}.icon-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \")}.icon-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \")}.icon-heavy-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \")}.icon-heavy-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \")}.icon-crosshair{background-color:var(--color-main-text);padding:0 !important;mask:url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \") no-repeat;mask-size:18px 18px;mask-position:center;-webkit-mask:url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \") no-repeat;-webkit-mask-size:18px 18px;-webkit-mask-position:center;min-width:44px !important;min-height:44px !important}li:not(.inline) .weather-status-menu-item__header{display:block;align-items:center;color:var(--color-main-text);padding:10px 12px 5px 12px;box-sizing:border-box;opacity:1;white-space:nowrap;width:100%;text-align:center;max-width:250px;text-overflow:ellipsis;min-width:175px}li:not(.inline) .weather-status-menu-item__subheader{width:100%}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon{background-color:var(--color-main-background);background-size:16px;border:0;border-radius:0;font-weight:normal;padding-left:40px}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:hover,li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:focus{box-shadow:inset 4px 0 var(--color-primary-element)}.inline .weather-status-menu-item__subheader{width:100%}.inline .weather-status-menu-item__subheader .trigger>.icon{background-size:16px;border:0;border-radius:var(--border-radius-pill);font-weight:normal;padding-left:40px}.inline .weather-status-menu-item__subheader .trigger>.icon.icon-loading-small::after{left:21px}li{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/weather_status/src/App.vue\"],\"names\":[],\"mappings\":\"AAwgBA,qBACC,wDAAA,CAED,mBACC,wDAAA,CAED,qBACC,wDAAA,CAED,aACC,wDAAA,CAED,eACC,wDAAA,CAED,iBACC,wDAAA,CAED,uBACC,wDAAA,CAED,yBACC,wDAAA,CAED,UACC,wDAAA,CAED,gBACC,wDAAA,CAED,WACC,yDAAA,CAED,gBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,sBACC,yDAAA,CAED,wBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,gBACI,uCAAA,CACA,oBAAA,CACA,uDAAA,CACA,mBAAA,CACA,oBAAA,CACA,+DAAA,CACA,2BAAA,CACA,4BAAA,CACA,yBAAA,CACA,0BAAA,CAIH,kDACC,aAAA,CACA,kBAAA,CACA,4BAAA,CACA,0BAAA,CACA,qBAAA,CACA,SAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,qDACC,UAAA,CAEA,oEACC,6CAAA,CACA,oBAAA,CACA,QAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CAEA,oJAEC,mDAAA,CAMJ,6CACC,UAAA,CAEA,4DACC,oBAAA,CACA,QAAA,CACA,uCAAA,CACA,kBAAA,CACA,iBAAA,CAGC,sFACC,SAAA,CAMJ,GACC,oBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.icon-weather-status {\\n\\tbackground-image: url('./../img/app-dark.svg');\\n}\\n.icon-clearsky-day {\\n\\tbackground-image: url('./../img/sun.svg');\\n}\\n.icon-clearsky-night {\\n\\tbackground-image: url('./../img/moon.svg');\\n}\\n.icon-cloudy {\\n\\tbackground-image: url('./../img/cloud-cloud.svg');\\n}\\n.icon-fair-day {\\n\\tbackground-image: url('./../img/sun-small-cloud.svg');\\n}\\n.icon-fair-night {\\n\\tbackground-image: url('./../img/moon-small-cloud.svg');\\n}\\n.icon-partlycloudy-day {\\n\\tbackground-image: url('./../img/sun-cloud.svg');\\n}\\n.icon-partlycloudy-night {\\n\\tbackground-image: url('./../img/moon-cloud.svg');\\n}\\n.icon-fog {\\n\\tbackground-image: url('./../img/fog.svg');\\n}\\n.icon-lightrain {\\n\\tbackground-image: url('./../img/light-rain.svg');\\n}\\n.icon-rain {\\n\\tbackground-image: url('./../img/rain.svg');\\n}\\n.icon-heavyrain {\\n\\tbackground-image: url('./../img/heavy-rain.svg');\\n}\\n.icon-light-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\\n}\\n.icon-light-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\\n}\\n.icon-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-rain.svg');\\n}\\n.icon-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-rain.svg');\\n}\\n.icon-heavy-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\\n}\\n.icon-heavy-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\\n}\\n.icon-crosshair {\\n background-color: var(--color-main-text);\\n padding: 0 !important;\\n mask: url(./../img/cross.svg) no-repeat;\\n mask-size: 18px 18px;\\n mask-position: center;\\n -webkit-mask: url(./../img/cross.svg) no-repeat;\\n -webkit-mask-size: 18px 18px;\\n -webkit-mask-position: center;\\n min-width: 44px !important;\\n min-height: 44px !important;\\n}\\n\\nli:not(.inline) .weather-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: block;\\n\\t\\talign-items: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tpadding: 10px 12px 5px 12px;\\n\\t\\tbox-sizing: border-box;\\n\\t\\topacity: 1;\\n\\t\\twhite-space: nowrap;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: center;\\n\\t\\tmax-width: 250px;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tmin-width: 175px;\\n\\t}\\n\\n\\t&__subheader {\\n\\t\\twidth: 100%;\\n\\n\\t\\t.trigger > .icon {\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tpadding-left: 40px;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.inline .weather-status-menu-item__subheader {\\n\\twidth: 100%;\\n\\n\\t.trigger > .icon {\\n\\t\\tbackground-size: 16px;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\tfont-weight: normal;\\n\\t\\tpadding-left: 40px;\\n\\n\\t\\t&.icon-loading-small {\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tleft: 21px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 275;","__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\t275: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [874], function() { return __webpack_require__(10592); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","setLocation","lat","lon","url","generateOcsUrl","HttpClient","address","response","data","ocs","setAddress","setMode","mode","usePersonalAddress","getLocation","fetchForecast","getFavorites","saveFavorites","favorites","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","class","inline","attrs","staticClass","weatherIcon","currentWeatherMessage","futureWeatherIcon","_v","_s","forecastMessage","_e","weatherLinkTarget","locationText","addRemoveFavoriteIcon","on","onAddRemoveFavoriteClick","addRemoveFavoriteText","errorMessage","onBrowserLocationClick","t","ref","onAddressSubmit","directives","name","rawName","value","length","expression","toggleFavoritesIcon","$event","showFavorites","_l","f","key","onFavoriteClick","__webpack_nonce__","btoa","getRequestToken","Vue","document","addEventListener","OCA","Dashboard","registerStatus","el","App","propsData","$mount","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_IMPORT_11___","___CSS_LOADER_URL_IMPORT_12___","___CSS_LOADER_URL_IMPORT_13___","___CSS_LOADER_URL_IMPORT_14___","___CSS_LOADER_URL_IMPORT_15___","___CSS_LOADER_URL_IMPORT_16___","___CSS_LOADER_URL_IMPORT_17___","___CSS_LOADER_URL_IMPORT_18___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","___CSS_LOADER_URL_REPLACEMENT_11___","___CSS_LOADER_URL_REPLACEMENT_12___","___CSS_LOADER_URL_REPLACEMENT_13___","___CSS_LOADER_URL_REPLACEMENT_14___","___CSS_LOADER_URL_REPLACEMENT_15___","___CSS_LOADER_URL_REPLACEMENT_16___","___CSS_LOADER_URL_REPLACEMENT_17___","___CSS_LOADER_URL_REPLACEMENT_18___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/composer/autoload.php b/lib/composer/autoload.php
index 6de0160c0b5..a3d144b1777 100644
--- a/lib/composer/autoload.php
+++ b/lib/composer/autoload.php
@@ -2,6 +2,11 @@
// autoload.php @generated by Composer
+if (PHP_VERSION_ID < 50600) {
+ echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+ exit(1);
+}
+
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit53792487c5a8370acc0b06b1a864ff4c::getLoader();
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 3ad0b54435d..2c962b0fc6d 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -7,7 +7,6 @@ $baseDir = dirname(dirname($vendorDir));
return array(
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
- 'Mexitek\\PHPColors\\Color' => $vendorDir . '/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php',
'OCP\\Accounts\\IAccount' => $baseDir . '/lib/public/Accounts/IAccount.php',
'OCP\\Accounts\\IAccountManager' => $baseDir . '/lib/public/Accounts/IAccountManager.php',
'OCP\\Accounts\\IAccountProperty' => $baseDir . '/lib/public/Accounts/IAccountProperty.php',
@@ -1021,14 +1020,15 @@ return array(
'OC\\Core\\Migrations\\Version23000Date20210930122352' => $baseDir . '/core/Migrations/Version23000Date20210930122352.php',
'OC\\Core\\Migrations\\Version23000Date20211203110726' => $baseDir . '/core/Migrations/Version23000Date20211203110726.php',
'OC\\Core\\Migrations\\Version23000Date20211213203940' => $baseDir . '/core/Migrations/Version23000Date20211213203940.php',
- 'OC\\Core\\Migrations\\Version240000Date20220202150027' => $baseDir . '/core/Migrations/Version240000Date20220202150027.php',
- 'OC\\Core\\Migrations\\Version240000Date20220404230027' => $baseDir . '/core/Migrations/Version240000Date20220404230027.php',
'OC\\Core\\Migrations\\Version24000Date20211210141942' => $baseDir . '/core/Migrations/Version24000Date20211210141942.php',
'OC\\Core\\Migrations\\Version24000Date20211213081506' => $baseDir . '/core/Migrations/Version24000Date20211213081506.php',
'OC\\Core\\Migrations\\Version24000Date20211213081604' => $baseDir . '/core/Migrations/Version24000Date20211213081604.php',
'OC\\Core\\Migrations\\Version24000Date20211222112246' => $baseDir . '/core/Migrations/Version24000Date20211222112246.php',
'OC\\Core\\Migrations\\Version24000Date20211230140012' => $baseDir . '/core/Migrations/Version24000Date20211230140012.php',
'OC\\Core\\Migrations\\Version24000Date20220131153041' => $baseDir . '/core/Migrations/Version24000Date20220131153041.php',
+ 'OC\\Core\\Migrations\\Version24000Date20220202150027' => $baseDir . '/core/Migrations/Version24000Date20220202150027.php',
+ 'OC\\Core\\Migrations\\Version24000Date20220404230027' => $baseDir . '/core/Migrations/Version24000Date20220404230027.php',
+ 'OC\\Core\\Migrations\\Version24000Date20220425072957' => $baseDir . '/core/Migrations/Version24000Date20220425072957.php',
'OC\\Core\\Notification\\CoreNotifier' => $baseDir . '/core/Notification/CoreNotifier.php',
'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
@@ -1542,6 +1542,7 @@ return array(
'OC\\User\\Backend' => $baseDir . '/lib/private/User/Backend.php',
'OC\\User\\Database' => $baseDir . '/lib/private/User/Database.php',
'OC\\User\\DisplayNameCache' => $baseDir . '/lib/private/User/DisplayNameCache.php',
+ 'OC\\User\\LazyUser' => $baseDir . '/lib/private/User/LazyUser.php',
'OC\\User\\LoginException' => $baseDir . '/lib/private/User/LoginException.php',
'OC\\User\\Manager' => $baseDir . '/lib/private/User/Manager.php',
'OC\\User\\NoUserException' => $baseDir . '/lib/private/User/NoUserException.php',
diff --git a/lib/composer/composer/autoload_real.php b/lib/composer/composer/autoload_real.php
index 9399510b985..eecff48bcf9 100644
--- a/lib/composer/composer/autoload_real.php
+++ b/lib/composer/composer/autoload_real.php
@@ -22,14 +22,12 @@ class ComposerAutoloaderInit53792487c5a8370acc0b06b1a864ff4c
return self::$loader;
}
- require __DIR__ . '/platform_check.php';
-
spl_autoload_register(array('ComposerAutoloaderInit53792487c5a8370acc0b06b1a864ff4c', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInit53792487c5a8370acc0b06b1a864ff4c', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
- \Composer\Autoload\ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::getInitializer($loader)();
+ call_user_func(\Composer\Autoload\ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::getInitializer($loader));
$loader->register(true);
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 9e04858cc53..da591ab0c0f 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -36,7 +36,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
public static $classMap = array (
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
- 'Mexitek\\PHPColors\\Color' => __DIR__ . '/..' . '/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php',
'OCP\\Accounts\\IAccount' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccount.php',
'OCP\\Accounts\\IAccountManager' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountManager.php',
'OCP\\Accounts\\IAccountProperty' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountProperty.php',
@@ -1050,14 +1049,15 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Migrations\\Version23000Date20210930122352' => __DIR__ . '/../../..' . '/core/Migrations/Version23000Date20210930122352.php',
'OC\\Core\\Migrations\\Version23000Date20211203110726' => __DIR__ . '/../../..' . '/core/Migrations/Version23000Date20211203110726.php',
'OC\\Core\\Migrations\\Version23000Date20211213203940' => __DIR__ . '/../../..' . '/core/Migrations/Version23000Date20211213203940.php',
- 'OC\\Core\\Migrations\\Version240000Date20220202150027' => __DIR__ . '/../../..' . '/core/Migrations/Version240000Date20220202150027.php',
- 'OC\\Core\\Migrations\\Version240000Date20220404230027' => __DIR__ . '/../../..' . '/core/Migrations/Version240000Date20220404230027.php',
'OC\\Core\\Migrations\\Version24000Date20211210141942' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211210141942.php',
'OC\\Core\\Migrations\\Version24000Date20211213081506' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211213081506.php',
'OC\\Core\\Migrations\\Version24000Date20211213081604' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211213081604.php',
'OC\\Core\\Migrations\\Version24000Date20211222112246' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211222112246.php',
'OC\\Core\\Migrations\\Version24000Date20211230140012' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211230140012.php',
'OC\\Core\\Migrations\\Version24000Date20220131153041' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20220131153041.php',
+ 'OC\\Core\\Migrations\\Version24000Date20220202150027' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20220202150027.php',
+ 'OC\\Core\\Migrations\\Version24000Date20220404230027' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20220404230027.php',
+ 'OC\\Core\\Migrations\\Version24000Date20220425072957' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20220425072957.php',
'OC\\Core\\Notification\\CoreNotifier' => __DIR__ . '/../../..' . '/core/Notification/CoreNotifier.php',
'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
@@ -1571,6 +1571,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\User\\Backend' => __DIR__ . '/../../..' . '/lib/private/User/Backend.php',
'OC\\User\\Database' => __DIR__ . '/../../..' . '/lib/private/User/Database.php',
'OC\\User\\DisplayNameCache' => __DIR__ . '/../../..' . '/lib/private/User/DisplayNameCache.php',
+ 'OC\\User\\LazyUser' => __DIR__ . '/../../..' . '/lib/private/User/LazyUser.php',
'OC\\User\\LoginException' => __DIR__ . '/../../..' . '/lib/private/User/LoginException.php',
'OC\\User\\Manager' => __DIR__ . '/../../..' . '/lib/private/User/Manager.php',
'OC\\User\\NoUserException' => __DIR__ . '/../../..' . '/lib/private/User/NoUserException.php',
diff --git a/lib/composer/composer/installed.json b/lib/composer/composer/installed.json
index 61ce38b2189..f20a6c47c6d 100644
--- a/lib/composer/composer/installed.json
+++ b/lib/composer/composer/installed.json
@@ -1,62 +1,5 @@
{
- "packages": [
- {
- "name": "mexitek/phpcolors",
- "version": "v1.0.4",
- "version_normalized": "1.0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/mexitek/phpColors.git",
- "reference": "4043974240ca7dc3c2bec3c158588148b605b206"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mexitek/phpColors/zipball/4043974240ca7dc3c2bec3c158588148b605b206",
- "reference": "4043974240ca7dc3c2bec3c158588148b605b206",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0"
- },
- "require-dev": {
- "nette/tester": "^2.3",
- "squizlabs/php_codesniffer": "^3.5"
- },
- "time": "2021-11-26T13:19:08+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Arlo Carreon",
- "homepage": "http://arlocarreon.com",
- "role": "creator"
- }
- ],
- "description": "A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.",
- "homepage": "http://mexitek.github.com/phpColors/",
- "keywords": [
- "color",
- "css",
- "design",
- "frontend",
- "ui"
- ],
- "support": {
- "issues": "https://github.com/mexitek/phpColors/issues",
- "source": "https://github.com/mexitek/phpColors"
- },
- "install-path": "../mexitek/phpcolors"
- }
- ],
+ "packages": [],
"dev": false,
"dev-package-names": []
}
diff --git a/lib/composer/composer/installed.php b/lib/composer/composer/installed.php
index caaede08016..02fc1718d41 100644
--- a/lib/composer/composer/installed.php
+++ b/lib/composer/composer/installed.php
@@ -5,7 +5,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../../../',
'aliases' => array(),
- 'reference' => '3e28052303a61b134b454fdc31e72d371c03b793',
+ 'reference' => '4f4f8cea83a31519e55b6305c6d9471896de42be',
'name' => '__root__',
'dev' => false,
),
@@ -16,16 +16,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../../../',
'aliases' => array(),
- 'reference' => '3e28052303a61b134b454fdc31e72d371c03b793',
- 'dev_requirement' => false,
- ),
- 'mexitek/phpcolors' => array(
- 'pretty_version' => 'v1.0.4',
- 'version' => '1.0.4.0',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../mexitek/phpcolors',
- 'aliases' => array(),
- 'reference' => '4043974240ca7dc3c2bec3c158588148b605b206',
+ 'reference' => '4f4f8cea83a31519e55b6305c6d9471896de42be',
'dev_requirement' => false,
),
),
diff --git a/lib/composer/composer/platform_check.php b/lib/composer/composer/platform_check.php
deleted file mode 100644
index 589e9e770b9..00000000000
--- a/lib/composer/composer/platform_check.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-// platform_check.php @generated by Composer
-
-$issues = array();
-
-if (!(PHP_VERSION_ID >= 70200)) {
- $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.';
-}
-
-if ($issues) {
- if (!headers_sent()) {
- header('HTTP/1.1 500 Internal Server Error');
- }
- if (!ini_get('display_errors')) {
- if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
- fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
- } elseif (!headers_sent()) {
- echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
- }
- }
- trigger_error(
- 'Composer detected issues in your platform: ' . implode(' ', $issues),
- E_USER_ERROR
- );
-}
diff --git a/lib/composer/mexitek/phpcolors/.editorconfig b/lib/composer/mexitek/phpcolors/.editorconfig
deleted file mode 100644
index 989704a3d66..00000000000
--- a/lib/composer/mexitek/phpcolors/.editorconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-# EditorConfig is awesome: http://EditorConfig.org
-
-# top-most EditorConfig file
-root = true
-
-# Unix-style newlines with a newline ending every file
-[*]
-charset = utf-8
-end_of_line = lf
-indent_style = space
-indent_size = 4
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-# .travis.yml
-[.travis.yml]
-indent_size = 2
diff --git a/lib/composer/mexitek/phpcolors/.gitignore b/lib/composer/mexitek/phpcolors/.gitignore
deleted file mode 100644
index e0a462444b4..00000000000
--- a/lib/composer/mexitek/phpcolors/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-*.bak
-*.*.bak
-vendor/*
-composer.lock
-.idea
diff --git a/lib/composer/mexitek/phpcolors/.phpcs.xml b/lib/composer/mexitek/phpcolors/.phpcs.xml
deleted file mode 100644
index bba9c9f778d..00000000000
--- a/lib/composer/mexitek/phpcolors/.phpcs.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0"?>
-<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PHPColors"
- xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">
- <description>The coding standard for PHPColors.</description>
-
- <file>./src</file>
- <file>./tests</file>
-
- <rule ref="PSR12"/>
-</ruleset>
diff --git a/lib/composer/mexitek/phpcolors/.travis.yml b/lib/composer/mexitek/phpcolors/.travis.yml
deleted file mode 100644
index 1e5be351c4c..00000000000
--- a/lib/composer/mexitek/phpcolors/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: php
-php:
- - 7.2
- - 7.3
- - 7.4
- - 8.0
-before_script:
- - composer install --no-interaction --dev --prefer-source
-script:
- - vendor/bin/phpcs --extensions=php,phpt --warning-severity=0
- - vendor/bin/tester tests -s -p php
diff --git a/lib/composer/mexitek/phpcolors/LICENSE b/lib/composer/mexitek/phpcolors/LICENSE
deleted file mode 100644
index f764bbc2dcf..00000000000
--- a/lib/composer/mexitek/phpcolors/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 Arlo Carreon, http://arlocarreon.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/lib/composer/mexitek/phpcolors/README.md b/lib/composer/mexitek/phpcolors/README.md
deleted file mode 100644
index 8e3420f298f..00000000000
--- a/lib/composer/mexitek/phpcolors/README.md
+++ /dev/null
@@ -1,173 +0,0 @@
-# PHPColors [![Build Status](https://travis-ci.org/mexitek/phpColors.svg?branch=master)](https://travis-ci.org/mexitek/phpColors)
-
-> A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.
-
-## Requirements
-
-PHPColors requires PHP version 7.2.0 or greater.
-
-## Installation
-
-### Composer
-
-Simply add `mexitek/phpcolors` to `composer.json` using `dev-master`.
-
-```
-composer require mexitek/phpcolors:dev-master
-```
-
-## How it works
-Instantiate an object of the color class with a hex color string `$foo = new Color("336699")`. That's it! Now, call the methods you need for different color variants.
-
-## Available Methods
-- <strong>darken( [$amount] )</strong> : Allows you to obtain a darker shade of your color. Optionally you can decide to darken using a desired percentage.
-- <strong>lighten( [$amount] )</strong> : Allows you to obtain a lighter shade of your color. Optionally you can decide to lighten using a desired percentage.
-- <strong>mix($hex, [$amount] )</strong> : Allows you to mix another color to your color. Optionally you can decide to set the percent of second color or original color amount is ranged -100...0...100.
-- <strong>isLight( [$hex] )</strong> : Determins whether your color (or the provide param) is considered a "light" color. Returns `TRUE` if color is light.
-- <strong>isDark( [$hex] )</strong> : Determins whether your color (or the provide param) is considered a "dark" color. Returns `TRUE` if color is dark.
-- <strong>makeGradient( [$amount] )</strong> : Returns an array with 2 indices `light` and `dark`, the initial color will either be selected for `light` or `dark` depending on its brightness, then the other color will be generated. The optional param allows for a static lighten or darkened amount.
-- <strong>complementary()</strong> : Returns the color "opposite" or complementary to your color.
-- <strong>getHex()</strong> : Returns the original hex color.
-- <strong>getHsl()</strong> : Returns HSL array for your color.
-- <strong>getRgb()</strong> : Returns RGB array for your color.
-
-> Auto lightens/darkens by 10% for sexily-subtle gradients
-
-```php
-/**
- * Using The Class
- */
-
-use Mexitek\PHPColors\Color;
-
-// Initialize my color
-$myBlue = new Color("#336699");
-
-echo $myBlue->darken();
-// 1a334d
-
-echo $myBlue->lighten();
-// 8cb3d9
-
-echo $myBlue->isLight();
-// false
-
-echo $myBlue->isDark();
-// true
-
-echo $myBlue->complementary();
-// 996633
-
-echo $myBlue->getHex();
-// 336699
-
-print_r( $myBlue->getHsl() );
-// array( "H"=> 210, "S"=> 0.5, "L"=>0.4 );
-
-print_r( $myBlue->getRgb() );
-// array( "R"=> 51, "G"=> 102, "B"=>153 );
-
-print_r($myBlue->makeGradient());
-// array( "light"=>"8cb3d9" ,"dark"=>"336699" )
-
-```
-
-
-## Static Methods
-- <strong>hslToHex( $hsl )</strong> : Convert a HSL array to a HEX string.
-- <strong>hexToHsl( $hex )</strong> : Convert a HEX string into an HSL array.
-- <strong>hexToRgb( $hex )</strong> : Convert a HEX string into an RGB array.
-- <strong>rgbToHex( $rgb )</strong> : Convert an RGB array into a HEX string.
-
-```php
-/**
- * On The Fly Custom Calculations
- */
-
-use Mexitek\PHPColors\Color;
-
- // Convert my HEX
- $myBlue = Color::hexToHsl("#336699");
-
- // Get crazy with the HUE
- $myBlue["H"] = 295;
-
- // Gimme my new color!!
- echo Color::hslToHex($myBlue);
- // 913399
-
-```
-
-## CSS Helpers
-- <strong>getCssGradient( [$amount] [, $vintageBrowsers] )</strong> : Generates the CSS3 gradients for safari, chrome, opera, firefox and IE10. Optional percentage amount for lighter/darker shade. Optional boolean for older gradient CSS support.
-
-> Would like to add support to custom gradient stops
-
-```php
-
-use Mexitek\PHPColors\Color;
-
-// Initialize my color
-$myBlue = new Color("#336699");
-
-// Get CSS
-echo $myBlue->getCssGradient();
-/* - Actual output doesn't have comments and is single line
-
- // fallback background
- background: #336699;
-
- // IE Browsers
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cb3d9', endColorstr='#336699');
-
- // Safari 5.1+, Mobile Safari, Chrome 10+
- background-image: -webkit-linear-gradient(top, #8cb3d9, #336699);
-
- // Standards
- background-image: linear-gradient(to bottom, #8cb3d9, #336699);
-
-*/
-
-```
-
-However, if you want to support the ancient browsers (which has negligible market share and almost died out), you can set the second parameter to `TRUE`. This will output:
-
-```php
-
-use Mexitek\PHPColors\Color;
-$myBlue = new Color("#336699");
-
-// Get CSS
-echo $myBlue->getCssGradient(10, TRUE);
-/* - Actual output doesn't have comments and is single line
-
- background: #336699; // fallback background
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cb3d9', endColorstr='#336699'); // IE Browsers
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#8cb3d9), to(#336699)); // Safari 4+, Chrome 1-9
- background-image: -webkit-linear-gradient(top, #8cb3d9, #336699); // Safari 5.1+, Mobile Safari, Chrome 10+
- background-image: -moz-linear-gradient(top, #8cb3d9, #336699); // Firefox 3.6+
- background-image: -o-linear-gradient(top, #8cb3d9, #336699); // Opera 11.10+
- background-image: linear-gradient(to bottom, #8cb3d9, #336699); // Standards
-
-*/
-
-```
-
-## Github Contributors
-- mexitek
-- danielpataki
-- alexmglover
-- intuxicated
-- pborreli
-- curtisgibby
-- matthewpatterson
-- there4
-- alex-humphreys
-- zaher
-- primozcigler
-- thedavidmeister
-- tylercd100
-- Braunson
-
-# License
-See LICENSE file or [arlo.mit-license.org](http://arlo.mit-license.org)
diff --git a/lib/composer/mexitek/phpcolors/composer.json b/lib/composer/mexitek/phpcolors/composer.json
deleted file mode 100644
index 8d074f752e1..00000000000
--- a/lib/composer/mexitek/phpcolors/composer.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "mexitek/phpcolors",
- "description": "A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.",
- "type": "library",
- "keywords": [
- "color",
- "ui",
- "css",
- "frontend",
- "design"
- ],
- "homepage": "http://mexitek.github.com/phpColors/",
- "license": "MIT",
- "authors": [
- {
- "name": "Arlo Carreon",
- "homepage": "http://arlocarreon.com",
- "role": "creator"
- }
- ],
- "support": {
- "issues": "https://github.com/mexitek/phpColors/issues",
- "source": "https://github.com/mexitek/phpColors"
- },
- "require": {
- "php": "^7.2|^8.0"
- },
- "require-dev": {
- "nette/tester": "^2.3",
- "squizlabs/php_codesniffer": "^3.5"
- },
- "autoload": {
- "classmap": [
- "src"
- ]
- }
-}
diff --git a/lib/composer/mexitek/phpcolors/demo/demo.php b/lib/composer/mexitek/phpcolors/demo/demo.php
deleted file mode 100644
index 825cf084466..00000000000
--- a/lib/composer/mexitek/phpcolors/demo/demo.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <title>phpColors Demo</title>
- <?php
-
- require_once __DIR__ . '/../src/Mexitek/PHPColors/Color.php';
-
- use Mexitek\PHPColors\Color;
-
- // Use different colors to test
- $myBlue = new Color("#336699");
- $myBlack = new Color("#333");
- $myPurple = new Color("#913399");
- $myVintage = new Color("#bada55");
-
- // ************** No Need to Change Below **********************
- ?>
- <style>
- .block {
- height: 100px;
- width: 200px;
- font-size: 20px;
- text-align: center;
- padding-top: 100px;
- display: block;
- margin: 0;
- float: left;
- }
-
- .wide-block {
- width: 360px;
- padding-top: 70px;
- padding-left: 20px;
- padding-right: 20px;
- margin-top: 10px;
- }
-
- .clear {
- clear: both;
- }
-
- .testDiv {
- <?= $myBlue->getCssGradient()?>
- color: <?=($myBlue->isDark() ? "#EEE":"#333")?>;
- }
-
- .testDiv.plain {
- background: #<?= $myBlue->getHex()?>;
- color: <?=($myBlue->isDark() ? "#EEE":"#333")?>;
- }
-
- .testDiv2 {
- <?= $myBlack->getCssGradient()?>
- color: <?=($myBlack->isDark() ? "#EEE":"#333")?>;
- }
-
- .testDiv2.plain {
- background: #<?= $myBlack->getHex();?>;
- color: <?=($myBlack->isDark() ? "#EEE":"#333")?>;
- }
-
- .testDiv3 {
- <?= $myPurple->getCssGradient()?>
- color: <?=($myPurple->isDark() ? "#EEE":"#333")?>;
- }
-
- .testDiv3.plain {
- background: #<?= $myPurple->getHex()?>;
- color: <?=($myPurple->isDark() ? "#EEE":"#333")?>;
- }
-
- .testDiv4 {
- <?= $myVintage->getCssGradient(30, true)?>
- color: <?=($myVintage->isDark() ? "#EEE":"#333")?>;
- }
- </style>
-</head>
-<body>
-<div class="clear"></div>
-<div class="block testDiv">phpColor Gradient #<?= $myBlue->getHex() ?></div>
-<div class="block testDiv plain">Plain #<?= $myBlue->getHex() ?></div>
-<div class="clear"></div>
-<div class="block testDiv2">phpColor Gradient #<?= $myBlack->getHex() ?></div>
-<div class="block testDiv2 plain">Plain #<?= $myBlack->getHex() ?></div>
-<div class="clear"></div>
-<div class="block testDiv3">phpColor Gradient #<?= $myPurple->getHex() ?></div>
-<div class="block testDiv3 plain">Plain #<?= $myPurple->getHex() ?></div>
-<div class="clear"></div>
-<div class="block wide-block testDiv4">
- phpColor Gradient with vintage browsers support #<?= $myVintage->getHex() ?>
-</div>
-</body>
-</html>
diff --git a/lib/composer/mexitek/phpcolors/demo/phpColor-demo.png b/lib/composer/mexitek/phpcolors/demo/phpColor-demo.png
deleted file mode 100644
index b1fbdbcae97..00000000000
--- a/lib/composer/mexitek/phpcolors/demo/phpColor-demo.png
+++ /dev/null
Binary files differ
diff --git a/lib/composer/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php b/lib/composer/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php
deleted file mode 100644
index 282e9926b3e..00000000000
--- a/lib/composer/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php
+++ /dev/null
@@ -1,801 +0,0 @@
-<?php
-
-/**
- * Author: Arlo Carreon <http://arlocarreon.com>
- * Info: http://mexitek.github.io/phpColors/
- * License: http://arlo.mit-license.org/
- */
-
-namespace Mexitek\PHPColors;
-
-use Exception;
-
-/**
- * A color utility that helps manipulate HEX colors
- */
-class Color
-{
- /**
- * @var string
- */
- private $_hex;
-
- /**
- * @var array
- */
- private $_hsl;
-
- /**
- * @var array
- */
- private $_rgb;
-
- /**
- * Auto darkens/lightens by 10% for sexily-subtle gradients.
- * Set this to FALSE to adjust automatic shade to be between given color
- * and black (for darken) or white (for lighten)
- */
- public const DEFAULT_ADJUST = 10;
-
- /**
- * Instantiates the class with a HEX value
- * @param string $hex
- * @throws Exception
- */
- public function __construct(string $hex)
- {
- $color = self::sanitizeHex($hex);
- $this->_hex = $color;
- $this->_hsl = self::hexToHsl($color);
- $this->_rgb = self::hexToRgb($color);
- }
-
- /**
- * Given a HEX string returns a HSL array equivalent.
- * @param string $color
- * @return array HSL associative array
- * @throws Exception
- */
- public static function hexToHsl(string $color): array
- {
- // Sanity check
- $color = self::sanitizeHex($color);
-
- // Convert HEX to DEC
- $R = hexdec($color[0] . $color[1]);
- $G = hexdec($color[2] . $color[3]);
- $B = hexdec($color[4] . $color[5]);
-
- $HSL = array();
-
- $var_R = ($R / 255);
- $var_G = ($G / 255);
- $var_B = ($B / 255);
-
- $var_Min = min($var_R, $var_G, $var_B);
- $var_Max = max($var_R, $var_G, $var_B);
- $del_Max = $var_Max - $var_Min;
-
- $L = ($var_Max + $var_Min) / 2;
-
- if ($del_Max == 0) {
- $H = 0;
- $S = 0;
- } else {
- if ($L < 0.5) {
- $S = $del_Max / ($var_Max + $var_Min);
- } else {
- $S = $del_Max / (2 - $var_Max - $var_Min);
- }
-
- $del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max;
- $del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max;
- $del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max;
-
- if ($var_R == $var_Max) {
- $H = $del_B - $del_G;
- } elseif ($var_G == $var_Max) {
- $H = (1 / 3) + $del_R - $del_B;
- } elseif ($var_B == $var_Max) {
- $H = (2 / 3) + $del_G - $del_R;
- }
-
- if ($H < 0) {
- $H++;
- }
- if ($H > 1) {
- $H--;
- }
- }
-
- $HSL['H'] = ($H * 360);
- $HSL['S'] = $S;
- $HSL['L'] = $L;
-
- return $HSL;
- }
-
- /**
- * Given a HSL associative array returns the equivalent HEX string
- * @param array $hsl
- * @return string HEX string
- * @throws Exception "Bad HSL Array"
- */
- public static function hslToHex(array $hsl = array()): string
- {
- // Make sure it's HSL
- if (empty($hsl) || !isset($hsl["H"], $hsl["S"], $hsl["L"])) {
- throw new Exception("Param was not an HSL array");
- }
-
- list($H, $S, $L) = array($hsl['H'] / 360, $hsl['S'], $hsl['L']);
-
- if ($S == 0) {
- $r = $L * 255;
- $g = $L * 255;
- $b = $L * 255;
- } else {
- if ($L < 0.5) {
- $var_2 = $L * (1 + $S);
- } else {
- $var_2 = ($L + $S) - ($S * $L);
- }
-
- $var_1 = 2 * $L - $var_2;
-
- $r = 255 * self::hueToRgb($var_1, $var_2, $H + (1 / 3));
- $g = 255 * self::hueToRgb($var_1, $var_2, $H);
- $b = 255 * self::hueToRgb($var_1, $var_2, $H - (1 / 3));
- }
-
- // Convert to hex
- $r = dechex(round($r));
- $g = dechex(round($g));
- $b = dechex(round($b));
-
- // Make sure we get 2 digits for decimals
- $r = (strlen("" . $r) === 1) ? "0" . $r : $r;
- $g = (strlen("" . $g) === 1) ? "0" . $g : $g;
- $b = (strlen("" . $b) === 1) ? "0" . $b : $b;
-
- return $r . $g . $b;
- }
-
-
- /**
- * Given a HEX string returns a RGB array equivalent.
- * @param string $color
- * @return array RGB associative array
- * @throws Exception
- */
- public static function hexToRgb(string $color): array
- {
- // Sanity check
- $color = self::sanitizeHex($color);
-
- // Convert HEX to DEC
- $R = hexdec($color[0] . $color[1]);
- $G = hexdec($color[2] . $color[3]);
- $B = hexdec($color[4] . $color[5]);
-
- $RGB['R'] = $R;
- $RGB['G'] = $G;
- $RGB['B'] = $B;
-
- return $RGB;
- }
-
-
- /**
- * Given an RGB associative array returns the equivalent HEX string
- * @param array $rgb
- * @return string Hex string
- * @throws Exception "Bad RGB Array"
- */
- public static function rgbToHex(array $rgb = array()): string
- {
- // Make sure it's RGB
- if (empty($rgb) || !isset($rgb["R"], $rgb["G"], $rgb["B"])) {
- throw new Exception("Param was not an RGB array");
- }
-
- // https://github.com/mexitek/phpColors/issues/25#issuecomment-88354815
- // Convert RGB to HEX
- $hex[0] = str_pad(dechex((int)$rgb['R']), 2, '0', STR_PAD_LEFT);
- $hex[1] = str_pad(dechex((int)$rgb['G']), 2, '0', STR_PAD_LEFT);
- $hex[2] = str_pad(dechex((int)$rgb['B']), 2, '0', STR_PAD_LEFT);
-
- // Make sure that 2 digits are allocated to each color.
- $hex[0] = (strlen($hex[0]) === 1) ? '0' . $hex[0] : $hex[0];
- $hex[1] = (strlen($hex[1]) === 1) ? '0' . $hex[1] : $hex[1];
- $hex[2] = (strlen($hex[2]) === 1) ? '0' . $hex[2] : $hex[2];
-
- return implode('', $hex);
- }
-
- /**
- * Given an RGB associative array, returns CSS string output.
- * @param array $rgb
- * @return string rgb(r,g,b) string
- * @throws Exception "Bad RGB Array"
- */
- public static function rgbToString(array $rgb = array()): string
- {
- // Make sure it's RGB
- if (empty($rgb) || !isset($rgb["R"], $rgb["G"], $rgb["B"])) {
- throw new Exception("Param was not an RGB array");
- }
-
- return 'rgb(' .
- $rgb['R'] . ', ' .
- $rgb['G'] . ', ' .
- $rgb['B'] . ')';
- }
-
- /**
- * Given a standard color name, return hex code
- *
- * @param string $color_name
- * @return string
- */
- public static function nameToHex(string $color_name): string
- {
- $colors = array(
- 'aliceblue' => 'F0F8FF',
- 'antiquewhite' => 'FAEBD7',
- 'aqua' => '00FFFF',
- 'aquamarine' => '7FFFD4',
- 'azure' => 'F0FFFF',
- 'beige' => 'F5F5DC',
- 'bisque' => 'FFE4C4',
- 'black' => '000000',
- 'blanchedalmond' => 'FFEBCD',
- 'blue' => '0000FF',
- 'blueviolet' => '8A2BE2',
- 'brown' => 'A52A2A',
- 'burlywood' => 'DEB887',
- 'cadetblue' => '5F9EA0',
- 'chartreuse' => '7FFF00',
- 'chocolate' => 'D2691E',
- 'coral' => 'FF7F50',
- 'cornflowerblue' => '6495ED',
- 'cornsilk' => 'FFF8DC',
- 'crimson' => 'DC143C',
- 'cyan' => '00FFFF',
- 'darkblue' => '00008B',
- 'darkcyan' => '008B8B',
- 'darkgoldenrod' => 'B8860B',
- 'darkgray' => 'A9A9A9',
- 'darkgreen' => '006400',
- 'darkgrey' => 'A9A9A9',
- 'darkkhaki' => 'BDB76B',
- 'darkmagenta' => '8B008B',
- 'darkolivegreen' => '556B2F',
- 'darkorange' => 'FF8C00',
- 'darkorchid' => '9932CC',
- 'darkred' => '8B0000',
- 'darksalmon' => 'E9967A',
- 'darkseagreen' => '8FBC8F',
- 'darkslateblue' => '483D8B',
- 'darkslategray' => '2F4F4F',
- 'darkslategrey' => '2F4F4F',
- 'darkturquoise' => '00CED1',
- 'darkviolet' => '9400D3',
- 'deeppink' => 'FF1493',
- 'deepskyblue' => '00BFFF',
- 'dimgray' => '696969',
- 'dimgrey' => '696969',
- 'dodgerblue' => '1E90FF',
- 'firebrick' => 'B22222',
- 'floralwhite' => 'FFFAF0',
- 'forestgreen' => '228B22',
- 'fuchsia' => 'FF00FF',
- 'gainsboro' => 'DCDCDC',
- 'ghostwhite' => 'F8F8FF',
- 'gold' => 'FFD700',
- 'goldenrod' => 'DAA520',
- 'gray' => '808080',
- 'green' => '008000',
- 'greenyellow' => 'ADFF2F',
- 'grey' => '808080',
- 'honeydew' => 'F0FFF0',
- 'hotpink' => 'FF69B4',
- 'indianred' => 'CD5C5C',
- 'indigo' => '4B0082',
- 'ivory' => 'FFFFF0',
- 'khaki' => 'F0E68C',
- 'lavender' => 'E6E6FA',
- 'lavenderblush' => 'FFF0F5',
- 'lawngreen' => '7CFC00',
- 'lemonchiffon' => 'FFFACD',
- 'lightblue' => 'ADD8E6',
- 'lightcoral' => 'F08080',
- 'lightcyan' => 'E0FFFF',
- 'lightgoldenrodyellow' => 'FAFAD2',
- 'lightgray' => 'D3D3D3',
- 'lightgreen' => '90EE90',
- 'lightgrey' => 'D3D3D3',
- 'lightpink' => 'FFB6C1',
- 'lightsalmon' => 'FFA07A',
- 'lightseagreen' => '20B2AA',
- 'lightskyblue' => '87CEFA',
- 'lightslategray' => '778899',
- 'lightslategrey' => '778899',
- 'lightsteelblue' => 'B0C4DE',
- 'lightyellow' => 'FFFFE0',
- 'lime' => '00FF00',
- 'limegreen' => '32CD32',
- 'linen' => 'FAF0E6',
- 'magenta' => 'FF00FF',
- 'maroon' => '800000',
- 'mediumaquamarine' => '66CDAA',
- 'mediumblue' => '0000CD',
- 'mediumorchid' => 'BA55D3',
- 'mediumpurple' => '9370D0',
- 'mediumseagreen' => '3CB371',
- 'mediumslateblue' => '7B68EE',
- 'mediumspringgreen' => '00FA9A',
- 'mediumturquoise' => '48D1CC',
- 'mediumvioletred' => 'C71585',
- 'midnightblue' => '191970',
- 'mintcream' => 'F5FFFA',
- 'mistyrose' => 'FFE4E1',
- 'moccasin' => 'FFE4B5',
- 'navajowhite' => 'FFDEAD',
- 'navy' => '000080',
- 'oldlace' => 'FDF5E6',
- 'olive' => '808000',
- 'olivedrab' => '6B8E23',
- 'orange' => 'FFA500',
- 'orangered' => 'FF4500',
- 'orchid' => 'DA70D6',
- 'palegoldenrod' => 'EEE8AA',
- 'palegreen' => '98FB98',
- 'paleturquoise' => 'AFEEEE',
- 'palevioletred' => 'DB7093',
- 'papayawhip' => 'FFEFD5',
- 'peachpuff' => 'FFDAB9',
- 'peru' => 'CD853F',
- 'pink' => 'FFC0CB',
- 'plum' => 'DDA0DD',
- 'powderblue' => 'B0E0E6',
- 'purple' => '800080',
- 'red' => 'FF0000',
- 'rosybrown' => 'BC8F8F',
- 'royalblue' => '4169E1',
- 'saddlebrown' => '8B4513',
- 'salmon' => 'FA8072',
- 'sandybrown' => 'F4A460',
- 'seagreen' => '2E8B57',
- 'seashell' => 'FFF5EE',
- 'sienna' => 'A0522D',
- 'silver' => 'C0C0C0',
- 'skyblue' => '87CEEB',
- 'slateblue' => '6A5ACD',
- 'slategray' => '708090',
- 'slategrey' => '708090',
- 'snow' => 'FFFAFA',
- 'springgreen' => '00FF7F',
- 'steelblue' => '4682B4',
- 'tan' => 'D2B48C',
- 'teal' => '008080',
- 'thistle' => 'D8BFD8',
- 'tomato' => 'FF6347',
- 'turquoise' => '40E0D0',
- 'violet' => 'EE82EE',
- 'wheat' => 'F5DEB3',
- 'white' => 'FFFFFF',
- 'whitesmoke' => 'F5F5F5',
- 'yellow' => 'FFFF00',
- 'yellowgreen' => '9ACD32'
- );
-
- $color_name = strtolower($color_name);
- if (isset($colors[$color_name])) {
- return '#' . $colors[$color_name];
- }
-
- return $color_name;
- }
-
- /**
- * Given a HEX value, returns a darker color. If no desired amount provided, then the color halfway between
- * given HEX and black will be returned.
- * @param int $amount
- * @return string Darker HEX value
- * @throws Exception
- */
- public function darken(int $amount = self::DEFAULT_ADJUST): string
- {
- // Darken
- $darkerHSL = $this->darkenHsl($this->_hsl, $amount);
- // Return as HEX
- return self::hslToHex($darkerHSL);
- }
-
- /**
- * Given a HEX value, returns a lighter color. If no desired amount provided, then the color halfway between
- * given HEX and white will be returned.
- * @param int $amount
- * @return string Lighter HEX value
- * @throws Exception
- */
- public function lighten(int $amount = self::DEFAULT_ADJUST): string
- {
- // Lighten
- $lighterHSL = $this->lightenHsl($this->_hsl, $amount);
- // Return as HEX
- return self::hslToHex($lighterHSL);
- }
-
- /**
- * Given a HEX value, returns a mixed color. If no desired amount provided, then the color mixed by this ratio
- * @param string $hex2 Secondary HEX value to mix with
- * @param int $amount = -100..0..+100
- * @return string mixed HEX value
- * @throws Exception
- */
- public function mix(string $hex2, int $amount = 0): string
- {
- $rgb2 = self::hexToRgb($hex2);
- $mixed = $this->mixRgb($this->_rgb, $rgb2, $amount);
- // Return as HEX
- return self::rgbToHex($mixed);
- }
-
- /**
- * Creates an array with two shades that can be used to make a gradient
- * @param int $amount Optional percentage amount you want your contrast color
- * @return array An array with a 'light' and 'dark' index
- * @throws Exception
- */
- public function makeGradient(int $amount = self::DEFAULT_ADJUST): array
- {
- // Decide which color needs to be made
- if ($this->isLight()) {
- $lightColor = $this->_hex;
- $darkColor = $this->darken($amount);
- } else {
- $lightColor = $this->lighten($amount);
- $darkColor = $this->_hex;
- }
-
- // Return our gradient array
- return array("light" => $lightColor, "dark" => $darkColor);
- }
-
-
- /**
- * Returns whether or not given color is considered "light"
- * @param string|bool $color
- * @param int $lighterThan
- * @return boolean
- */
- public function isLight($color = false, int $lighterThan = 130): bool
- {
- // Get our color
- $color = ($color) ? $color : $this->_hex;
-
- // Calculate straight from rbg
- $r = hexdec($color[0] . $color[1]);
- $g = hexdec($color[2] . $color[3]);
- $b = hexdec($color[4] . $color[5]);
-
- return (($r * 299 + $g * 587 + $b * 114) / 1000 > $lighterThan);
- }
-
- /**
- * Returns whether or not a given color is considered "dark"
- * @param string|bool $color
- * @param int $darkerThan
- * @return boolean
- */
- public function isDark($color = false, int $darkerThan = 130): bool
- {
- // Get our color
- $color = ($color) ? $color : $this->_hex;
-
- // Calculate straight from rbg
- $r = hexdec($color[0] . $color[1]);
- $g = hexdec($color[2] . $color[3]);
- $b = hexdec($color[4] . $color[5]);
-
- return (($r * 299 + $g * 587 + $b * 114) / 1000 <= $darkerThan);
- }
-
- /**
- * Returns the complimentary color
- * @return string Complementary hex color
- * @throws Exception
- */
- public function complementary(): string
- {
- // Get our HSL
- $hsl = $this->_hsl;
-
- // Adjust Hue 180 degrees
- $hsl['H'] += ($hsl['H'] > 180) ? -180 : 180;
-
- // Return the new value in HEX
- return self::hslToHex($hsl);
- }
-
- /**
- * Returns the HSL array of your color
- */
- public function getHsl(): array
- {
- return $this->_hsl;
- }
-
- /**
- * Returns your original color
- */
- public function getHex(): string
- {
- return $this->_hex;
- }
-
- /**
- * Returns the RGB array of your color
- */
- public function getRgb(): array
- {
- return $this->_rgb;
- }
-
- /**
- * Returns the cross browser CSS3 gradient
- * @param int $amount Optional: percentage amount to light/darken the gradient
- * @param boolean $vintageBrowsers Optional: include vendor prefixes for browsers that almost died out already
- * @param string $prefix Optional: prefix for every lines
- * @param string $suffix Optional: suffix for every lines
- * @return string CSS3 gradient for chrome, safari, firefox, opera and IE10
- * @throws Exception
- * @link http://caniuse.com/css-gradients Resource for the browser support
- */
- public function getCssGradient($amount = self::DEFAULT_ADJUST, $vintageBrowsers = false, $suffix = "", $prefix = ""): string
- {
- // Get the recommended gradient
- $g = $this->makeGradient($amount);
-
- $css = "";
- /* fallback/image non-cover color */
- $css .= "{$prefix}background-color: #" . $this->_hex . ";{$suffix}";
-
- /* IE Browsers */
- $css .= "{$prefix}filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#" . $g['light'] . "', endColorstr='#" . $g['dark'] . "');{$suffix}";
-
- /* Safari 4+, Chrome 1-9 */
- if ($vintageBrowsers) {
- $css .= "{$prefix}background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#" . $g['light'] . "), to(#" . $g['dark'] . "));{$suffix}";
- }
-
- /* Safari 5.1+, Mobile Safari, Chrome 10+ */
- $css .= "{$prefix}background-image: -webkit-linear-gradient(top, #" . $g['light'] . ", #" . $g['dark'] . ");{$suffix}";
-
- if ($vintageBrowsers) {
- /* Firefox 3.6+ */
- $css .= "{$prefix}background-image: -moz-linear-gradient(top, #" . $g['light'] . ", #" . $g['dark'] . ");{$suffix}";
-
- /* Opera 11.10+ */
- $css .= "{$prefix}background-image: -o-linear-gradient(top, #" . $g['light'] . ", #" . $g['dark'] . ");{$suffix}";
- }
-
- /* Unprefixed version (standards): FF 16+, IE10+, Chrome 26+, Safari 7+, Opera 12.1+ */
- $css .= "{$prefix}background-image: linear-gradient(to bottom, #" . $g['light'] . ", #" . $g['dark'] . ");{$suffix}";
-
- // Return our CSS
- return $css;
- }
-
- /**
- * Darkens a given HSL array
- * @param array $hsl
- * @param int $amount
- * @return array $hsl
- */
- private function darkenHsl(array $hsl, int $amount = self::DEFAULT_ADJUST): array
- {
- // Check if we were provided a number
- if ($amount) {
- $hsl['L'] = ($hsl['L'] * 100) - $amount;
- $hsl['L'] = ($hsl['L'] < 0) ? 0 : $hsl['L'] / 100;
- } else {
- // We need to find out how much to darken
- $hsl['L'] /= 2;
- }
-
- return $hsl;
- }
-
- /**
- * Lightens a given HSL array
- * @param array $hsl
- * @param int $amount
- * @return array
- */
- private function lightenHsl(array $hsl, int $amount = self::DEFAULT_ADJUST): array
- {
- // Check if we were provided a number
- if ($amount) {
- $hsl['L'] = ($hsl['L'] * 100) + $amount;
- $hsl['L'] = ($hsl['L'] > 100) ? 1 : $hsl['L'] / 100;
- } else {
- // We need to find out how much to lighten
- $hsl['L'] += (1 - $hsl['L']) / 2;
- }
-
- return $hsl;
- }
-
- /**
- * Mix two RGB colors and return the resulting RGB color
- * ported from http://phpxref.pagelines.com/nav.html?includes/class.colors.php.source.html
- * @param array $rgb1
- * @param array $rgb2
- * @param int $amount ranged -100..0..+100
- * @return array
- */
- private function mixRgb(array $rgb1, array $rgb2, int $amount = 0): array
- {
- $r1 = ($amount + 100) / 100;
- $r2 = 2 - $r1;
-
- $rmix = (($rgb1['R'] * $r1) + ($rgb2['R'] * $r2)) / 2;
- $gmix = (($rgb1['G'] * $r1) + ($rgb2['G'] * $r2)) / 2;
- $bmix = (($rgb1['B'] * $r1) + ($rgb2['B'] * $r2)) / 2;
-
- return array('R' => $rmix, 'G' => $gmix, 'B' => $bmix);
- }
-
- /**
- * Given a Hue, returns corresponding RGB value
- * @param float $v1
- * @param float $v2
- * @param float $vH
- * @return float
- */
- private static function hueToRgb(float $v1, float $v2, float $vH): float
- {
- if ($vH < 0) {
- ++$vH;
- }
-
- if ($vH > 1) {
- --$vH;
- }
-
- if ((6 * $vH) < 1) {
- return ($v1 + ($v2 - $v1) * 6 * $vH);
- }
-
- if ((2 * $vH) < 1) {
- return $v2;
- }
-
- if ((3 * $vH) < 2) {
- return ($v1 + ($v2 - $v1) * ((2 / 3) - $vH) * 6);
- }
-
- return $v1;
- }
-
- /**
- * Checks the HEX string for correct formatting and converts short format to long
- * @param string $hex
- * @return string
- * @throws Exception
- */
- private static function sanitizeHex(string $hex): string
- {
- // Strip # sign if it is present
- $color = str_replace("#", "", $hex);
-
- // Validate hex string
- if (!preg_match('/^[a-fA-F0-9]+$/', $color)) {
- throw new Exception("HEX color does not match format");
- }
-
- // Make sure it's 6 digits
- if (strlen($color) === 3) {
- $color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2];
- } elseif (strlen($color) !== 6) {
- throw new Exception("HEX color needs to be 6 or 3 digits long");
- }
-
- return $color;
- }
-
- /**
- * Converts object into its string representation
- * @return string
- */
- public function __toString()
- {
- return "#" . $this->getHex();
- }
-
- /**
- * @param string $name
- * @return mixed|null
- */
- public function __get(string $name)
- {
- switch (strtolower($name)) {
- case 'red':
- case 'r':
- return $this->_rgb["R"];
- case 'green':
- case 'g':
- return $this->_rgb["G"];
- case 'blue':
- case 'b':
- return $this->_rgb["B"];
- case 'hue':
- case 'h':
- return $this->_hsl["H"];
- case 'saturation':
- case 's':
- return $this->_hsl["S"];
- case 'lightness':
- case 'l':
- return $this->_hsl["L"];
- }
-
- $trace = debug_backtrace();
- trigger_error(
- 'Undefined property via __get(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'],
- E_USER_NOTICE
- );
- return null;
- }
-
- /**
- * @param string $name
- * @param mixed $value
- * @throws Exception
- */
- public function __set(string $name, $value)
- {
- switch (strtolower($name)) {
- case 'red':
- case 'r':
- $this->_rgb["R"] = $value;
- $this->_hex = self::rgbToHex($this->_rgb);
- $this->_hsl = self::hexToHsl($this->_hex);
- break;
- case 'green':
- case 'g':
- $this->_rgb["G"] = $value;
- $this->_hex = self::rgbToHex($this->_rgb);
- $this->_hsl = self::hexToHsl($this->_hex);
- break;
- case 'blue':
- case 'b':
- $this->_rgb["B"] = $value;
- $this->_hex = self::rgbToHex($this->_rgb);
- $this->_hsl = self::hexToHsl($this->_hex);
- break;
- case 'hue':
- case 'h':
- $this->_hsl["H"] = $value;
- $this->_hex = self::hslToHex($this->_hsl);
- $this->_rgb = self::hexToRgb($this->_hex);
- break;
- case 'saturation':
- case 's':
- $this->_hsl["S"] = $value;
- $this->_hex = self::hslToHex($this->_hsl);
- $this->_rgb = self::hexToRgb($this->_hex);
- break;
- case 'lightness':
- case 'light':
- case 'l':
- $this->_hsl["L"] = $value;
- $this->_hex = self::hslToHex($this->_hsl);
- $this->_rgb = self::hexToRgb($this->_hex);
- break;
- }
- }
-}
diff --git a/lib/composer/mexitek/phpcolors/tests/bootstrap.php b/lib/composer/mexitek/phpcolors/tests/bootstrap.php
deleted file mode 100644
index 846079601db..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/bootstrap.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-require __DIR__ . '/../vendor/autoload.php';
-require __DIR__ . '/../src/Mexitek/PHPColors/Color.php';
-
-if (!class_exists('Tester\Assert')) {
- echo "Install Nette Tester using `composer update --dev`\n";
- exit(1);
-}
-
-Tester\Environment::setup();
diff --git a/lib/composer/mexitek/phpcolors/tests/colorAnalyze.phpt b/lib/composer/mexitek/phpcolors/tests/colorAnalyze.phpt
deleted file mode 100644
index 1f7ff47a198..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/colorAnalyze.phpt
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-require __DIR__ . '/bootstrap.php';
-
-use Mexitek\PHPColors\Color;
-use Tester\Assert;
-
-
-$isDark = array(
- "000000" => true,
- "336699" => true,
- "913399" => true,
- "E5C3E8" => false,
- "D7E8DD" => false,
- "218A47" => true,
- "3D41CA" => true,
- "E5CCDD" => false,
- "FFFFFF" => false,
-);
-
-foreach ($isDark as $colorHex => $state) {
- $color = new Color($colorHex);
- Assert::same($state, $color->isDark(), 'Incorrect dark color analyzed (#' . $colorHex . ').');
-}
-
-$isLight = array(
- "FFFFFF" => true,
- "A3FFE5" => true,
- "000000" => false,
-);
-
-foreach ($isLight as $colorHex => $state) {
- $color = new Color($colorHex);
- Assert::same($state, $color->isLight(), 'Incorrect light color analyzed (#' . $colorHex . ').');
-}
diff --git a/lib/composer/mexitek/phpcolors/tests/colorChange.phpt b/lib/composer/mexitek/phpcolors/tests/colorChange.phpt
deleted file mode 100644
index 373f34efef0..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/colorChange.phpt
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-require __DIR__ . '/bootstrap.php';
-
-use Mexitek\PHPColors\Color;
-use Tester\Assert;
-
-
-$expected = array(
- "336699" => "264d73",
- "913399" => "6d2673"
-);
-
-foreach ($expected as $original => $darker) {
- $color = new Color($original);
- Assert::same($darker, $color->darken(), 'Incorrect darker color returned.');
-}
-
-
-$expected = array(
- "336699" => "4080bf",
- "913399" => "b540bf"
-);
-
-foreach ($expected as $original => $lighter) {
- $color = new Color($original);
- Assert::same($lighter, $color->lighten(), "Incorrect lighter color returned.");
-}
diff --git a/lib/composer/mexitek/phpcolors/tests/colorComplementary.phpt b/lib/composer/mexitek/phpcolors/tests/colorComplementary.phpt
deleted file mode 100644
index 2876b5c8b00..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/colorComplementary.phpt
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-require __DIR__ . '/bootstrap.php';
-
-use Mexitek\PHPColors\Color;
-use Tester\Assert;
-
-
-$expected = array(
- "ff0000" => "00ffff",
- "0000ff" => "ffff00",
- "00ff00" => "ff00ff",
- "ffff00" => "0000ff",
- "00ffff" => "ff0000",
- "49cbaf" => "cb4965",
- "003eb2" => "b27400",
- "b27400" => "003eb2",
- "ffff99" => "9999ff",
- "ccff00" => "3300ff",
- "3300ff" => "ccff00",
- "fb4a2c" => "2cddfb",
- "9cebff" => "ffb09c",
-);
-
-foreach ($expected as $original => $complementary) {
- $color = new Color($original);
- Assert::same($complementary, $color->complementary(), 'Incorrect complementary color returned.');
-}
diff --git a/lib/composer/mexitek/phpcolors/tests/colorConvertHslToHex.phpt b/lib/composer/mexitek/phpcolors/tests/colorConvertHslToHex.phpt
deleted file mode 100644
index fd3adbd0534..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/colorConvertHslToHex.phpt
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-require __DIR__ . '/bootstrap.php';
-
-use Mexitek\PHPColors\Color;
-use Tester\Assert;
-
-// Colors in HSL, for testing.
-$blue = [
- 'H' => 194,
- 'S' => 1.0,
- 'L' => 0.4,
-];
-$yellow = [
- 'H' => 57,
- 'S' => 0.91,
- 'L' => 0.51,
-];
-$black = [
- 'H' => 0,
- 'S' => 0.0,
- 'L' => 0.0,
-];
-$grey = [
- 'H' => 0,
- 'S' => 0.0,
- 'L' => 0.65,
-];
-$white = [
- 'H' => 0,
- 'S' => 0.0,
- 'L' => 1.0,
-];
-
-// Test cases.
-$colorsToConvert = array(
- 'blue' => [ // hsl(194, 100%, 40%)
- 'hex' => '009ccc',
- 'hsl' => $blue,
- ],
- 'yellow' => [ // hsl(57, 91%, 51%)
- 'hex' => 'f4e810',
- 'hsl' => $yellow,
- ],
- 'black' => [
- 'hex' => '000000',
- 'hsl' => $black,
- ],
- 'grey' => [
- 'hex' => 'a6a6a6',
- 'hsl' => $grey,
- ],
- 'white' => [
- 'hex' => 'ffffff',
- 'hsl' => $white,
- ],
-);
-
-
-foreach ($colorsToConvert as $color) {
- $hsl = $color['hsl'];
- $hex = $color['hex'];
-
- $answer = Color::hslToHex($hsl);
- Assert::same(
- $hex,
- $answer,
- 'Incorrect hex result: "' . json_encode($hsl) .
- '" should convert to "' . $hex .
- '", but output was: "' . $answer . '".'
- );
-}
diff --git a/lib/composer/mexitek/phpcolors/tests/colorConvertNameToHex.phpt b/lib/composer/mexitek/phpcolors/tests/colorConvertNameToHex.phpt
deleted file mode 100644
index e4f87ca740f..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/colorConvertNameToHex.phpt
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-
-require __DIR__ . '/bootstrap.php';
-
-use Mexitek\PHPColors\Color;
-use Tester\Assert;
-
-// Test cases.
-$colorsToConvert = array(
- 'aliceblue' => 'F0F8FF',
- 'antiquewhite' => 'FAEBD7',
- 'aqua' => '00FFFF',
- 'aquamarine' => '7FFFD4',
- 'azure' => 'F0FFFF',
- 'beige' => 'F5F5DC',
- 'bisque' => 'FFE4C4',
- 'black' => '000000',
- 'blanchedalmond' => 'FFEBCD',
- 'blue' => '0000FF',
- 'blueviolet' => '8A2BE2',
- 'brown' => 'A52A2A',
- 'burlywood' => 'DEB887',
- 'cadetblue' => '5F9EA0',
- 'chartreuse' => '7FFF00',
- 'chocolate' => 'D2691E',
- 'coral' => 'FF7F50',
- 'cornflowerblue' => '6495ED',
- 'cornsilk' => 'FFF8DC',
- 'crimson' => 'DC143C',
- 'cyan' => '00FFFF',
- 'darkblue' => '00008B',
- 'darkcyan' => '008B8B',
- 'darkgoldenrod' => 'B8860B',
- 'darkgray' => 'A9A9A9',
- 'darkgreen' => '006400',
- 'darkgrey' => 'A9A9A9',
- 'darkkhaki' => 'BDB76B',
- 'darkmagenta' => '8B008B',
- 'darkolivegreen' => '556B2F',
- 'darkorange' => 'FF8C00',
- 'darkorchid' => '9932CC',
- 'darkred' => '8B0000',
- 'darksalmon' => 'E9967A',
- 'darkseagreen' => '8FBC8F',
- 'darkslateblue' => '483D8B',
- 'darkslategray' => '2F4F4F',
- 'darkslategrey' => '2F4F4F',
- 'darkturquoise' => '00CED1',
- 'darkviolet' => '9400D3',
- 'deeppink' => 'FF1493',
- 'deepskyblue' => '00BFFF',
- 'dimgray' => '696969',
- 'dimgrey' => '696969',
- 'dodgerblue' => '1E90FF',
- 'firebrick' => 'B22222',
- 'floralwhite' => 'FFFAF0',
- 'forestgreen' => '228B22',
- 'fuchsia' => 'FF00FF',
- 'gainsboro' => 'DCDCDC',
- 'ghostwhite' => 'F8F8FF',
- 'gold' => 'FFD700',
- 'goldenrod' => 'DAA520',
- 'gray' => '808080',
- 'green' => '008000',
- 'greenyellow' => 'ADFF2F',
- 'grey' => '808080',
- 'honeydew' => 'F0FFF0',
- 'hotpink' => 'FF69B4',
- 'indianred' => 'CD5C5C',
- 'indigo' => '4B0082',
- 'ivory' => 'FFFFF0',
- 'khaki' => 'F0E68C',
- 'lavender' => 'E6E6FA',
- 'lavenderblush' => 'FFF0F5',
- 'lawngreen' => '7CFC00',
- 'lemonchiffon' => 'FFFACD',
- 'lightblue' => 'ADD8E6',
- 'lightcoral' => 'F08080',
- 'lightcyan' => 'E0FFFF',
- 'lightgoldenrodyellow' => 'FAFAD2',
- 'lightgray' => 'D3D3D3',
- 'lightgreen' => '90EE90',
- 'lightgrey' => 'D3D3D3',
- 'lightpink' => 'FFB6C1',
- 'lightsalmon' => 'FFA07A',
- 'lightseagreen' => '20B2AA',
- 'lightskyblue' => '87CEFA',
- 'lightslategray' => '778899',
- 'lightslategrey' => '778899',
- 'lightsteelblue' => 'B0C4DE',
- 'lightyellow' => 'FFFFE0',
- 'lime' => '00FF00',
- 'limegreen' => '32CD32',
- 'linen' => 'FAF0E6',
- 'magenta' => 'FF00FF',
- 'maroon' => '800000',
- 'mediumaquamarine' => '66CDAA',
- 'mediumblue' => '0000CD',
- 'mediumorchid' => 'BA55D3',
- 'mediumpurple' => '9370D0',
- 'mediumseagreen' => '3CB371',
- 'mediumslateblue' => '7B68EE',
- 'mediumspringgreen' => '00FA9A',
- 'mediumturquoise' => '48D1CC',
- 'mediumvioletred' => 'C71585',
- 'midnightblue' => '191970',
- 'mintcream' => 'F5FFFA',
- 'mistyrose' => 'FFE4E1',
- 'moccasin' => 'FFE4B5',
- 'navajowhite' => 'FFDEAD',
- 'navy' => '000080',
- 'oldlace' => 'FDF5E6',
- 'olive' => '808000',
- 'olivedrab' => '6B8E23',
- 'orange' => 'FFA500',
- 'orangered' => 'FF4500',
- 'orchid' => 'DA70D6',
- 'palegoldenrod' => 'EEE8AA',
- 'palegreen' => '98FB98',
- 'paleturquoise' => 'AFEEEE',
- 'palevioletred' => 'DB7093',
- 'papayawhip' => 'FFEFD5',
- 'peachpuff' => 'FFDAB9',
- 'peru' => 'CD853F',
- 'pink' => 'FFC0CB',
- 'plum' => 'DDA0DD',
- 'powderblue' => 'B0E0E6',
- 'purple' => '800080',
- 'red' => 'FF0000',
- 'rosybrown' => 'BC8F8F',
- 'royalblue' => '4169E1',
- 'saddlebrown' => '8B4513',
- 'salmon' => 'FA8072',
- 'sandybrown' => 'F4A460',
- 'seagreen' => '2E8B57',
- 'seashell' => 'FFF5EE',
- 'sienna' => 'A0522D',
- 'silver' => 'C0C0C0',
- 'skyblue' => '87CEEB',
- 'slateblue' => '6A5ACD',
- 'slategray' => '708090',
- 'slategrey' => '708090',
- 'snow' => 'FFFAFA',
- 'springgreen' => '00FF7F',
- 'steelblue' => '4682B4',
- 'tan' => 'D2B48C',
- 'teal' => '008080',
- 'thistle' => 'D8BFD8',
- 'tomato' => 'FF6347',
- 'turquoise' => '40E0D0',
- 'violet' => 'EE82EE',
- 'wheat' => 'F5DEB3',
- 'white' => 'FFFFFF',
- 'whitesmoke' => 'F5F5F5',
- 'yellow' => 'FFFF00',
- 'yellowgreen' => '9ACD32'
-);
-
-foreach ($colorsToConvert as $name => $hex) {
- $hex = '#' . $hex;
-
- $answer = Color::nameToHex($name);
- Assert::same(
- $hex,
- $answer,
- 'Incorrect hex result: "' . Color::nameToHex($name) .
- '" should convert to "' . $hex .
- '", but output was: "' . $answer . '".'
- );
-}
diff --git a/lib/composer/mexitek/phpcolors/tests/colorConvertRgbToHex.phpt b/lib/composer/mexitek/phpcolors/tests/colorConvertRgbToHex.phpt
deleted file mode 100644
index a65f1a7e874..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/colorConvertRgbToHex.phpt
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-require __DIR__ . '/bootstrap.php';
-
-use Mexitek\PHPColors\Color;
-use Tester\Assert;
-
-// Colors in RGB, for testing.
-$blue = [
- 'R' => 0,
- 'G' => 158,
- 'B' => 204,
-];
-$yellow = [
- 'R' => 244,
- 'G' => 231,
- 'B' => 15,
-];
-$black = [
- 'R' => 0,
- 'G' => 0,
- 'B' => 0,
-];
-$white = [
- 'R' => 255,
- 'G' => 255,
- 'B' => 255,
-];
-
-// Test cases.
-$colorsToConvert = array(
- 'blue' => [ // rgb(0, 158, 204)
- 'hex' => '009ecc',
- 'rgb' => $blue,
- ],
- 'yellow' => [ // rgb(244, 231, 15)
- 'hex' => 'f4e70f',
- 'rgb' => $yellow,
- ],
- 'black' => [
- 'hex' => '000000',
- 'rgb' => $black,
- ],
- 'white' => [
- 'hex' => 'ffffff',
- 'rgb' => $white,
- ],
-);
-
-
-foreach ($colorsToConvert as $color) {
- $rgb = $color['rgb'];
- $hex = $color['hex'];
-
- $answer = Color::rgbToHex($rgb);
- Assert::same(
- $hex,
- $answer,
- 'Incorrect hex result: "' . Color::rgbToString($rgb) .
- '" should convert to "' . $hex .
- '", but output was: "' . $answer . '".'
- );
-
- $revertAnswer = Color::hexToRgb($hex);
- Assert::same(
- $rgb,
- $revertAnswer,
- 'Incorrect rgb result: "' . $hex .
- '" should convert to "' . Color::rgbToString($rgb) .
- '", but output was: "' . Color::rgbToString($revertAnswer) . '".'
- );
-}
diff --git a/lib/composer/mexitek/phpcolors/tests/colorInput.phpt b/lib/composer/mexitek/phpcolors/tests/colorInput.phpt
deleted file mode 100644
index 8ace3057821..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/colorInput.phpt
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-require __DIR__ . '/bootstrap.php';
-
-use Mexitek\PHPColors\Color;
-use Tester\Assert;
-
-// Test that a hex starting with '#' is supported as input
-$expected = array(
- "#ffffff",
- "#00ff00",
- "#000000",
- "#ff9a00",
-);
-
-foreach ($expected as $input) {
- $color = new Color($input);
- Assert::same((string) $color, $input, 'Incorrect color returned.');
-}
diff --git a/lib/composer/mexitek/phpcolors/tests/colorMix.phpt b/lib/composer/mexitek/phpcolors/tests/colorMix.phpt
deleted file mode 100644
index 6029477124e..00000000000
--- a/lib/composer/mexitek/phpcolors/tests/colorMix.phpt
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-require __DIR__ . '/bootstrap.php';
-
-use Mexitek\PHPColors\Color;
-use Tester\Assert;
-
-
-$expected = array(
- "ffffff" => array("ff0000", "ff7f7f"), // ffffff + ff0000 = ff7f7f
- "00ff00" => array("ff0000", "7f7f00"),
- "000000" => array("ff0000", "7f0000"),
- "002fff" => array("000000", "00177f"),
- "00ffed" => array("000000", "007f76"),
- "ff9a00" => array("000000", "7f4d00"),
- "ff9a00" => array("ffffff", "ffcc7f"),
- "00ff2d" => array("ffffff", "7fff96"),
- "8D43B4" => array("35CF64", "61898c"),
-);
-
-foreach ($expected as $original => $complementary) {
- $color = new Color($original);
- Assert::same($complementary[1], $color->mix($complementary[0]), 'Incorrect mix color returned.');
-}
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index d823c6ce8f4..9d918353b9b 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -124,8 +124,8 @@ OC.L10N.register(
"For the best results, please consider using a GNU/Linux server instead." : "Zur Gewährleistung eines optimalen Betriebs sollte stattdessen ein GNU/Linux-Server verwendet werden.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und open_basedir in der Datei php.ini konfiguriert worden ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Bitte entfernen Sie die open_basedir-Einstellung in Ihrer php.ini oder wechseln Sie zu 64-Bit-PHP.",
- "Set an admin username." : "Einen Administrator-Benutzernamen setzen.",
- "Set an admin password." : "Ein Administrator-Passwort setzen.",
+ "Set an admin username." : "Einen Administrations-Benutzernamen setzen.",
+ "Set an admin password." : "Ein Administrationspasswort setzen.",
"Cannot create or write into the data directory %s" : "Das Datenverzeichnis %s kann nicht erstellt oder es kann darin nicht geschrieben werden.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Freigabe-Backend %s muss in der OCP\\Share_Backend - Schnittstelle implementiert werden",
"Sharing backend %s not found" : "Freigabe-Backend %s nicht gefunden",
@@ -224,7 +224,7 @@ OC.L10N.register(
"Setting locale to %s failed." : "Das Setzen der Sprache (locale) auf %s ist fehlgeschlagen.",
"Please install one of these locales on your system and restart your web server." : "Bitte installieren Sie eine dieser Sprachen (locales) auf Ihrem System und starten Sie den Webserver neu.",
"PHP module %s not installed." : "PHP-Modul %s nicht installiert.",
- "Please ask your server administrator to install the module." : "Bitte kontaktieren Sie Ihren Server-Administrator und bitten Sie um die Installation des Moduls.",
+ "Please ask your server administrator to install the module." : "Bitte kontaktieren Sie Ihre Server-Administration und bitten Sie um die Installation des Moduls.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP-Einstellung „%s“ ist nicht auf „%s“ gesetzt.",
"Adjusting this setting in php.ini will make Nextcloud run again" : "Eine Änderung dieser Einstellung in der php.ini kann Ihre Nextcloud wieder lauffähig machen.",
"<code>mbstring.func_overload</code> is set to <code>%s</code> instead of the expected value <code>0</code>." : "<code>mbstring.func_overload</code> ist auf <code>%s</code> gesetzt und nicht auf den erwarteten Wert <code>0</code>.",
@@ -234,7 +234,8 @@ OC.L10N.register(
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP-Module wurden installiert, werden aber als noch fehlend gelistet?",
- "Please ask your server administrator to restart the web server." : "Bitte kontaktieren Sie Ihren Server-Administrator und bitten Sie um den Neustart des Webservers.",
+ "Please ask your server administrator to restart the web server." : "Bitte kontaktieren Sie Ihre Server-Administration und bitten Sie um den Neustart des Webservers.",
+ "Please ask your server administrator to check the Nextcloud configuration." : "Bitten Sie Ihre Server-Administration, die Nextcloud-Konfiguration zu überprüfen.",
"PostgreSQL >= 9 required." : "PostgreSQL >= 9 benötigt.",
"Please upgrade your database version." : "Bitte aktualisieren Sie Ihre Datenbankversion.",
"Your data directory is readable by other users." : "Ihr Datenverzeichnis kann von anderen Benutzern gelesen werden.",
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index 50c77feb93d..768f2592438 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -122,8 +122,8 @@
"For the best results, please consider using a GNU/Linux server instead." : "Zur Gewährleistung eines optimalen Betriebs sollte stattdessen ein GNU/Linux-Server verwendet werden.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und open_basedir in der Datei php.ini konfiguriert worden ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Bitte entfernen Sie die open_basedir-Einstellung in Ihrer php.ini oder wechseln Sie zu 64-Bit-PHP.",
- "Set an admin username." : "Einen Administrator-Benutzernamen setzen.",
- "Set an admin password." : "Ein Administrator-Passwort setzen.",
+ "Set an admin username." : "Einen Administrations-Benutzernamen setzen.",
+ "Set an admin password." : "Ein Administrationspasswort setzen.",
"Cannot create or write into the data directory %s" : "Das Datenverzeichnis %s kann nicht erstellt oder es kann darin nicht geschrieben werden.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Freigabe-Backend %s muss in der OCP\\Share_Backend - Schnittstelle implementiert werden",
"Sharing backend %s not found" : "Freigabe-Backend %s nicht gefunden",
@@ -222,7 +222,7 @@
"Setting locale to %s failed." : "Das Setzen der Sprache (locale) auf %s ist fehlgeschlagen.",
"Please install one of these locales on your system and restart your web server." : "Bitte installieren Sie eine dieser Sprachen (locales) auf Ihrem System und starten Sie den Webserver neu.",
"PHP module %s not installed." : "PHP-Modul %s nicht installiert.",
- "Please ask your server administrator to install the module." : "Bitte kontaktieren Sie Ihren Server-Administrator und bitten Sie um die Installation des Moduls.",
+ "Please ask your server administrator to install the module." : "Bitte kontaktieren Sie Ihre Server-Administration und bitten Sie um die Installation des Moduls.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP-Einstellung „%s“ ist nicht auf „%s“ gesetzt.",
"Adjusting this setting in php.ini will make Nextcloud run again" : "Eine Änderung dieser Einstellung in der php.ini kann Ihre Nextcloud wieder lauffähig machen.",
"<code>mbstring.func_overload</code> is set to <code>%s</code> instead of the expected value <code>0</code>." : "<code>mbstring.func_overload</code> ist auf <code>%s</code> gesetzt und nicht auf den erwarteten Wert <code>0</code>.",
@@ -232,7 +232,8 @@
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP-Module wurden installiert, werden aber als noch fehlend gelistet?",
- "Please ask your server administrator to restart the web server." : "Bitte kontaktieren Sie Ihren Server-Administrator und bitten Sie um den Neustart des Webservers.",
+ "Please ask your server administrator to restart the web server." : "Bitte kontaktieren Sie Ihre Server-Administration und bitten Sie um den Neustart des Webservers.",
+ "Please ask your server administrator to check the Nextcloud configuration." : "Bitten Sie Ihre Server-Administration, die Nextcloud-Konfiguration zu überprüfen.",
"PostgreSQL >= 9 required." : "PostgreSQL >= 9 benötigt.",
"Please upgrade your database version." : "Bitte aktualisieren Sie Ihre Datenbankversion.",
"Your data directory is readable by other users." : "Ihr Datenverzeichnis kann von anderen Benutzern gelesen werden.",
diff --git a/lib/l10n/nn_NO.js b/lib/l10n/nn_NO.js
index 82ec040e91b..33a31973071 100644
--- a/lib/l10n/nn_NO.js
+++ b/lib/l10n/nn_NO.js
@@ -5,8 +5,13 @@ OC.L10N.register(
"Invalid image" : "Ugyldig bilete",
"today" : "i dag",
"yesterday" : "i går",
+ "_%n day ago_::_%n days ago_" : ["%n dag sidan","%n dagar sidan"],
"last month" : "førre månad",
+ "_%n month ago_::_%n months ago_" : ["%n månad sidan","%n månadar sidan"],
"last year" : "i fjor",
+ "_%n year ago_::_%n years ago_" : ["%n år sidan","%n år sidan"],
+ "_%n hour ago_::_%n hours ago_" : ["%n time sidan","%n timar sidan"],
+ "_%n minute ago_::_%n minutes ago_" : ["%n minutt sidan","%n minutt sidan"],
"seconds ago" : "sekund sidan",
"__language_name__" : "Nynorsk",
"Help" : "Hjelp",
@@ -20,6 +25,8 @@ OC.L10N.register(
"Profile picture" : "Profilbilete",
"About" : "Om",
"Full name" : "Fult namn",
+ "Unknown user" : "Ukjend brukar",
+ "Additional settings" : "Tilleggsinnstillingar",
"Open »%s«" : "Opna »%s«",
"Sunday" : "Søndag",
"Monday" : "Måndag",
diff --git a/lib/l10n/nn_NO.json b/lib/l10n/nn_NO.json
index 8eb867b622f..53b50337a17 100644
--- a/lib/l10n/nn_NO.json
+++ b/lib/l10n/nn_NO.json
@@ -3,8 +3,13 @@
"Invalid image" : "Ugyldig bilete",
"today" : "i dag",
"yesterday" : "i går",
+ "_%n day ago_::_%n days ago_" : ["%n dag sidan","%n dagar sidan"],
"last month" : "førre månad",
+ "_%n month ago_::_%n months ago_" : ["%n månad sidan","%n månadar sidan"],
"last year" : "i fjor",
+ "_%n year ago_::_%n years ago_" : ["%n år sidan","%n år sidan"],
+ "_%n hour ago_::_%n hours ago_" : ["%n time sidan","%n timar sidan"],
+ "_%n minute ago_::_%n minutes ago_" : ["%n minutt sidan","%n minutt sidan"],
"seconds ago" : "sekund sidan",
"__language_name__" : "Nynorsk",
"Help" : "Hjelp",
@@ -18,6 +23,8 @@
"Profile picture" : "Profilbilete",
"About" : "Om",
"Full name" : "Fult namn",
+ "Unknown user" : "Ukjend brukar",
+ "Additional settings" : "Tilleggsinnstillingar",
"Open »%s«" : "Opna »%s«",
"Sunday" : "Søndag",
"Monday" : "Måndag",
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index 2954e9fad36..55bee0030ec 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -235,6 +235,7 @@ OC.L10N.register(
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Jest to prawdopodobnie spowodowane przez cache lub akcelerator, taki jak Zend OPcache lub eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Moduły PHP zostały zainstalowane, ale nadal brakuje ich na liście?",
"Please ask your server administrator to restart the web server." : "Poproś administratora serwera o ponowne uruchomienie serwera WWW.",
+ "Please ask your server administrator to check the Nextcloud configuration." : "Poproś administratora serwera o sprawdzenie konfiguracji Nextcloud.",
"PostgreSQL >= 9 required." : "Wymagany PostgreSQL >= 9",
"Please upgrade your database version." : "Zaktualizuj wersję bazy danych.",
"Your data directory is readable by other users." : "Twój katalog danych jest widoczny dla innych użytkowników.",
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index 38c8991dd63..194ebc53a7b 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -233,6 +233,7 @@
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Jest to prawdopodobnie spowodowane przez cache lub akcelerator, taki jak Zend OPcache lub eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Moduły PHP zostały zainstalowane, ale nadal brakuje ich na liście?",
"Please ask your server administrator to restart the web server." : "Poproś administratora serwera o ponowne uruchomienie serwera WWW.",
+ "Please ask your server administrator to check the Nextcloud configuration." : "Poproś administratora serwera o sprawdzenie konfiguracji Nextcloud.",
"PostgreSQL >= 9 required." : "Wymagany PostgreSQL >= 9",
"Please upgrade your database version." : "Zaktualizuj wersję bazy danych.",
"Your data directory is readable by other users." : "Twój katalog danych jest widoczny dla innych użytkowników.",
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index 743cb499317..79a0e42dadc 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -235,6 +235,7 @@ OC.L10N.register(
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu sorun genellikle Zend OPcache ya da eAccelerator gibi bir ön bellek/hızlandırıcı nedeniyle ortaya çıkar.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP modülleri kurulmuş, ancak hala eksik olarak mı görünüyor?",
"Please ask your server administrator to restart the web server." : "Lütfen web sunucusunu yeniden başlatması için BT yöneticinizle görüşün.",
+ "Please ask your server administrator to check the Nextcloud configuration." : "Lütfen Nextcloud yapılandırmasını denetlemesi için BT yöneticinizle görüşün.",
"PostgreSQL >= 9 required." : "PostgreSQL >= 9 gerekli.",
"Please upgrade your database version." : "Lütfen veritabanı sürümünüzü yükseltin.",
"Your data directory is readable by other users." : "Veri klasörünüz diğer kullanıcılar tarafından okunabilir.",
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 70536c2241d..d60f6782e8e 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -233,6 +233,7 @@
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu sorun genellikle Zend OPcache ya da eAccelerator gibi bir ön bellek/hızlandırıcı nedeniyle ortaya çıkar.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP modülleri kurulmuş, ancak hala eksik olarak mı görünüyor?",
"Please ask your server administrator to restart the web server." : "Lütfen web sunucusunu yeniden başlatması için BT yöneticinizle görüşün.",
+ "Please ask your server administrator to check the Nextcloud configuration." : "Lütfen Nextcloud yapılandırmasını denetlemesi için BT yöneticinizle görüşün.",
"PostgreSQL >= 9 required." : "PostgreSQL >= 9 gerekli.",
"Please upgrade your database version." : "Lütfen veritabanı sürümünüzü yükseltin.",
"Your data directory is readable by other users." : "Veri klasörünüz diğer kullanıcılar tarafından okunabilir.",
diff --git a/lib/l10n/zh_HK.js b/lib/l10n/zh_HK.js
index 2ac61e4c553..c1b6d7536af 100644
--- a/lib/l10n/zh_HK.js
+++ b/lib/l10n/zh_HK.js
@@ -235,6 +235,7 @@ OC.L10N.register(
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "這大概是由快取或是加速器像是 Zend OPcache, eAccelerator 造成的",
"PHP modules have been installed, but they are still listed as missing?" : "你已經安裝了指定的 PHP 模組,可是還是顯示為找不到嗎?",
"Please ask your server administrator to restart the web server." : "請聯絡您的系統管理員重新啟動網頁伺服器",
+ "Please ask your server administrator to check the Nextcloud configuration." : "請聯絡您的伺服器管理員檢查 Nextcloud 配置。",
"PostgreSQL >= 9 required." : "需要 PostgreSQL 版本 >= 9",
"Please upgrade your database version." : "請升級您數據庫的版本。",
"Your data directory is readable by other users." : "您的資料目錄可以被其他用戶讀取。",
diff --git a/lib/l10n/zh_HK.json b/lib/l10n/zh_HK.json
index b33f12a2ed0..9514b5255e1 100644
--- a/lib/l10n/zh_HK.json
+++ b/lib/l10n/zh_HK.json
@@ -233,6 +233,7 @@
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "這大概是由快取或是加速器像是 Zend OPcache, eAccelerator 造成的",
"PHP modules have been installed, but they are still listed as missing?" : "你已經安裝了指定的 PHP 模組,可是還是顯示為找不到嗎?",
"Please ask your server administrator to restart the web server." : "請聯絡您的系統管理員重新啟動網頁伺服器",
+ "Please ask your server administrator to check the Nextcloud configuration." : "請聯絡您的伺服器管理員檢查 Nextcloud 配置。",
"PostgreSQL >= 9 required." : "需要 PostgreSQL 版本 >= 9",
"Please upgrade your database version." : "請升級您數據庫的版本。",
"Your data directory is readable by other users." : "您的資料目錄可以被其他用戶讀取。",
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index 03049244140..cae81d98dad 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -235,6 +235,7 @@ OC.L10N.register(
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "這大概是由快取或是加速器像是 Zend OPcache, eAccelerator 造成的",
"PHP modules have been installed, but they are still listed as missing?" : "你已經安裝了指定的 PHP 模組,可是還是顯示為找不到嗎?",
"Please ask your server administrator to restart the web server." : "請聯絡您的系統管理員重新啟動網頁伺服器",
+ "Please ask your server administrator to check the Nextcloud configuration." : "請聯絡您的伺服器管理員檢查 Nextcloud 設定。",
"PostgreSQL >= 9 required." : "需要 PostgreSQL 版本 >= 9。",
"Please upgrade your database version." : "請升級您的資料庫版本。",
"Your data directory is readable by other users." : "您的 data 目錄可被其他使用讀取。",
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index 82637d1eba1..e0d2c3ba590 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -233,6 +233,7 @@
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "這大概是由快取或是加速器像是 Zend OPcache, eAccelerator 造成的",
"PHP modules have been installed, but they are still listed as missing?" : "你已經安裝了指定的 PHP 模組,可是還是顯示為找不到嗎?",
"Please ask your server administrator to restart the web server." : "請聯絡您的系統管理員重新啟動網頁伺服器",
+ "Please ask your server administrator to check the Nextcloud configuration." : "請聯絡您的伺服器管理員檢查 Nextcloud 設定。",
"PostgreSQL >= 9 required." : "需要 PostgreSQL 版本 >= 9。",
"Please upgrade your database version." : "請升級您的資料庫版本。",
"Your data directory is readable by other users." : "您的 data 目錄可被其他使用讀取。",
diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php
index e5a6e6a5acd..f282baee146 100644
--- a/lib/private/AllConfig.php
+++ b/lib/private/AllConfig.php
@@ -33,18 +33,17 @@
namespace OC;
use OC\Cache\CappedMemoryCache;
+use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\IConfig;
use OCP\IDBConnection;
use OCP\PreConditionNotMetException;
/**
* Class to combine all the configuration options ownCloud offers
*/
-class AllConfig implements \OCP\IConfig {
- /** @var SystemConfig */
- private $systemConfig;
-
- /** @var IDBConnection */
- private $connection;
+class AllConfig implements IConfig {
+ private SystemConfig $systemConfig;
+ private ?IDBConnection $connection = null;
/**
* 3 dimensional array with the following structure:
@@ -66,11 +65,8 @@ class AllConfig implements \OCP\IConfig {
*
* @var CappedMemoryCache $userCache
*/
- private $userCache;
+ private CappedMemoryCache $userCache;
- /**
- * @param SystemConfig $systemConfig
- */
public function __construct(SystemConfig $systemConfig) {
$this->userCache = new CappedMemoryCache();
$this->systemConfig = $systemConfig;
@@ -91,7 +87,7 @@ class AllConfig implements \OCP\IConfig {
*/
private function fixDIInit() {
if ($this->connection === null) {
- $this->connection = \OC::$server->getDatabaseConnection();
+ $this->connection = \OC::$server->get(IDBConnection::class);
}
}
@@ -195,7 +191,7 @@ class AllConfig implements \OCP\IConfig {
* @return string[] the keys stored for the app
*/
public function getAppKeys($appName) {
- return \OC::$server->query(\OC\AppConfig::class)->getKeys($appName);
+ return \OC::$server->get(AppConfig::class)->getKeys($appName);
}
/**
@@ -206,7 +202,7 @@ class AllConfig implements \OCP\IConfig {
* @param string|float|int $value the value that should be stored
*/
public function setAppValue($appName, $key, $value) {
- \OC::$server->query(\OC\AppConfig::class)->setValue($appName, $key, $value);
+ \OC::$server->get(AppConfig::class)->setValue($appName, $key, $value);
}
/**
@@ -218,7 +214,7 @@ class AllConfig implements \OCP\IConfig {
* @return string the saved value
*/
public function getAppValue($appName, $key, $default = '') {
- return \OC::$server->query(\OC\AppConfig::class)->getValue($appName, $key, $default);
+ return \OC::$server->get(AppConfig::class)->getValue($appName, $key, $default);
}
/**
@@ -228,7 +224,7 @@ class AllConfig implements \OCP\IConfig {
* @param string $key the key of the value, under which it was saved
*/
public function deleteAppValue($appName, $key) {
- \OC::$server->query(\OC\AppConfig::class)->deleteKey($appName, $key);
+ \OC::$server->get(AppConfig::class)->deleteKey($appName, $key);
}
/**
@@ -237,7 +233,7 @@ class AllConfig implements \OCP\IConfig {
* @param string $appName the appName the configs are stored under
*/
public function deleteAppValues($appName) {
- \OC::$server->query(\OC\AppConfig::class)->deleteApp($appName);
+ \OC::$server->get(AppConfig::class)->deleteApp($appName);
}
@@ -278,7 +274,7 @@ class AllConfig implements \OCP\IConfig {
->where($qb->expr()->eq('userid', $qb->createNamedParameter($userId)))
->andWhere($qb->expr()->eq('appid', $qb->createNamedParameter($appName)))
->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter($key)));
- $qb->execute();
+ $qb->executeStatement();
$this->userCache[$userId][$appName][$key] = (string)$value;
return;
@@ -354,9 +350,12 @@ class AllConfig implements \OCP\IConfig {
// TODO - FIXME
$this->fixDIInit();
- $sql = 'DELETE FROM `*PREFIX*preferences` '.
- 'WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?';
- $this->connection->executeUpdate($sql, [$userId, $appName, $key]);
+ $qb = $this->connection->getQueryBuilder();
+ $qb->delete('preferences')
+ ->where($qb->expr()->eq('userid', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)))
+ ->where($qb->expr()->eq('appid', $qb->createNamedParameter($appName, IQueryBuilder::PARAM_STR)))
+ ->where($qb->expr()->eq('configkey', $qb->createNamedParameter($key, IQueryBuilder::PARAM_STR)))
+ ->executeStatement();
if (isset($this->userCache[$userId][$appName])) {
unset($this->userCache[$userId][$appName][$key]);
@@ -371,10 +370,10 @@ class AllConfig implements \OCP\IConfig {
public function deleteAllUserValues($userId) {
// TODO - FIXME
$this->fixDIInit();
-
- $sql = 'DELETE FROM `*PREFIX*preferences` '.
- 'WHERE `userid` = ?';
- $this->connection->executeUpdate($sql, [$userId]);
+ $qb = $this->connection->getQueryBuilder();
+ $qb->delete('preferences')
+ ->where($qb->expr()->eq('userid', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)))
+ ->executeStatement();
unset($this->userCache[$userId]);
}
@@ -388,9 +387,10 @@ class AllConfig implements \OCP\IConfig {
// TODO - FIXME
$this->fixDIInit();
- $sql = 'DELETE FROM `*PREFIX*preferences` '.
- 'WHERE `appid` = ?';
- $this->connection->executeUpdate($sql, [$appName]);
+ $qb = $this->connection->getQueryBuilder();
+ $qb->delete('preferences')
+ ->where($qb->expr()->eq('appid', $qb->createNamedParameter($appName, IQueryBuilder::PARAM_STR)))
+ ->executeStatement();
foreach ($this->userCache as &$userCache) {
unset($userCache[$appName]);
@@ -420,8 +420,12 @@ class AllConfig implements \OCP\IConfig {
$this->fixDIInit();
$data = [];
- $query = 'SELECT `appid`, `configkey`, `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ?';
- $result = $this->connection->executeQuery($query, [$userId]);
+
+ $qb = $this->connection->getQueryBuilder();
+ $result = $qb->select('appid', 'configkey', 'configvalue')
+ ->from('preferences')
+ ->where($qb->expr()->eq('userid', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)))
+ ->executeQuery();
while ($row = $result->fetch()) {
$appId = $row['appid'];
if (!isset($data[$appId])) {
@@ -450,22 +454,20 @@ class AllConfig implements \OCP\IConfig {
}
$chunkedUsers = array_chunk($userIds, 50, true);
- $placeholders50 = implode(',', array_fill(0, 50, '?'));
+
+ $qb = $this->connection->getQueryBuilder();
+ $qb->select('userid', 'configvalue')
+ ->from('preferences')
+ ->where($qb->expr()->eq('appid', $qb->createParameter('appName')))
+ ->andWhere($qb->expr()->eq('configkey', $qb->createParameter('configKey')))
+ ->andWhere($qb->expr()->in('userid', $qb->createParameter('userIds')));
$userValues = [];
foreach ($chunkedUsers as $chunk) {
- $queryParams = $chunk;
- // create [$app, $key, $chunkedUsers]
- array_unshift($queryParams, $key);
- array_unshift($queryParams, $appName);
-
- $placeholders = (count($chunk) === 50) ? $placeholders50 : implode(',', array_fill(0, count($chunk), '?'));
-
- $query = 'SELECT `userid`, `configvalue` ' .
- 'FROM `*PREFIX*preferences` ' .
- 'WHERE `appid` = ? AND `configkey` = ? ' .
- 'AND `userid` IN (' . $placeholders . ')';
- $result = $this->connection->executeQuery($query, $queryParams);
+ $qb->setParameter('appName', $appName, IQueryBuilder::PARAM_STR);
+ $qb->setParameter('configKey', $key, IQueryBuilder::PARAM_STR);
+ $qb->setParameter('userIds', $chunk, IQueryBuilder::PARAM_STR_ARRAY);
+ $result = $qb->executeQuery();
while ($row = $result->fetch()) {
$userValues[$row['userid']] = $row['configvalue'];
@@ -487,19 +489,16 @@ class AllConfig implements \OCP\IConfig {
// TODO - FIXME
$this->fixDIInit();
- $sql = 'SELECT `userid` FROM `*PREFIX*preferences` ' .
- 'WHERE `appid` = ? AND `configkey` = ? ';
-
- if ($this->getSystemValue('dbtype', 'sqlite') === 'oci') {
- //oracle hack: need to explicitly cast CLOB to CHAR for comparison
- $sql .= 'AND to_char(`configvalue`) = ?';
- } else {
- $sql .= 'AND `configvalue` = ?';
- }
-
- $sql .= ' ORDER BY `userid`';
-
- $result = $this->connection->executeQuery($sql, [$appName, $key, $value]);
+ $qb = $this->connection->getQueryBuilder();
+ $result = $qb->select('userid')
+ ->from('preferences')
+ ->where($qb->expr()->eq('appid', $qb->createNamedParameter($appName, IQueryBuilder::PARAM_STR)))
+ ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter($key, IQueryBuilder::PARAM_STR)))
+ ->andWhere($qb->expr()->eq(
+ $qb->expr()->castColumn('configvalue', IQueryBuilder::PARAM_STR),
+ $qb->createNamedParameter($value, IQueryBuilder::PARAM_STR))
+ )->orderBy('userid')
+ ->executeQuery();
$userIDs = [];
while ($row = $result->fetch()) {
@@ -525,20 +524,16 @@ class AllConfig implements \OCP\IConfig {
// Email address is always stored lowercase in the database
return $this->getUsersForUserValue($appName, $key, strtolower($value));
}
-
- $sql = 'SELECT `userid` FROM `*PREFIX*preferences` ' .
- 'WHERE `appid` = ? AND `configkey` = ? ';
-
- if ($this->getSystemValue('dbtype', 'sqlite') === 'oci') {
- //oracle hack: need to explicitly cast CLOB to CHAR for comparison
- $sql .= 'AND LOWER(to_char(`configvalue`)) = ?';
- } else {
- $sql .= 'AND LOWER(`configvalue`) = ?';
- }
-
- $sql .= ' ORDER BY `userid`';
-
- $result = $this->connection->executeQuery($sql, [$appName, $key, strtolower($value)]);
+ $qb = $this->connection->getQueryBuilder();
+ $result = $qb->select('userid')
+ ->from('preferences')
+ ->where($qb->expr()->eq('appid', $qb->createNamedParameter($appName, IQueryBuilder::PARAM_STR)))
+ ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter($key, IQueryBuilder::PARAM_STR)))
+ ->andWhere($qb->expr()->eq(
+ $qb->func()->lower($qb->expr()->castColumn('configvalue', IQueryBuilder::PARAM_STR)),
+ $qb->createNamedParameter(strtolower($value), IQueryBuilder::PARAM_STR))
+ )->orderBy('userid')
+ ->executeQuery();
$userIDs = [];
while ($row = $result->fetch()) {
diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php
index 21af79c4686..fe65a1879bc 100644
--- a/lib/private/BackgroundJob/JobList.php
+++ b/lib/private/BackgroundJob/JobList.php
@@ -203,7 +203,7 @@ class JobList implements IJobList {
* @param bool $onlyTimeSensitive
* @return IJob|null
*/
- public function getNext(bool $onlyTimeSensitive = true): ?IJob {
+ public function getNext(bool $onlyTimeSensitive = false): ?IJob {
$query = $this->connection->getQueryBuilder();
$query->select('*')
->from('jobs')
diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php
index 4ecfd773492..fc436383b04 100644
--- a/lib/private/DB/QueryBuilder/QueryBuilder.php
+++ b/lib/private/DB/QueryBuilder/QueryBuilder.php
@@ -1113,7 +1113,7 @@ class QueryBuilder implements IQueryBuilder {
/**
* Adds an ordering to the query results.
*
- * @param string $sort The ordering expression.
+ * @param string|ILiteral|IParameter|IQueryFunction $sort The ordering expression.
* @param string $order The ordering direction.
*
* @return $this This QueryBuilder instance.
diff --git a/lib/private/Files/Cache/SearchBuilder.php b/lib/private/Files/Cache/SearchBuilder.php
index 003d3ac15e7..c8c442bcb8c 100644
--- a/lib/private/Files/Cache/SearchBuilder.php
+++ b/lib/private/Files/Cache/SearchBuilder.php
@@ -232,6 +232,17 @@ class SearchBuilder {
if ($field === 'fileid') {
$field = 'file.fileid';
}
+
+ // Mysql really likes to pick an index for sorting if it can't fully satisfy the where
+ // filter with an index, since search queries pretty much never are fully filtered by index
+ // mysql often picks an index for sorting instead of the much more useful index for filtering.
+ //
+ // By changing the order by to an expression, mysql isn't smart enough to see that it could still
+ // use the index, so it instead picks an index for the filtering
+ if ($field === 'mtime') {
+ $field = $query->func()->add($field, $query->createNamedParameter(0));
+ }
+
$query->addOrderBy($field, $order->getDirection());
}
}
diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php
index 666ba9b065b..a5fe04c2cac 100644
--- a/lib/private/Files/Config/UserMountCache.php
+++ b/lib/private/Files/Config/UserMountCache.php
@@ -85,7 +85,7 @@ class UserMountCache implements IUserMountCache {
public function registerMounts(IUser $user, array $mounts, array $mountProviderClasses = null) {
// filter out non-proper storages coming from unit tests
$mounts = array_filter($mounts, function (IMountPoint $mount) {
- return $mount instanceof SharedMount || $mount->getStorage() && $mount->getStorage()->getCache();
+ return $mount instanceof SharedMount || ($mount->getStorage() && $mount->getStorage()->getCache());
});
/** @var ICachedMountInfo[] $newMounts */
$newMounts = array_map(function (IMountPoint $mount) use ($user) {
diff --git a/lib/private/Files/SetupManager.php b/lib/private/Files/SetupManager.php
index 98792ed8043..9fb7b030e1d 100644
--- a/lib/private/Files/SetupManager.php
+++ b/lib/private/Files/SetupManager.php
@@ -344,7 +344,9 @@ class SetupManager {
* @return IUser|null
*/
private function getUserForPath(string $path) {
- if (substr_count($path, '/') < 2) {
+ if (strpos($path, '/__groupfolders') === 0) {
+ return null;
+ } elseif (substr_count($path, '/') < 2) {
if ($user = $this->userSession->getUser()) {
return $user;
} else {
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 30dc5518be8..c209c8594f7 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -49,6 +49,8 @@ namespace OC\Files;
use Icewind\Streams\CallbackWrapper;
use OC\Files\Mount\MoveableMount;
use OC\Files\Storage\Storage;
+use OC\User\DisplayNameCache;
+use OC\User\LazyUser;
use OC\User\User;
use OCA\Files_Sharing\SharedMount;
use OCP\Constants;
@@ -102,6 +104,8 @@ class View {
/** @var \OCP\ILogger */
private $logger;
+ private DisplayNameCache $displayNameCache;
+
/**
* @param string $root
* @throws \Exception If $root contains an invalid path
@@ -118,6 +122,7 @@ class View {
$this->lockingProvider = \OC::$server->getLockingProvider();
$this->lockingEnabled = !($this->lockingProvider instanceof \OC\Lock\NoopLockingProvider);
$this->userManager = \OC::$server->getUserManager();
+ $this->displayNameCache = \OC::$server->get(DisplayNameCache::class);
$this->logger = \OC::$server->getLogger();
}
@@ -1312,15 +1317,10 @@ class View {
/**
* @param string $ownerId
- * @return \OC\User\User
+ * @return IUser
*/
- private function getUserObjectForOwner($ownerId) {
- $owner = $this->userManager->get($ownerId);
- if ($owner instanceof IUser) {
- return $owner;
- } else {
- return new User($ownerId, null, \OC::$server->getEventDispatcher());
- }
+ private function getUserObjectForOwner(string $ownerId) {
+ return new LazyUser($ownerId, $this->displayNameCache, $this->userManager);
}
/**
@@ -1517,10 +1517,8 @@ class View {
if ($pos = strpos($relativePath, '/')) {
//mountpoint inside subfolder add size to the correct folder
$entryName = substr($relativePath, 0, $pos);
- foreach ($files as &$entry) {
- if ($entry->getName() === $entryName) {
- $entry->addSubEntry($rootEntry, $mountPoint);
- }
+ if (isset($files[$entryName])) {
+ $files[$entryName]->addSubEntry($rootEntry, $mountPoint);
}
} else { //mountpoint in this folder, add an entry for it
$rootEntry['name'] = $relativePath;
diff --git a/lib/private/L10N/L10NString.php b/lib/private/L10N/L10NString.php
index de4bc38d744..472a80a5b75 100644
--- a/lib/private/L10N/L10NString.php
+++ b/lib/private/L10N/L10NString.php
@@ -74,10 +74,16 @@ class L10NString implements \JsonSerializable {
return 'Can not use pipe character in translations';
}
+ $beforeIdentity = $identity;
$identity = str_replace('%n', '%count%', $identity);
+ $parameters = [];
+ if ($beforeIdentity !== $identity) {
+ $parameters = ['%count%' => $this->count];
+ }
+
// $count as %count% as per \Symfony\Contracts\Translation\TranslatorInterface
- $text = $identityTranslator->trans($identity, ['%count%' => $this->count]);
+ $text = $identityTranslator->trans($identity, $parameters);
return vsprintf($text, $this->parameters);
}
diff --git a/lib/private/Metadata/FileEventListener.php b/lib/private/Metadata/FileEventListener.php
index fdec891c6e2..6d41ccdef30 100644
--- a/lib/private/Metadata/FileEventListener.php
+++ b/lib/private/Metadata/FileEventListener.php
@@ -31,12 +31,15 @@ use OCP\Files\File;
use OCP\Files\Node;
use OCP\Files\NotFoundException;
use OCP\Files\FileInfo;
+use Psr\Log\LoggerInterface;
class FileEventListener implements IEventListener {
private IMetadataManager $manager;
+ private LoggerInterface $logger;
- public function __construct(IMetadataManager $manager) {
+ public function __construct(IMetadataManager $manager, LoggerInterface $logger) {
$this->manager = $manager;
+ $this->logger = $logger;
}
private function shouldExtractMetadata(Node $node): bool {
@@ -52,13 +55,31 @@ class FileEventListener implements IEventListener {
}
$path = $node->getPath();
+ return $this->isCorrectPath($path);
+ }
+
+ private function isCorrectPath(string $path): bool {
// TODO make this more dynamic, we have the same issue in other places
return !str_starts_with($path, 'appdata_') && !str_starts_with($path, 'files_versions/') && !str_starts_with($path, 'files_trashbin/');
}
public function handle(Event $event): void {
if ($event instanceof NodeRemovedFromCache) {
+ if (!$this->isCorrectPath($event->getPath())) {
+ // Don't listen to paths for which we don't extract metadata
+ return;
+ }
$view = Filesystem::getView();
+ if (!$view) {
+ // Should not happen since a scan in the user folder should setup
+ // the file system.
+ $e = new \Exception(); // don't trigger, just get backtrace
+ $this->logger->error('Detecting deletion of a file with possible metadata but file system setup is not setup', [
+ 'exception' => $e,
+ 'app' => 'metadata'
+ ]);
+ return;
+ }
$info = $view->getFileInfo($event->getPath());
if ($info && $info->getType() === FileInfo::TYPE_FILE) {
$this->manager->clearMetadata($info->getId());
diff --git a/lib/private/Metadata/FileMetadata.php b/lib/private/Metadata/FileMetadata.php
index c53f5d7f619..7d1db21cf39 100644
--- a/lib/private/Metadata/FileMetadata.php
+++ b/lib/private/Metadata/FileMetadata.php
@@ -30,7 +30,7 @@ use OCP\DB\Types;
* @method void setGroupName(string $groupName)
* @method string getMetadata()
* @method void setMetadata(array $metadata)
- * @see OC\Core\Migrations\Version240000Date20220404230027
+ * @see \OC\Core\Migrations\Version240000Date20220404230027
*/
class FileMetadata extends Entity {
protected ?string $groupName = null;
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index 4b53af37679..a25e23e9fc6 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -82,7 +82,8 @@ class TemplateLayout extends \OC_Template {
$this->initialState = \OC::$server->get(IInitialStateService::class);
// Add fallback theming variables if theming is disabled
- if (!\OC::$server->getAppManager()->isEnabledForUser('theming')) {
+ if ($renderAs !== TemplateResponse::RENDER_AS_USER
+ || !\OC::$server->getAppManager()->isEnabledForUser('theming')) {
// TODO cache generated default theme if enabled for fallback if server is erroring ?
Util::addStyle('theming', 'default');
}
@@ -106,6 +107,7 @@ class TemplateLayout extends \OC_Template {
Util::addScript('core', 'unified-search', 'core');
// Set body data-theme
+ $this->assign('enabledThemes', []);
if (\OC::$server->getAppManager()->isEnabledForUser('theming') && class_exists('\OCA\Theming\Service\ThemesService')) {
/** @var \OCA\Theming\Service\ThemesService */
$themesService = \OC::$server->get(\OCA\Theming\Service\ThemesService::class);
diff --git a/lib/private/User/LazyUser.php b/lib/private/User/LazyUser.php
new file mode 100644
index 00000000000..8b98b112731
--- /dev/null
+++ b/lib/private/User/LazyUser.php
@@ -0,0 +1,149 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2022 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\User;
+
+use OCP\IUser;
+use OCP\IUserManager;
+
+class LazyUser implements IUser {
+ private ?IUser $user = null;
+ private DisplayNameCache $displayNameCache;
+ private string $uid;
+ private IUserManager $userManager;
+
+ public function __construct(string $uid, DisplayNameCache $displayNameCache, IUserManager $userManager) {
+ $this->displayNameCache = $displayNameCache;
+ $this->uid = $uid;
+ $this->userManager = $userManager;
+ }
+
+ private function getUser(): IUser {
+ if ($this->user === null) {
+ $this->user = $this->userManager->get($this->uid);
+ }
+ /** @var IUser */
+ $user = $this->user;
+ return $user;
+ }
+
+ public function getUID() {
+ return $this->uid;
+ }
+
+ public function getDisplayName() {
+ return $this->displayNameCache->getDisplayName($this->uid);
+ }
+
+ public function setDisplayName($displayName) {
+ return $this->getUser()->setDisplayName($displayName);
+ }
+
+ public function getLastLogin() {
+ return $this->getUser()->getLastLogin();
+ }
+
+ public function updateLastLoginTimestamp() {
+ return $this->getUser()->updateLastLoginTimestamp();
+ }
+
+ public function delete() {
+ return $this->getUser()->delete();
+ }
+
+ public function setPassword($password, $recoveryPassword = null) {
+ return $this->getUser()->setPassword($password, $recoveryPassword);
+ }
+
+ public function getHome() {
+ return $this->getUser()->getHome();
+ }
+
+ public function getBackendClassName() {
+ return $this->getUser()->getBackendClassName();
+ }
+
+ public function getBackend() {
+ return $this->getUser()->getBackend();
+ }
+
+ public function canChangeAvatar() {
+ return $this->getUser()->canChangeAvatar();
+ }
+
+ public function canChangePassword() {
+ return $this->getUser()->canChangePassword();
+ }
+
+ public function canChangeDisplayName() {
+ return $this->getUser()->canChangeDisplayName();
+ }
+
+ public function isEnabled() {
+ return $this->getUser()->isEnabled();
+ }
+
+ public function setEnabled(bool $enabled = true) {
+ return $this->getUser()->setEnabled($enabled);
+ }
+
+ public function getEMailAddress() {
+ return $this->getUser()->getEMailAddress();
+ }
+
+ public function getSystemEMailAddress(): ?string {
+ return $this->getUser()->getSystemEMailAddress();
+ }
+
+ public function getPrimaryEMailAddress(): ?string {
+ return $this->getUser()->getPrimaryEMailAddress();
+ }
+
+ public function getAvatarImage($size) {
+ return $this->getUser()->getAvatarImage($size);
+ }
+
+ public function getCloudId() {
+ return $this->getUser()->getCloudId();
+ }
+
+ public function setEMailAddress($mailAddress) {
+ $this->getUser()->setEMailAddress($mailAddress);
+ }
+
+ public function setSystemEMailAddress(string $mailAddress): void {
+ $this->getUser()->setSystemEMailAddress($mailAddress);
+ }
+
+ public function setPrimaryEMailAddress(string $mailAddress): void {
+ $this->getUser()->setPrimaryEMailAddress($mailAddress);
+ }
+
+ public function getQuota() {
+ return $this->getUser()->getQuota();
+ }
+
+ public function setQuota($quota) {
+ $this->getUser()->setQuota($quota);
+ }
+}
diff --git a/lib/private/legacy/OC_Util.php b/lib/private/legacy/OC_Util.php
index edee23995f1..ee7fb517d98 100644
--- a/lib/private/legacy/OC_Util.php
+++ b/lib/private/legacy/OC_Util.php
@@ -736,6 +736,15 @@ class OC_Util {
];
}
+ foreach (['secret', 'instanceid', 'passwordsalt'] as $requiredConfig) {
+ if ($config->getValue($requiredConfig, '') === '' && !\OC::$CLI && $config->getValue('installed', false)) {
+ $errors[] = [
+ 'error' => $l->t('The required %s config variable is not configured in the config.php file.', [$requiredConfig]),
+ 'hint' => $l->t('Please ask your server administrator to check the Nextcloud configuration.')
+ ];
+ }
+ }
+
$errors = array_merge($errors, self::checkDatabaseVersion());
// Cache the result of this function
diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php
index afca9e372ee..e3257e82bca 100644
--- a/lib/public/DB/QueryBuilder/IQueryBuilder.php
+++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php
@@ -834,7 +834,7 @@ interface IQueryBuilder {
/**
* Adds an ordering to the query results.
*
- * @param string $sort The ordering expression.
+ * @param string|ILiteral|IParameter|IQueryFunction $sort The ordering expression.
* @param string $order The ordering direction.
*
* @return $this This QueryBuilder instance.
diff --git a/tests/lib/AllConfigTest.php b/tests/lib/AllConfigTest.php
index b0b0b7eff8b..8570b94456f 100644
--- a/tests/lib/AllConfigTest.php
+++ b/tests/lib/AllConfigTest.php
@@ -409,11 +409,6 @@ class AllConfigTest extends \Test\TestCase {
$systemConfig = $this->getMockBuilder('\OC\SystemConfig')
->disableOriginalConstructor()
->getMock();
- $systemConfig->expects($this->once())
- ->method('getValue')
- ->with($this->equalTo('dbtype'),
- $this->equalTo('sqlite'))
- ->willReturn(\OC::$server->getConfig()->getSystemValue('dbtype', 'sqlite'));
$config = $this->getConfig($systemConfig);
// preparation - add something to the database
@@ -443,10 +438,6 @@ class AllConfigTest extends \Test\TestCase {
public function testGetUsersForUserValueCaseInsensitive() {
// mock the check for the database to run the correct SQL statements for each database type
$systemConfig = $this->createMock(SystemConfig::class);
- $systemConfig->expects($this->once())
- ->method('getValue')
- ->with($this->equalTo('dbtype'), $this->equalTo('sqlite'))
- ->willReturn(\OC::$server->getConfig()->getSystemValue('dbtype', 'sqlite'));
$config = $this->getConfig($systemConfig);
$config->setUserValue('user1', 'myApp', 'myKey', 'test123');
diff --git a/tests/lib/BackgroundJob/DummyJobList.php b/tests/lib/BackgroundJob/DummyJobList.php
index ec06203a477..0751409f62c 100644
--- a/tests/lib/BackgroundJob/DummyJobList.php
+++ b/tests/lib/BackgroundJob/DummyJobList.php
@@ -78,7 +78,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList {
* @param bool $onlyTimeSensitive
* @return IJob|null
*/
- public function getNext(bool $onlyTimeSensitive = true): ?IJob {
+ public function getNext(bool $onlyTimeSensitive = false): ?IJob {
if (count($this->jobs) > 0) {
if ($this->last < (count($this->jobs) - 1)) {
$i = $this->last + 1;
diff --git a/tests/lib/L10N/L10nTest.php b/tests/lib/L10N/L10nTest.php
index 9f6337ba804..f410c523c05 100644
--- a/tests/lib/L10N/L10nTest.php
+++ b/tests/lib/L10N/L10nTest.php
@@ -35,6 +35,13 @@ class L10nTest extends TestCase {
return new Factory($config, $request, $userSession, \OC::$SERVERROOT);
}
+ public function testSimpleTranslationWithTrailingColon(): void {
+ $transFile = \OC::$SERVERROOT.'/tests/data/l10n/de.json';
+ $l = new L10N($this->getFactory(), 'test', 'de', 'de_AT', [$transFile]);
+
+ $this->assertEquals('Files:', $l->t('Files:'));
+ }
+
public function testGermanPluralTranslations() {
$transFile = \OC::$SERVERROOT.'/tests/data/l10n/de.json';
$l = new L10N($this->getFactory(), 'test', 'de', 'de_AT', [$transFile]);
diff --git a/version.php b/version.php
index 5246cc227e7..ee6b872345a 100644
--- a/version.php
+++ b/version.php
@@ -30,7 +30,7 @@
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
// when updating major/minor version number.
-$OC_Version = [25, 0, 0, 0];
+$OC_Version = [25, 0, 0, 1];
// The human readable string
$OC_VersionString = '25.0.0 dev';