aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.drone.yml42
-rw-r--r--.github/CODEOWNERS2
-rw-r--r--apps/dav/l10n/el.js1
-rw-r--r--apps/dav/l10n/el.json1
-rw-r--r--apps/dav/lib/Files/FileSearchBackend.php4
-rw-r--r--apps/dav/lib/RootCollection.php1
-rw-r--r--apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php4
-rw-r--r--apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php3
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php5
-rw-r--r--apps/dav/tests/unit/CardDAV/Activity/BackendTest.php4
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php9
-rw-r--r--apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php4
-rw-r--r--apps/federatedfilesharing/l10n/zh_HK.js4
-rw-r--r--apps/federatedfilesharing/l10n/zh_HK.json4
-rw-r--r--apps/federatedfilesharing/tests/Settings/AdminTest.php2
-rw-r--r--apps/files/l10n/hu.js2
-rw-r--r--apps/files/l10n/hu.json2
-rw-r--r--apps/files/l10n/ja.js1
-rw-r--r--apps/files/l10n/ja.json1
-rw-r--r--apps/files/l10n/lv.js3
-rw-r--r--apps/files/l10n/lv.json3
-rw-r--r--apps/files_external/lib/Lib/Storage/FTP.php4
-rw-r--r--apps/files_sharing/l10n/lv.js7
-rw-r--r--apps/files_sharing/l10n/lv.json7
-rw-r--r--apps/files_sharing/tests/ShareTest.php8
-rw-r--r--apps/files_trashbin/l10n/ja.js1
-rw-r--r--apps/files_trashbin/l10n/ja.json1
-rw-r--r--apps/provisioning_api/tests/Controller/GroupsControllerTest.php3
-rw-r--r--apps/settings/appinfo/info.xml1
-rw-r--r--apps/settings/composer/composer/autoload_classmap.php1
-rw-r--r--apps/settings/composer/composer/autoload_static.php1
-rw-r--r--apps/settings/l10n/af.js1
-rw-r--r--apps/settings/l10n/af.json1
-rw-r--r--apps/settings/l10n/ar.js1
-rw-r--r--apps/settings/l10n/ar.json1
-rw-r--r--apps/settings/l10n/ast.js1
-rw-r--r--apps/settings/l10n/ast.json1
-rw-r--r--apps/settings/l10n/bg.js1
-rw-r--r--apps/settings/l10n/bg.json1
-rw-r--r--apps/settings/l10n/br.js1
-rw-r--r--apps/settings/l10n/br.json1
-rw-r--r--apps/settings/l10n/ca.js1
-rw-r--r--apps/settings/l10n/ca.json1
-rw-r--r--apps/settings/l10n/cs.js1
-rw-r--r--apps/settings/l10n/cs.json1
-rw-r--r--apps/settings/l10n/da.js1
-rw-r--r--apps/settings/l10n/da.json1
-rw-r--r--apps/settings/l10n/de.js1
-rw-r--r--apps/settings/l10n/de.json1
-rw-r--r--apps/settings/l10n/de_DE.js1
-rw-r--r--apps/settings/l10n/de_DE.json1
-rw-r--r--apps/settings/l10n/el.js1
-rw-r--r--apps/settings/l10n/el.json1
-rw-r--r--apps/settings/l10n/en_GB.js1
-rw-r--r--apps/settings/l10n/en_GB.json1
-rw-r--r--apps/settings/l10n/eo.js1
-rw-r--r--apps/settings/l10n/eo.json1
-rw-r--r--apps/settings/l10n/es.js1
-rw-r--r--apps/settings/l10n/es.json1
-rw-r--r--apps/settings/l10n/es_419.js1
-rw-r--r--apps/settings/l10n/es_419.json1
-rw-r--r--apps/settings/l10n/es_AR.js1
-rw-r--r--apps/settings/l10n/es_AR.json1
-rw-r--r--apps/settings/l10n/es_CL.js1
-rw-r--r--apps/settings/l10n/es_CL.json1
-rw-r--r--apps/settings/l10n/es_CO.js1
-rw-r--r--apps/settings/l10n/es_CO.json1
-rw-r--r--apps/settings/l10n/es_CR.js1
-rw-r--r--apps/settings/l10n/es_CR.json1
-rw-r--r--apps/settings/l10n/es_DO.js1
-rw-r--r--apps/settings/l10n/es_DO.json1
-rw-r--r--apps/settings/l10n/es_EC.js1
-rw-r--r--apps/settings/l10n/es_EC.json1
-rw-r--r--apps/settings/l10n/es_GT.js1
-rw-r--r--apps/settings/l10n/es_GT.json1
-rw-r--r--apps/settings/l10n/es_HN.js1
-rw-r--r--apps/settings/l10n/es_HN.json1
-rw-r--r--apps/settings/l10n/es_MX.js1
-rw-r--r--apps/settings/l10n/es_MX.json1
-rw-r--r--apps/settings/l10n/es_NI.js1
-rw-r--r--apps/settings/l10n/es_NI.json1
-rw-r--r--apps/settings/l10n/es_PA.js1
-rw-r--r--apps/settings/l10n/es_PA.json1
-rw-r--r--apps/settings/l10n/es_PE.js1
-rw-r--r--apps/settings/l10n/es_PE.json1
-rw-r--r--apps/settings/l10n/es_PR.js1
-rw-r--r--apps/settings/l10n/es_PR.json1
-rw-r--r--apps/settings/l10n/es_PY.js1
-rw-r--r--apps/settings/l10n/es_PY.json1
-rw-r--r--apps/settings/l10n/es_SV.js1
-rw-r--r--apps/settings/l10n/es_SV.json1
-rw-r--r--apps/settings/l10n/es_UY.js1
-rw-r--r--apps/settings/l10n/es_UY.json1
-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.js1
-rw-r--r--apps/settings/l10n/eu.json1
-rw-r--r--apps/settings/l10n/fa.js1
-rw-r--r--apps/settings/l10n/fa.json1
-rw-r--r--apps/settings/l10n/fi.js1
-rw-r--r--apps/settings/l10n/fi.json1
-rw-r--r--apps/settings/l10n/fr.js1
-rw-r--r--apps/settings/l10n/fr.json1
-rw-r--r--apps/settings/l10n/gl.js1
-rw-r--r--apps/settings/l10n/gl.json1
-rw-r--r--apps/settings/l10n/he.js1
-rw-r--r--apps/settings/l10n/he.json1
-rw-r--r--apps/settings/l10n/hr.js1
-rw-r--r--apps/settings/l10n/hr.json1
-rw-r--r--apps/settings/l10n/hu.js1
-rw-r--r--apps/settings/l10n/hu.json1
-rw-r--r--apps/settings/l10n/ia.js1
-rw-r--r--apps/settings/l10n/ia.json1
-rw-r--r--apps/settings/l10n/id.js1
-rw-r--r--apps/settings/l10n/id.json1
-rw-r--r--apps/settings/l10n/is.js1
-rw-r--r--apps/settings/l10n/is.json1
-rw-r--r--apps/settings/l10n/it.js1
-rw-r--r--apps/settings/l10n/it.json1
-rw-r--r--apps/settings/l10n/ja.js29
-rw-r--r--apps/settings/l10n/ja.json29
-rw-r--r--apps/settings/l10n/ka_GE.js1
-rw-r--r--apps/settings/l10n/ka_GE.json1
-rw-r--r--apps/settings/l10n/ko.js1
-rw-r--r--apps/settings/l10n/ko.json1
-rw-r--r--apps/settings/l10n/lt_LT.js1
-rw-r--r--apps/settings/l10n/lt_LT.json1
-rw-r--r--apps/settings/l10n/lv.js5
-rw-r--r--apps/settings/l10n/lv.json5
-rw-r--r--apps/settings/l10n/mk.js1
-rw-r--r--apps/settings/l10n/mk.json1
-rw-r--r--apps/settings/l10n/nb.js1
-rw-r--r--apps/settings/l10n/nb.json1
-rw-r--r--apps/settings/l10n/nl.js1
-rw-r--r--apps/settings/l10n/nl.json1
-rw-r--r--apps/settings/l10n/nn_NO.js1
-rw-r--r--apps/settings/l10n/nn_NO.json1
-rw-r--r--apps/settings/l10n/oc.js1
-rw-r--r--apps/settings/l10n/oc.json1
-rw-r--r--apps/settings/l10n/pl.js1
-rw-r--r--apps/settings/l10n/pl.json1
-rw-r--r--apps/settings/l10n/pt_BR.js1
-rw-r--r--apps/settings/l10n/pt_BR.json1
-rw-r--r--apps/settings/l10n/pt_PT.js1
-rw-r--r--apps/settings/l10n/pt_PT.json1
-rw-r--r--apps/settings/l10n/ro.js1
-rw-r--r--apps/settings/l10n/ro.json1
-rw-r--r--apps/settings/l10n/ru.js1
-rw-r--r--apps/settings/l10n/ru.json1
-rw-r--r--apps/settings/l10n/sc.js1
-rw-r--r--apps/settings/l10n/sc.json1
-rw-r--r--apps/settings/l10n/sk.js1
-rw-r--r--apps/settings/l10n/sk.json1
-rw-r--r--apps/settings/l10n/sl.js1
-rw-r--r--apps/settings/l10n/sl.json1
-rw-r--r--apps/settings/l10n/sq.js1
-rw-r--r--apps/settings/l10n/sq.json1
-rw-r--r--apps/settings/l10n/sr.js1
-rw-r--r--apps/settings/l10n/sr.json1
-rw-r--r--apps/settings/l10n/sv.js1
-rw-r--r--apps/settings/l10n/sv.json1
-rw-r--r--apps/settings/l10n/th.js1
-rw-r--r--apps/settings/l10n/th.json1
-rw-r--r--apps/settings/l10n/tr.js1
-rw-r--r--apps/settings/l10n/tr.json1
-rw-r--r--apps/settings/l10n/uk.js1
-rw-r--r--apps/settings/l10n/uk.json1
-rw-r--r--apps/settings/l10n/vi.js1
-rw-r--r--apps/settings/l10n/vi.json1
-rw-r--r--apps/settings/l10n/zh_CN.js1
-rw-r--r--apps/settings/l10n/zh_CN.json1
-rw-r--r--apps/settings/l10n/zh_HK.js1
-rw-r--r--apps/settings/l10n/zh_HK.json1
-rw-r--r--apps/settings/l10n/zh_TW.js1
-rw-r--r--apps/settings/l10n/zh_TW.json1
-rw-r--r--apps/settings/lib/Controller/CheckSetupController.php2
-rw-r--r--apps/settings/lib/Sections/Personal/Calendar.php55
-rw-r--r--apps/settings/tests/Mailer/NewUserMailHelperTest.php14
-rw-r--r--apps/sharebymail/lib/ShareByMailProvider.php5
-rw-r--r--apps/theming/l10n/de.js22
-rw-r--r--apps/theming/l10n/de.json22
-rw-r--r--apps/theming/l10n/el.js15
-rw-r--r--apps/theming/l10n/el.json15
-rw-r--r--apps/theming/l10n/hu.js14
-rw-r--r--apps/theming/l10n/hu.json14
-rw-r--r--apps/theming/l10n/ja.js31
-rw-r--r--apps/theming/l10n/ja.json31
-rw-r--r--apps/theming/tests/Settings/PersonalTest.php3
-rw-r--r--apps/theming/tests/Themes/DyslexiaFontTest.php3
-rw-r--r--apps/user_ldap/l10n/ja.js4
-rw-r--r--apps/user_ldap/l10n/ja.json4
-rw-r--r--apps/user_ldap/l10n/lv.js2
-rw-r--r--apps/user_ldap/l10n/lv.json2
-rw-r--r--apps/user_ldap/lib/AppInfo/Application.php27
-rw-r--r--apps/workflowengine/lib/Check/RequestTime.php4
-rw-r--r--build/integration/features/bootstrap/SharingContext.php2
-rw-r--r--build/integration/sharing_features/sharing-v1-part3.feature14
-rw-r--r--config/config.sample.php5
-rw-r--r--core/Command/App/ListApps.php2
-rw-r--r--core/js/setupchecks.js6
-rw-r--r--core/l10n/bg.js2
-rw-r--r--core/l10n/bg.json2
-rw-r--r--core/l10n/ca.js2
-rw-r--r--core/l10n/ca.json2
-rw-r--r--core/l10n/cs.js4
-rw-r--r--core/l10n/cs.json4
-rw-r--r--core/l10n/da.js2
-rw-r--r--core/l10n/da.json2
-rw-r--r--core/l10n/de.js2
-rw-r--r--core/l10n/de.json2
-rw-r--r--core/l10n/de_DE.js2
-rw-r--r--core/l10n/de_DE.json2
-rw-r--r--core/l10n/el.js2
-rw-r--r--core/l10n/el.json2
-rw-r--r--core/l10n/es.js2
-rw-r--r--core/l10n/es.json2
-rw-r--r--core/l10n/eu.js2
-rw-r--r--core/l10n/eu.json2
-rw-r--r--core/l10n/fi.js2
-rw-r--r--core/l10n/fi.json2
-rw-r--r--core/l10n/fr.js2
-rw-r--r--core/l10n/fr.json2
-rw-r--r--core/l10n/hu.js10
-rw-r--r--core/l10n/hu.json10
-rw-r--r--core/l10n/id.js2
-rw-r--r--core/l10n/id.json2
-rw-r--r--core/l10n/is.js2
-rw-r--r--core/l10n/is.json2
-rw-r--r--core/l10n/it.js2
-rw-r--r--core/l10n/it.json2
-rw-r--r--core/l10n/ja.js2
-rw-r--r--core/l10n/ja.json2
-rw-r--r--core/l10n/ko.js2
-rw-r--r--core/l10n/ko.json2
-rw-r--r--core/l10n/lv.js3
-rw-r--r--core/l10n/lv.json3
-rw-r--r--core/l10n/mk.js2
-rw-r--r--core/l10n/mk.json2
-rw-r--r--core/l10n/nb.js2
-rw-r--r--core/l10n/nb.json2
-rw-r--r--core/l10n/nl.js2
-rw-r--r--core/l10n/nl.json2
-rw-r--r--core/l10n/pl.js3
-rw-r--r--core/l10n/pl.json3
-rw-r--r--core/l10n/pt_BR.js2
-rw-r--r--core/l10n/pt_BR.json2
-rw-r--r--core/l10n/ru.js2
-rw-r--r--core/l10n/ru.json2
-rw-r--r--core/l10n/sk.js2
-rw-r--r--core/l10n/sk.json2
-rw-r--r--core/l10n/sv.js2
-rw-r--r--core/l10n/sv.json2
-rw-r--r--core/l10n/tr.js3
-rw-r--r--core/l10n/tr.json3
-rw-r--r--core/l10n/uk.js2
-rw-r--r--core/l10n/uk.json2
-rw-r--r--core/l10n/zh_CN.js2
-rw-r--r--core/l10n/zh_CN.json2
-rw-r--r--core/l10n/zh_HK.js3
-rw-r--r--core/l10n/zh_HK.json3
-rw-r--r--core/l10n/zh_TW.js2
-rw-r--r--core/l10n/zh_TW.json2
-rw-r--r--core/src/components/login/LoginForm.vue3
-rw-r--r--core/src/services/UnifiedSearchService.js2
-rw-r--r--dist/core-login.js4
-rw-r--r--dist/core-login.js.map2
-rw-r--r--dist/core-unified-search.js4
-rw-r--r--dist/core-unified-search.js.map2
-rw-r--r--lib/l10n/bg.js4
-rw-r--r--lib/l10n/bg.json4
-rw-r--r--lib/l10n/cs.js5
-rw-r--r--lib/l10n/cs.json5
-rw-r--r--lib/l10n/da.js4
-rw-r--r--lib/l10n/da.json4
-rw-r--r--lib/l10n/de.js4
-rw-r--r--lib/l10n/de.json4
-rw-r--r--lib/l10n/de_DE.js5
-rw-r--r--lib/l10n/de_DE.json5
-rw-r--r--lib/l10n/es.js4
-rw-r--r--lib/l10n/es.json4
-rw-r--r--lib/l10n/fr.js4
-rw-r--r--lib/l10n/fr.json4
-rw-r--r--lib/l10n/hu.js12
-rw-r--r--lib/l10n/hu.json12
-rw-r--r--lib/l10n/ja.js4
-rw-r--r--lib/l10n/ja.json4
-rw-r--r--lib/l10n/lv.js5
-rw-r--r--lib/l10n/lv.json5
-rw-r--r--lib/l10n/pl.js4
-rw-r--r--lib/l10n/pl.json4
-rw-r--r--lib/l10n/pt_BR.js4
-rw-r--r--lib/l10n/pt_BR.json4
-rw-r--r--lib/l10n/sk.js4
-rw-r--r--lib/l10n/sk.json4
-rw-r--r--lib/l10n/tr.js5
-rw-r--r--lib/l10n/tr.json5
-rw-r--r--lib/l10n/zh_CN.js4
-rw-r--r--lib/l10n/zh_CN.json4
-rw-r--r--lib/l10n/zh_HK.js5
-rw-r--r--lib/l10n/zh_HK.json5
-rw-r--r--lib/l10n/zh_TW.js5
-rw-r--r--lib/l10n/zh_TW.json5
-rw-r--r--lib/private/AppConfig.php4
-rw-r--r--lib/private/Notification/Notification.php4
-rw-r--r--lib/private/Setup/PostgreSQL.php11
-rw-r--r--lib/private/Support/Subscription/Assertion.php2
-rw-r--r--lib/private/SystemConfig.php4
-rw-r--r--lib/private/TemplateLayout.php2
-rw-r--r--lib/private/User/Session.php4
-rw-r--r--resources/codesigning/root.crl69
-rwxr-xr-xtests/drone-run-integration-tests.sh2
-rw-r--r--tests/lib/DB/MigrationsTest.php4
-rw-r--r--tests/lib/Encryption/Keys/StorageTest.php9
-rw-r--r--tests/lib/Security/VerificationToken/VerificationTokenTest.php11
-rw-r--r--tests/lib/Settings/ManagerTest.php20
-rw-r--r--tests/lib/Share20/ShareTest.php6
316 files changed, 884 insertions, 263 deletions
diff --git a/.drone.yml b/.drone.yml
index beef4344a57..31d0e31463a 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -455,7 +455,7 @@ services:
image: ghcr.io/nextcloud/continuous-integration-postgres-10:postgres-10
environment:
POSTGRES_USER: oc_autotest
- POSTGRES_DB: oc_autotest_dummy
+ POSTGRES_DB: oc_autotest
POSTGRES_PASSWORD: owncloud
tmpfs:
- /var/lib/postgresql/data
@@ -491,7 +491,7 @@ services:
image: ghcr.io/nextcloud/continuous-integration-postgres-11:postgres-11
environment:
POSTGRES_USER: oc_autotest
- POSTGRES_DB: oc_autotest_dummy
+ POSTGRES_DB: oc_autotest
POSTGRES_PASSWORD: owncloud
tmpfs:
- /var/lib/postgresql/data
@@ -527,7 +527,43 @@ services:
image: ghcr.io/nextcloud/continuous-integration-postgres-13:postgres-13
environment:
POSTGRES_USER: oc_autotest
- POSTGRES_DB: oc_autotest_dummy
+ POSTGRES_DB: oc_autotest
+ POSTGRES_PASSWORD: owncloud
+ tmpfs:
+ - /var/lib/postgresql/data
+
+trigger:
+ branch:
+ - master
+ - stable*
+ event:
+ - pull_request
+ - push
+
+---
+kind: pipeline
+name: postgres15-php8.0
+
+steps:
+- name: submodules
+ image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
+ commands:
+ - git submodule update --init
+- name: postgres-php8.0
+ image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
+ commands:
+ - bash tests/drone-run-php-tests.sh || exit 0
+ - sleep 10 # gives the database enough time to initialize
+ - POSTGRES=15 NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
+
+services:
+- name: cache
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest
+- name: postgres-15
+ image: ghcr.io/nextcloud/continuous-integration-postgres-15:latest
+ environment:
+ POSTGRES_USER: oc_autotest
+ POSTGRES_DB: oc_autotest
POSTGRES_PASSWORD: owncloud
tmpfs:
- /var/lib/postgresql/data
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 7b32b340f53..5c24b8e1d15 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -16,4 +16,4 @@
/lib/public/Profiler @CarlSchwan
# Security team
-resources/config/ca-bundle.crt @ChristophWurst @eneiluj @miaulalala @nickvergessen
+resources/config/ca-bundle.crt @ChristophWurst @julien-nc @miaulalala @nickvergessen
diff --git a/apps/dav/l10n/el.js b/apps/dav/l10n/el.js
index 45ce51a502f..24c35f48709 100644
--- a/apps/dav/l10n/el.js
+++ b/apps/dav/l10n/el.js
@@ -31,6 +31,7 @@ OC.L10N.register(
"{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}",
"You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}",
"Busy" : "Απασχολημένος",
+ "Calendar, contacts and tasks" : "Ημερολόγιο, επαφές και εργασίες",
"A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ",
"A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου",
"Contact birthdays" : "Γενέθλια επαφών",
diff --git a/apps/dav/l10n/el.json b/apps/dav/l10n/el.json
index 019d0e757c9..cfdc151b53c 100644
--- a/apps/dav/l10n/el.json
+++ b/apps/dav/l10n/el.json
@@ -29,6 +29,7 @@
"{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}",
"You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}",
"Busy" : "Απασχολημένος",
+ "Calendar, contacts and tasks" : "Ημερολόγιο, επαφές και εργασίες",
"A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ",
"A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου",
"Contact birthdays" : "Γενέθλια επαφών",
diff --git a/apps/dav/lib/Files/FileSearchBackend.php b/apps/dav/lib/Files/FileSearchBackend.php
index c819fa6afc6..524f90e6623 100644
--- a/apps/dav/lib/Files/FileSearchBackend.php
+++ b/apps/dav/lib/Files/FileSearchBackend.php
@@ -55,7 +55,7 @@ use SearchDAV\Query\Order;
use SearchDAV\Query\Query;
class FileSearchBackend implements ISearchBackend {
- const OPERATOR_LIMIT = 100;
+ public const OPERATOR_LIMIT = 100;
/** @var CachingTree */
private $tree;
@@ -432,7 +432,7 @@ class FileSearchBackend implements ISearchBackend {
if (is_numeric($value)) {
return max(0, 0 + $value);
}
- $date = \DateTime::createFromFormat(\DateTimeInterface::ATOM, $value);
+ $date = \DateTime::createFromFormat(\DateTimeInterface::ATOM, (string)$value);
return ($date instanceof \DateTime && $date->getTimestamp() !== false) ? $date->getTimestamp() : 0;
default:
return $value;
diff --git a/apps/dav/lib/RootCollection.php b/apps/dav/lib/RootCollection.php
index 29ab65d46a9..bacb550b415 100644
--- a/apps/dav/lib/RootCollection.php
+++ b/apps/dav/lib/RootCollection.php
@@ -118,7 +118,6 @@ class RootCollection extends SimpleCollection {
$roomCalendarRoot->disableListing = $disableListing;
$publicCalendarRoot = new PublicCalendarRoot($caldavBackend, $l10n, $config, $logger);
- $publicCalendarRoot->disableListing = $disableListing;
$systemTagCollection = new SystemTag\SystemTagsByIdCollection(
\OC::$server->getSystemTagManager(),
diff --git a/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php b/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php
index fd27b4d2776..d3b7ca92581 100644
--- a/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php
+++ b/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php
@@ -32,12 +32,10 @@ namespace OCA\DAV\Tests\unit\BackgroundJob;
use OCA\DAV\BackgroundJob\CleanupInvitationTokenJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\DB\QueryBuilder\IQueryFunction;
use OCP\IDBConnection;
use Test\TestCase;
class CleanupInvitationTokenJobTest extends TestCase {
-
/** @var IDBConnection | \PHPUnit\Framework\MockObject\MockObject */
private $dbConnection;
@@ -78,7 +76,7 @@ class CleanupInvitationTokenJobTest extends TestCase {
[1337, \PDO::PARAM_STR, null, 'namedParameter1337']
]);
- $function = $this->createMock(IQueryFunction::class);
+ $function = 'function1337';
$expr->expects($this->once())
->method('lt')
->with('expiration', 'namedParameter1337')
diff --git a/apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php b/apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php
index 991caafd597..1de56b37d80 100644
--- a/apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php
+++ b/apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php
@@ -34,13 +34,14 @@ use OCA\DAV\BackgroundJob\PruneOutdatedSyncTokensJob;
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CardDAV\CardDavBackend;
use OCP\AppFramework\Utility\ITimeFactory;
-use OCP\DB\Exception;
use OCP\IConfig;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
class PruneOutdatedSyncTokensJobTest extends TestCase {
+ /** @var ITimeFactory | MockObject */
+ private $timeFactory;
/** @var CalDavBackend | MockObject */
private $calDavBackend;
diff --git a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
index 79d9376650b..e2b5390f875 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
@@ -40,13 +40,11 @@ use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserManager;
-use OCP\IUserSession;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
class ReminderServiceTest extends TestCase {
-
/** @var Backend|MockObject */
private $backend;
@@ -74,6 +72,9 @@ class ReminderServiceTest extends TestCase {
/** @var MockObject|LoggerInterface */
private $logger;
+ /** @var MockObject|Principal */
+ private $principalConnector;
+
public const CALENDAR_DATA = <<<EOD
BEGIN:VCALENDAR
PRODID:-//Nextcloud calendar v1.6.4
diff --git a/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php b/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php
index 4f3459233aa..bd5660747ff 100644
--- a/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php
+++ b/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php
@@ -40,7 +40,6 @@ use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class BackendTest extends TestCase {
-
/** @var IManager|MockObject */
protected $activityManager;
@@ -53,6 +52,9 @@ class BackendTest extends TestCase {
/** @var IAppManager|MockObject */
protected $appManager;
+ /** @var IUserManager|MockObject */
+ protected $userManager;
+
protected function setUp(): void {
parent::setUp();
$this->activityManager = $this->createMock(IManager::class);
diff --git a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
index 7cd31e3b8dd..2614f541613 100644
--- a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
@@ -54,7 +54,6 @@ use Sabre\DAV\PropPatch;
use Test\TestCase;
class PrincipalTest extends TestCase {
-
/** @var IUserManager | MockObject */
private $userManager;
@@ -658,12 +657,12 @@ class PrincipalTest extends TestCase {
$user2->method('getSystemEMailAddress')->willReturn('user2@foo.bar');
$user3 = $this->createMock(IUser::class);
$user3->method('getUID')->willReturn('user3');
- $user2->method('getDisplayName')->willReturn('User 22');
- $user2->method('getSystemEMailAddress')->willReturn('user2@foo.bar123');
+ $user3->method('getDisplayName')->willReturn('User 22');
+ $user3->method('getSystemEMailAddress')->willReturn('user2@foo.bar123');
$user4 = $this->createMock(IUser::class);
$user4->method('getUID')->willReturn('user4');
- $user2->method('getDisplayName')->willReturn('User 222');
- $user2->method('getSystemEMailAddress')->willReturn('user2@foo.bar456');
+ $user4->method('getDisplayName')->willReturn('User 222');
+ $user4->method('getSystemEMailAddress')->willReturn('user2@foo.bar456');
$this->userManager->expects($this->at(0))
->method('searchDisplayName')
diff --git a/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php b/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
index 576fde2d4af..efbad5e3008 100644
--- a/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
+++ b/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
@@ -37,14 +37,12 @@ use OCP\AppFramework\Utility\ITimeFactory;
use OCP\DB\IResult;
use OCP\DB\QueryBuilder\IExpressionBuilder;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\DB\QueryBuilder\IQueryFunction;
use OCP\IDBConnection;
use OCP\IRequest;
use Sabre\VObject\ITip\Message;
use Test\TestCase;
class InvitationResponseControllerTest extends TestCase {
-
/** @var InvitationResponseController */
private $controller;
@@ -478,7 +476,7 @@ EOF;
->with(\PDO::FETCH_ASSOC)
->willReturn($return);
- $function = $this->createMock(IQueryFunction::class);
+ $function = 'functionToken';
$expr->expects($this->once())
->method('eq')
->with('token', 'namedParameterToken')
diff --git a/apps/federatedfilesharing/l10n/zh_HK.js b/apps/federatedfilesharing/l10n/zh_HK.js
index 57653766c4e..744b62b8e49 100644
--- a/apps/federatedfilesharing/l10n/zh_HK.js
+++ b/apps/federatedfilesharing/l10n/zh_HK.js
@@ -58,7 +58,7 @@ OC.L10N.register(
"Copied!" : "已複製!",
"Not supported!" : "不支援!",
"Press ⌘-C to copy." : "請按 ⌘-C 來複製",
- "Press Ctrl-C to copy." : "請按 Ctrl-C 來複製",
- "Open documentation" : "開啟說明文件"
+ "Press Ctrl-C to copy." : "請按【Ctrl-C】以複製。",
+ "Open documentation" : "打開說明書"
},
"nplurals=1; plural=0;");
diff --git a/apps/federatedfilesharing/l10n/zh_HK.json b/apps/federatedfilesharing/l10n/zh_HK.json
index 13045971f1c..76fe0ea627e 100644
--- a/apps/federatedfilesharing/l10n/zh_HK.json
+++ b/apps/federatedfilesharing/l10n/zh_HK.json
@@ -56,7 +56,7 @@
"Copied!" : "已複製!",
"Not supported!" : "不支援!",
"Press ⌘-C to copy." : "請按 ⌘-C 來複製",
- "Press Ctrl-C to copy." : "請按 Ctrl-C 來複製",
- "Open documentation" : "開啟說明文件"
+ "Press Ctrl-C to copy." : "請按【Ctrl-C】以複製。",
+ "Open documentation" : "打開說明書"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/tests/Settings/AdminTest.php b/apps/federatedfilesharing/tests/Settings/AdminTest.php
index 04761e35410..a9148987d38 100644
--- a/apps/federatedfilesharing/tests/Settings/AdminTest.php
+++ b/apps/federatedfilesharing/tests/Settings/AdminTest.php
@@ -41,6 +41,8 @@ class AdminTest extends TestCase {
private $federatedShareProvider;
/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
private $gsConfig;
+ /** @var IInitialState|\PHPUnit\Framework\MockObject\MockObject */
+ private $initialState;
protected function setUp(): void {
parent::setUp();
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index c789732c6dd..e5df8f243a7 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -36,6 +36,7 @@ OC.L10N.register(
"Move" : "Áthelyezés",
"Copy" : "Másolás",
"Choose target folder" : "Válasszon célmappát",
+ "Edit locally" : "Szerkesztés helyileg",
"Open" : "Megnyitás",
"Delete file" : "Fájl törlése",
"Delete folder" : "Mappa törlése",
@@ -59,6 +60,7 @@ OC.L10N.register(
"Could not copy \"{file}\"" : "A(z) „{file}” másolása sikertelen",
"Copied {origin} inside {destination}" : "A(z) {origin} átmásolva ide: {destination}",
"Copied {origin} and {nbfiles} other files inside {destination}" : "A(z) {origin} és {nbfiles} egyéb fájl átmásolva ide: {destination}",
+ "Failed to redirect to client" : "Nem sikerült az átirányítás a klienshez",
"{newName} already exists" : "A(z) {newName} már létezik",
"Could not rename \"{fileName}\", it does not exist any more" : "A(z) „{fileName}” átnevetése sikertelen, mert már nem létezik",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "A(z) „{targetName}” név már használatban van a(z) „{dir}” mappában. Válasszon másik nevet.",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index d5ee44d901e..1e03c773ff4 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -34,6 +34,7 @@
"Move" : "Áthelyezés",
"Copy" : "Másolás",
"Choose target folder" : "Válasszon célmappát",
+ "Edit locally" : "Szerkesztés helyileg",
"Open" : "Megnyitás",
"Delete file" : "Fájl törlése",
"Delete folder" : "Mappa törlése",
@@ -57,6 +58,7 @@
"Could not copy \"{file}\"" : "A(z) „{file}” másolása sikertelen",
"Copied {origin} inside {destination}" : "A(z) {origin} átmásolva ide: {destination}",
"Copied {origin} and {nbfiles} other files inside {destination}" : "A(z) {origin} és {nbfiles} egyéb fájl átmásolva ide: {destination}",
+ "Failed to redirect to client" : "Nem sikerült az átirányítás a klienshez",
"{newName} already exists" : "A(z) {newName} már létezik",
"Could not rename \"{fileName}\", it does not exist any more" : "A(z) „{fileName}” átnevetése sikertelen, mert már nem létezik",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "A(z) „{targetName}” név már használatban van a(z) „{dir}” mappában. Válasszon másik nevet.",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index b9319651cde..603fc4eb2ae 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -36,6 +36,7 @@ OC.L10N.register(
"Move" : "移動",
"Copy" : "コピー",
"Choose target folder" : "ターゲットフォルダーを選択",
+ "Edit locally" : "ローカルで編集",
"Open" : "開く",
"Delete file" : "ファイルを削除",
"Delete folder" : "フォルダーを削除",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index 28a44eec498..8fed062e8cb 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -34,6 +34,7 @@
"Move" : "移動",
"Copy" : "コピー",
"Choose target folder" : "ターゲットフォルダーを選択",
+ "Edit locally" : "ローカルで編集",
"Open" : "開く",
"Delete file" : "ファイルを削除",
"Delete folder" : "フォルダーを削除",
diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js
index ca2d2815241..882c1735159 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -9,6 +9,8 @@ OC.L10N.register(
"Download" : "Lejupielādēt",
"Delete" : "Dzēst",
"Tags" : "Birkas",
+ "Show list view" : "Rādīt saraksta skatu",
+ "Show grid view" : "Rādīt režģa skatu",
"Home" : "Mājas",
"Close" : "Aizvērt",
"Favorites" : "Iecienītie",
@@ -113,6 +115,7 @@ OC.L10N.register(
"Create" : "Izveidot",
"%s used" : "%s izmantoti",
"%1$s of %2$s used" : "%1$s no %2$s lietoti",
+ "Files settings" : "Failu iestatījumi",
"Show hidden files" : "Rādīt slēptās datnes",
"Crop image previews" : "Apgriezt attēlu priekšskatījumus",
"WebDAV" : "WebDAV",
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index 9d50d79cb23..72293c0c29b 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -7,6 +7,8 @@
"Download" : "Lejupielādēt",
"Delete" : "Dzēst",
"Tags" : "Birkas",
+ "Show list view" : "Rādīt saraksta skatu",
+ "Show grid view" : "Rādīt režģa skatu",
"Home" : "Mājas",
"Close" : "Aizvērt",
"Favorites" : "Iecienītie",
@@ -111,6 +113,7 @@
"Create" : "Izveidot",
"%s used" : "%s izmantoti",
"%1$s of %2$s used" : "%1$s no %2$s lietoti",
+ "Files settings" : "Failu iestatījumi",
"Show hidden files" : "Rādīt slēptās datnes",
"Crop image previews" : "Apgriezt attēlu priekšskatījumus",
"WebDAV" : "WebDAV",
diff --git a/apps/files_external/lib/Lib/Storage/FTP.php b/apps/files_external/lib/Lib/Storage/FTP.php
index 0350035a11a..284f438fccd 100644
--- a/apps/files_external/lib/Lib/Storage/FTP.php
+++ b/apps/files_external/lib/Lib/Storage/FTP.php
@@ -123,7 +123,7 @@ class FTP extends Common {
return $item['type'] === 'cdir';
}));
if ($currentDir) {
- $time = \DateTime::createFromFormat('YmdHis', $currentDir['modify']);
+ $time = \DateTime::createFromFormat('YmdHis', $currentDir['modify'] ?? '');
if ($time === false) {
throw new \Exception("Invalid date format for directory: $currentDir");
}
@@ -269,7 +269,7 @@ class FTP extends Common {
case 'wb':
case 'wb+':
$useExisting = false;
- // no break
+ // no break
case 'a':
case 'ab':
case 'r+':
diff --git a/apps/files_sharing/l10n/lv.js b/apps/files_sharing/l10n/lv.js
index 3dffe166719..6fbcaa68081 100644
--- a/apps/files_sharing/l10n/lv.js
+++ b/apps/files_sharing/l10n/lv.js
@@ -35,6 +35,8 @@ OC.L10N.register(
"Delete" : "Dzēst",
"You can upload into this folder" : "Jūs variet augšuplādēt šajā mapē",
"Terms of service" : "Pakalpojuma noteikumi",
+ "Show list view" : "Rādīt saraksta skatu",
+ "Show grid view" : "Rādīt režģa skatu",
"No compatible server found at {remote}" : "Nav atrasts neviens saderīgs serveris {remote}",
"Invalid server URL" : "Nederīgs servera url",
"Failed to add the public link to your Nextcloud" : "Neizdevās pievienot publisku saiti jūsu Nextcloud",
@@ -98,9 +100,12 @@ OC.L10N.register(
"Files" : "Datnes",
"A file or folder has been <strong>shared</strong>" : "<strong>Koplietota</strong> datne vai mape",
"Shared link" : "Koplietota saite",
+ "Wrong share ID, share does not exist" : "Nepareizs koplietošanas ID, koplietojums neeksistē",
"Could not delete share" : "Neizdevās dzēst koplietotni",
"Please specify a file or folder path" : "Lūdzu norādiet datnes vai mapes ceļu",
+ "Wrong path, file/folder does not exist" : "Nepareizs ceļš, fails/mape neeksistē",
"Could not create share" : "Nevar izveidot koplietošanu",
+ "Invalid permissions" : "Nederīgas atļaujas",
"Please specify a valid user" : "Lūdzu norādiet derīgu lietotāju",
"Group sharing is disabled by the administrator" : "Administrators grupas koplietošanu ir atslēdzis",
"Please specify a valid group" : "Lūdzu norādiet derīgu grupu",
@@ -159,6 +164,8 @@ OC.L10N.register(
"Password protect" : "Aizsargāt ar paroli",
"Video verification" : "Video verifikācija",
"Add another link" : "Pievienot citu saiti",
+ "Create a new share link" : "Izveidojiet jaunu kopīgošanas saiti",
+ "Share link ({label})" : "Kopīgot saiti ({label})",
"Share link" : "Koplietot saiti",
"Resharing is not allowed" : "Atkārtota koplietošana nav atļauta",
"Name or email …" : "Vārds vai e-pasts ...",
diff --git a/apps/files_sharing/l10n/lv.json b/apps/files_sharing/l10n/lv.json
index 1a24fb250f0..3efed7cf5eb 100644
--- a/apps/files_sharing/l10n/lv.json
+++ b/apps/files_sharing/l10n/lv.json
@@ -33,6 +33,8 @@
"Delete" : "Dzēst",
"You can upload into this folder" : "Jūs variet augšuplādēt šajā mapē",
"Terms of service" : "Pakalpojuma noteikumi",
+ "Show list view" : "Rādīt saraksta skatu",
+ "Show grid view" : "Rādīt režģa skatu",
"No compatible server found at {remote}" : "Nav atrasts neviens saderīgs serveris {remote}",
"Invalid server URL" : "Nederīgs servera url",
"Failed to add the public link to your Nextcloud" : "Neizdevās pievienot publisku saiti jūsu Nextcloud",
@@ -96,9 +98,12 @@
"Files" : "Datnes",
"A file or folder has been <strong>shared</strong>" : "<strong>Koplietota</strong> datne vai mape",
"Shared link" : "Koplietota saite",
+ "Wrong share ID, share does not exist" : "Nepareizs koplietošanas ID, koplietojums neeksistē",
"Could not delete share" : "Neizdevās dzēst koplietotni",
"Please specify a file or folder path" : "Lūdzu norādiet datnes vai mapes ceļu",
+ "Wrong path, file/folder does not exist" : "Nepareizs ceļš, fails/mape neeksistē",
"Could not create share" : "Nevar izveidot koplietošanu",
+ "Invalid permissions" : "Nederīgas atļaujas",
"Please specify a valid user" : "Lūdzu norādiet derīgu lietotāju",
"Group sharing is disabled by the administrator" : "Administrators grupas koplietošanu ir atslēdzis",
"Please specify a valid group" : "Lūdzu norādiet derīgu grupu",
@@ -157,6 +162,8 @@
"Password protect" : "Aizsargāt ar paroli",
"Video verification" : "Video verifikācija",
"Add another link" : "Pievienot citu saiti",
+ "Create a new share link" : "Izveidojiet jaunu kopīgošanas saiti",
+ "Share link ({label})" : "Kopīgot saiti ({label})",
"Share link" : "Koplietot saiti",
"Resharing is not allowed" : "Atkārtota koplietošana nav atļauta",
"Name or email …" : "Vārds vai e-pasts ...",
diff --git a/apps/files_sharing/tests/ShareTest.php b/apps/files_sharing/tests/ShareTest.php
index 45c7ceb61ef..45bd5a3d707 100644
--- a/apps/files_sharing/tests/ShareTest.php
+++ b/apps/files_sharing/tests/ShareTest.php
@@ -39,6 +39,8 @@ class ShareTest extends TestCase {
private static $tempStorage;
+ private string $subsubfolder = '';
+
protected function setUp(): void {
parent::setUp();
@@ -176,14 +178,14 @@ class ShareTest extends TestCase {
$shares = $this->shareManager->getSharedWith(self::TEST_FILES_SHARING_API_USER2, IShare::TYPE_GROUP);
$share = $shares[0];
- $this->assertSame('/test.txt' ,$share->getTarget());
+ $this->assertSame('/test.txt', $share->getTarget());
$this->assertSame(19, $share->getPermissions());
\OC\Files\Filesystem::rename('test.txt', 'new test.txt');
$shares = $this->shareManager->getSharedWith(self::TEST_FILES_SHARING_API_USER2, IShare::TYPE_GROUP);
$share = $shares[0];
- $this->assertSame('/new test.txt' ,$share->getTarget());
+ $this->assertSame('/new test.txt', $share->getTarget());
$this->assertSame(19, $share->getPermissions());
$share->setPermissions(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE);
@@ -193,7 +195,7 @@ class ShareTest extends TestCase {
$shares = $this->shareManager->getSharedWith(self::TEST_FILES_SHARING_API_USER2, IShare::TYPE_GROUP);
$share = $shares[0];
- $this->assertSame('/new test.txt' ,$share->getTarget());
+ $this->assertSame('/new test.txt', $share->getTarget());
$this->assertSame(3, $share->getPermissions());
}
diff --git a/apps/files_trashbin/l10n/ja.js b/apps/files_trashbin/l10n/ja.js
index 6567f219c12..b732d03b228 100644
--- a/apps/files_trashbin/l10n/ja.js
+++ b/apps/files_trashbin/l10n/ja.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Deleted files" : "ゴミ箱",
"restored" : "復元済",
+ "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "ゴミ箱にある削除されたファイルやフォルダ(ストレージ容量が足りない場合、エクスポート操作中に削除されることがあります)",
"This application enables users to restore files that were deleted from the system." : "このアプリケーションを使用すると、ユーザーはシステムから削除されたファイルを復元できます。",
"This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "このアプリケーションを使用すると、システムから削除されたファイルを復元できます。削除されたファイルのリストがWebインターフェイスに表示され、削除されたファイルをユーザーのファイルディレクトリに復元するか、システムから完全に削除するかを選択できます。バージョン管理アプリが有効になっている場合、ファイルを復元すると、関連するファイルバージョンも復元されます。共有から削除されたファイルは、共有されなくなりますが、同じ方法で復元できます。デフォルトでは、ファイルは30日間ごみ箱に残ります。\nディスク領域圧迫を防ぐため、 「削除済みファイル」 アプリでは、削除済みファイルに現在使用可能な割当て容量の50%を超える容量は使用されません。削除されたファイルがこの制限を超えると、この制限を下回るまで最も古いファイルが削除されます。詳細については、削除済みファイルのマニュアルを参照してください。",
"Restore" : "復元",
diff --git a/apps/files_trashbin/l10n/ja.json b/apps/files_trashbin/l10n/ja.json
index 81961f163b8..1c03907852d 100644
--- a/apps/files_trashbin/l10n/ja.json
+++ b/apps/files_trashbin/l10n/ja.json
@@ -1,6 +1,7 @@
{ "translations": {
"Deleted files" : "ゴミ箱",
"restored" : "復元済",
+ "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "ゴミ箱にある削除されたファイルやフォルダ(ストレージ容量が足りない場合、エクスポート操作中に削除されることがあります)",
"This application enables users to restore files that were deleted from the system." : "このアプリケーションを使用すると、ユーザーはシステムから削除されたファイルを復元できます。",
"This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "このアプリケーションを使用すると、システムから削除されたファイルを復元できます。削除されたファイルのリストがWebインターフェイスに表示され、削除されたファイルをユーザーのファイルディレクトリに復元するか、システムから完全に削除するかを選択できます。バージョン管理アプリが有効になっている場合、ファイルを復元すると、関連するファイルバージョンも復元されます。共有から削除されたファイルは、共有されなくなりますが、同じ方法で復元できます。デフォルトでは、ファイルは30日間ごみ箱に残ります。\nディスク領域圧迫を防ぐため、 「削除済みファイル」 アプリでは、削除済みファイルに現在使用可能な割当て容量の50%を超える容量は使用されません。削除されたファイルがこの制限を超えると、この制限を下回るまで最も古いファイルが削除されます。詳細については、削除済みファイルのマニュアルを参照してください。",
"Restore" : "復元",
diff --git a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php
index 12010995560..5d16d58fc0a 100644
--- a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php
@@ -44,7 +44,6 @@ use OCP\UserInterface;
use Psr\Log\LoggerInterface;
class GroupsControllerTest extends \Test\TestCase {
-
/** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */
protected $request;
/** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
@@ -57,6 +56,8 @@ class GroupsControllerTest extends \Test\TestCase {
protected $userSession;
/** @var IAccountManager|\PHPUnit\Framework\MockObject\MockObject */
protected $accountManager;
+ /** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */
+ protected $l10nFactory;
/** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
protected $logger;
/** @var SubAdmin|\PHPUnit\Framework\MockObject\MockObject */
diff --git a/apps/settings/appinfo/info.xml b/apps/settings/appinfo/info.xml
index 9cb489ff0f3..310d2902510 100644
--- a/apps/settings/appinfo/info.xml
+++ b/apps/settings/appinfo/info.xml
@@ -38,6 +38,7 @@
<personal>OCA\Settings\Settings\Personal\Security\TwoFactor</personal>
<personal>OCA\Settings\Settings\Personal\Security\WebAuthn</personal>
<personal-section>OCA\Settings\Sections\Personal\Availability</personal-section>
+ <personal-section>OCA\Settings\Sections\Personal\Calendar</personal-section>
<personal-section>OCA\Settings\Sections\Personal\PersonalInfo</personal-section>
<personal-section>OCA\Settings\Sections\Personal\Security</personal-section>
<personal-section>OCA\Settings\Sections\Personal\SyncClients</personal-section>
diff --git a/apps/settings/composer/composer/autoload_classmap.php b/apps/settings/composer/composer/autoload_classmap.php
index f45aae3eb80..32de1ff6d2a 100644
--- a/apps/settings/composer/composer/autoload_classmap.php
+++ b/apps/settings/composer/composer/autoload_classmap.php
@@ -49,6 +49,7 @@ return array(
'OCA\\Settings\\Sections\\Admin\\Server' => $baseDir . '/../lib/Sections/Admin/Server.php',
'OCA\\Settings\\Sections\\Admin\\Sharing' => $baseDir . '/../lib/Sections/Admin/Sharing.php',
'OCA\\Settings\\Sections\\Personal\\Availability' => $baseDir . '/../lib/Sections/Personal/Availability.php',
+ 'OCA\\Settings\\Sections\\Personal\\Calendar' => $baseDir . '/../lib/Sections/Personal/Calendar.php',
'OCA\\Settings\\Sections\\Personal\\PersonalInfo' => $baseDir . '/../lib/Sections/Personal/PersonalInfo.php',
'OCA\\Settings\\Sections\\Personal\\Security' => $baseDir . '/../lib/Sections/Personal/Security.php',
'OCA\\Settings\\Sections\\Personal\\SyncClients' => $baseDir . '/../lib/Sections/Personal/SyncClients.php',
diff --git a/apps/settings/composer/composer/autoload_static.php b/apps/settings/composer/composer/autoload_static.php
index f353d007bb5..57235766a7c 100644
--- a/apps/settings/composer/composer/autoload_static.php
+++ b/apps/settings/composer/composer/autoload_static.php
@@ -64,6 +64,7 @@ class ComposerStaticInitSettings
'OCA\\Settings\\Sections\\Admin\\Server' => __DIR__ . '/..' . '/../lib/Sections/Admin/Server.php',
'OCA\\Settings\\Sections\\Admin\\Sharing' => __DIR__ . '/..' . '/../lib/Sections/Admin/Sharing.php',
'OCA\\Settings\\Sections\\Personal\\Availability' => __DIR__ . '/..' . '/../lib/Sections/Personal/Availability.php',
+ 'OCA\\Settings\\Sections\\Personal\\Calendar' => __DIR__ . '/..' . '/../lib/Sections/Personal/Calendar.php',
'OCA\\Settings\\Sections\\Personal\\PersonalInfo' => __DIR__ . '/..' . '/../lib/Sections/Personal/PersonalInfo.php',
'OCA\\Settings\\Sections\\Personal\\Security' => __DIR__ . '/..' . '/../lib/Sections/Personal/Security.php',
'OCA\\Settings\\Sections\\Personal\\SyncClients' => __DIR__ . '/..' . '/../lib/Sections/Personal/SyncClients.php',
diff --git a/apps/settings/l10n/af.js b/apps/settings/l10n/af.js
index 04a7e5b54a5..6ad4f4d9d02 100644
--- a/apps/settings/l10n/af.js
+++ b/apps/settings/l10n/af.js
@@ -30,6 +30,7 @@ OC.L10N.register(
"Apps" : "Toeps",
"Settings" : "Instellings",
"Personal" : "Persoonlik",
+ "Calendar" : "Kalender",
"Personal info" : "Persoonlike inligting",
"Create" : "Skep",
"Delete" : "Skrap",
diff --git a/apps/settings/l10n/af.json b/apps/settings/l10n/af.json
index 05d87b9c77b..62b5da6f44b 100644
--- a/apps/settings/l10n/af.json
+++ b/apps/settings/l10n/af.json
@@ -28,6 +28,7 @@
"Apps" : "Toeps",
"Settings" : "Instellings",
"Personal" : "Persoonlik",
+ "Calendar" : "Kalender",
"Personal info" : "Persoonlike inligting",
"Create" : "Skep",
"Delete" : "Skrap",
diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js
index 5e33e036ff3..396b67d1001 100644
--- a/apps/settings/l10n/ar.js
+++ b/apps/settings/l10n/ar.js
@@ -55,6 +55,7 @@ OC.L10N.register(
"Overview" : "نظرة شاملة",
"Basic settings" : "الإعدادات الأساسية",
"Sharing" : "مشاركة",
+ "Calendar" : "التقويم",
"Personal info" : "المعلومات الشخصية",
"Mobile & desktop" : "الجوال وسطح المكتب",
"Email server" : "خادوم البريد",
diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json
index 1f9d065fa83..87244e561a2 100644
--- a/apps/settings/l10n/ar.json
+++ b/apps/settings/l10n/ar.json
@@ -53,6 +53,7 @@
"Overview" : "نظرة شاملة",
"Basic settings" : "الإعدادات الأساسية",
"Sharing" : "مشاركة",
+ "Calendar" : "التقويم",
"Personal info" : "المعلومات الشخصية",
"Mobile & desktop" : "الجوال وسطح المكتب",
"Email server" : "خادوم البريد",
diff --git a/apps/settings/l10n/ast.js b/apps/settings/l10n/ast.js
index f105abb015e..af631829434 100644
--- a/apps/settings/l10n/ast.js
+++ b/apps/settings/l10n/ast.js
@@ -63,6 +63,7 @@ OC.L10N.register(
"Additional settings" : "Axustes adicionales",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendariu",
"Personal info" : "Información personal",
"Email server" : "Sirvidor de corréu",
"Security & setup warnings" : "Alvertancies de seguranza y configuración",
diff --git a/apps/settings/l10n/ast.json b/apps/settings/l10n/ast.json
index a03d3539acd..9cbecf003a0 100644
--- a/apps/settings/l10n/ast.json
+++ b/apps/settings/l10n/ast.json
@@ -61,6 +61,7 @@
"Additional settings" : "Axustes adicionales",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendariu",
"Personal info" : "Información personal",
"Email server" : "Sirvidor de corréu",
"Security & setup warnings" : "Alvertancies de seguranza y configuración",
diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js
index 619e4013259..7c39cac4564 100644
--- a/apps/settings/l10n/bg.js
+++ b/apps/settings/l10n/bg.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Основни настройки",
"Sharing" : "Споделяне",
"Availability" : "Наличност",
+ "Calendar" : "Kалендар",
"Personal info" : "Лични данни",
"Mobile & desktop" : "Мобилни и настолни",
"Email server" : "Имейл сървър",
diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json
index 49b21483ca4..72e9d50396c 100644
--- a/apps/settings/l10n/bg.json
+++ b/apps/settings/l10n/bg.json
@@ -120,6 +120,7 @@
"Basic settings" : "Основни настройки",
"Sharing" : "Споделяне",
"Availability" : "Наличност",
+ "Calendar" : "Kалендар",
"Personal info" : "Лични данни",
"Mobile & desktop" : "Мобилни и настолни",
"Email server" : "Имейл сървър",
diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js
index 997e6f36945..f22b5642370 100644
--- a/apps/settings/l10n/br.js
+++ b/apps/settings/l10n/br.js
@@ -96,6 +96,7 @@ OC.L10N.register(
"Overview" : "Taol-lagad",
"Basic settings" : "Stummoù diazez",
"Sharing" : "Rannan",
+ "Calendar" : "Deiziataer",
"Personal info" : "Titouroù personel",
"Mobile & desktop" : "Hezouk ha burev",
"Email server" : "Servijour postel",
diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json
index 0fec17df5eb..8adf4b78fe1 100644
--- a/apps/settings/l10n/br.json
+++ b/apps/settings/l10n/br.json
@@ -94,6 +94,7 @@
"Overview" : "Taol-lagad",
"Basic settings" : "Stummoù diazez",
"Sharing" : "Rannan",
+ "Calendar" : "Deiziataer",
"Personal info" : "Titouroù personel",
"Mobile & desktop" : "Hezouk ha burev",
"Email server" : "Servijour postel",
diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js
index 8d9c26edb54..a37f91f05ae 100644
--- a/apps/settings/l10n/ca.js
+++ b/apps/settings/l10n/ca.js
@@ -121,6 +121,7 @@ OC.L10N.register(
"Overview" : "Resum",
"Basic settings" : "Paràmetres bàsics",
"Sharing" : "Compartició",
+ "Calendar" : "Calendari",
"Personal info" : "Informació personal",
"Mobile & desktop" : "Mòbil i escriptori",
"Email server" : "Servidor de correu electrònic",
diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json
index 17abad941fd..e735ec95826 100644
--- a/apps/settings/l10n/ca.json
+++ b/apps/settings/l10n/ca.json
@@ -119,6 +119,7 @@
"Overview" : "Resum",
"Basic settings" : "Paràmetres bàsics",
"Sharing" : "Compartició",
+ "Calendar" : "Calendari",
"Personal info" : "Informació personal",
"Mobile & desktop" : "Mòbil i escriptori",
"Email server" : "Servidor de correu electrònic",
diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js
index 2cdfe95896d..59dc00cc627 100644
--- a/apps/settings/l10n/cs.js
+++ b/apps/settings/l10n/cs.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Základní nastavení",
"Sharing" : "Sdílení",
"Availability" : "Dostupnost",
+ "Calendar" : "Kalendář",
"Personal info" : "Osobní údaje",
"Mobile & desktop" : "Mobilní a desktop",
"Email server" : "E-mailový server",
diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json
index 81d6fd6ca23..04d4955db85 100644
--- a/apps/settings/l10n/cs.json
+++ b/apps/settings/l10n/cs.json
@@ -120,6 +120,7 @@
"Basic settings" : "Základní nastavení",
"Sharing" : "Sdílení",
"Availability" : "Dostupnost",
+ "Calendar" : "Kalendář",
"Personal info" : "Osobní údaje",
"Mobile & desktop" : "Mobilní a desktop",
"Email server" : "E-mailový server",
diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js
index 0088c1a0bb4..302c99c39ea 100644
--- a/apps/settings/l10n/da.js
+++ b/apps/settings/l10n/da.js
@@ -105,6 +105,7 @@ OC.L10N.register(
"Overview" : "Overblik",
"Basic settings" : "Grundlæggende Indstillinger",
"Sharing" : "Deling",
+ "Calendar" : "Kalender",
"Personal info" : "Personlige oplysninger",
"Mobile & desktop" : "Mobil & desktop",
"Email server" : "E-mailserver",
diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json
index 35723f375c4..dc9c29967dc 100644
--- a/apps/settings/l10n/da.json
+++ b/apps/settings/l10n/da.json
@@ -103,6 +103,7 @@
"Overview" : "Overblik",
"Basic settings" : "Grundlæggende Indstillinger",
"Sharing" : "Deling",
+ "Calendar" : "Kalender",
"Personal info" : "Personlige oplysninger",
"Mobile & desktop" : "Mobil & desktop",
"Email server" : "E-mailserver",
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index 12381d4dec2..62f0e061134 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -121,6 +121,7 @@ OC.L10N.register(
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
"Availability" : "Verfügbarkeit",
+ "Calendar" : "Kalender",
"Personal info" : "Persönliche Informationen",
"Mobile & desktop" : "Mobil & Desktop",
"Email server" : "E-Mail-Server",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index 4c313c13f19..a8941c3f387 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -119,6 +119,7 @@
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
"Availability" : "Verfügbarkeit",
+ "Calendar" : "Kalender",
"Personal info" : "Persönliche Informationen",
"Mobile & desktop" : "Mobil & Desktop",
"Email server" : "E-Mail-Server",
diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js
index 8af48884740..4ff035c97a8 100644
--- a/apps/settings/l10n/de_DE.js
+++ b/apps/settings/l10n/de_DE.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
"Availability" : "Verfügbarkeit",
+ "Calendar" : "Kalender",
"Personal info" : "Persönliche Informationen",
"Mobile & desktop" : "Mobil & Desktop",
"Email server" : "E-Mail-Server",
diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json
index c69589557cd..31d56f027b6 100644
--- a/apps/settings/l10n/de_DE.json
+++ b/apps/settings/l10n/de_DE.json
@@ -120,6 +120,7 @@
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
"Availability" : "Verfügbarkeit",
+ "Calendar" : "Kalender",
"Personal info" : "Persönliche Informationen",
"Mobile & desktop" : "Mobil & Desktop",
"Email server" : "E-Mail-Server",
diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js
index 8d489f3993f..a7cab43d86e 100644
--- a/apps/settings/l10n/el.js
+++ b/apps/settings/l10n/el.js
@@ -107,6 +107,7 @@ OC.L10N.register(
"Basic settings" : "Βασικές ρυθμίσεις",
"Sharing" : "Διαμοιρασμός",
"Availability" : "Διαθεσιμότητα",
+ "Calendar" : "Ημερολόγιο",
"Personal info" : "Προσωπικές πληροφορίες",
"Mobile & desktop" : "Κινητό & σταθερό",
"Email server" : "Διακομιστής Email",
diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json
index 65cd8725179..23a9fd04fe9 100644
--- a/apps/settings/l10n/el.json
+++ b/apps/settings/l10n/el.json
@@ -105,6 +105,7 @@
"Basic settings" : "Βασικές ρυθμίσεις",
"Sharing" : "Διαμοιρασμός",
"Availability" : "Διαθεσιμότητα",
+ "Calendar" : "Ημερολόγιο",
"Personal info" : "Προσωπικές πληροφορίες",
"Mobile & desktop" : "Κινητό & σταθερό",
"Email server" : "Διακομιστής Email",
diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js
index 57aa2c344aa..059f0902796 100644
--- a/apps/settings/l10n/en_GB.js
+++ b/apps/settings/l10n/en_GB.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Overview",
"Basic settings" : "Basic settings",
"Sharing" : "Sharing",
+ "Calendar" : "Calendar",
"Personal info" : "Personal info",
"Mobile & desktop" : "Mobile & desktop",
"Email server" : "Email server",
diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json
index 5f8cbc518a3..04f6c5c8c5d 100644
--- a/apps/settings/l10n/en_GB.json
+++ b/apps/settings/l10n/en_GB.json
@@ -71,6 +71,7 @@
"Overview" : "Overview",
"Basic settings" : "Basic settings",
"Sharing" : "Sharing",
+ "Calendar" : "Calendar",
"Personal info" : "Personal info",
"Mobile & desktop" : "Mobile & desktop",
"Email server" : "Email server",
diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js
index b3203994d5d..ba2054b1010 100644
--- a/apps/settings/l10n/eo.js
+++ b/apps/settings/l10n/eo.js
@@ -93,6 +93,7 @@ OC.L10N.register(
"Overview" : "Superrigardo",
"Basic settings" : "Bazaj agordoj",
"Sharing" : "Kunhavigo",
+ "Calendar" : "Kalendaro",
"Personal info" : "Persona informo",
"Mobile & desktop" : "Porteblaj kaj labortablaj aplikaĵoj",
"Email server" : "Retpoŝtoservilo",
diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json
index 3f9633d00b4..d9f6ad63d47 100644
--- a/apps/settings/l10n/eo.json
+++ b/apps/settings/l10n/eo.json
@@ -91,6 +91,7 @@
"Overview" : "Superrigardo",
"Basic settings" : "Bazaj agordoj",
"Sharing" : "Kunhavigo",
+ "Calendar" : "Kalendaro",
"Personal info" : "Persona informo",
"Mobile & desktop" : "Porteblaj kaj labortablaj aplikaĵoj",
"Email server" : "Retpoŝtoservilo",
diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js
index af4946bd00d..1bfa0d71a6c 100644
--- a/apps/settings/l10n/es.js
+++ b/apps/settings/l10n/es.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Ajustes básicos",
"Sharing" : "Compartir",
"Availability" : "Disponibilidad",
+ "Calendar" : "Calendario",
"Personal info" : "Información personal",
"Mobile & desktop" : "Móvil y escritorio",
"Email server" : "Servidor de correo electrónico",
diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json
index 556ac2bc007..8567f8841be 100644
--- a/apps/settings/l10n/es.json
+++ b/apps/settings/l10n/es.json
@@ -120,6 +120,7 @@
"Basic settings" : "Ajustes básicos",
"Sharing" : "Compartir",
"Availability" : "Disponibilidad",
+ "Calendar" : "Calendario",
"Personal info" : "Información personal",
"Mobile & desktop" : "Móvil y escritorio",
"Email server" : "Servidor de correo electrónico",
diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js
index c51505b74d6..23e41110342 100644
--- a/apps/settings/l10n/es_419.js
+++ b/apps/settings/l10n/es_419.js
@@ -70,6 +70,7 @@ OC.L10N.register(
"Overview" : "Resumen",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json
index a74f8e7ecd7..cde36ba95eb 100644
--- a/apps/settings/l10n/es_419.json
+++ b/apps/settings/l10n/es_419.json
@@ -68,6 +68,7 @@
"Overview" : "Resumen",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js
index 8bb31e9785e..457c6b0c265 100644
--- a/apps/settings/l10n/es_AR.js
+++ b/apps/settings/l10n/es_AR.js
@@ -67,6 +67,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json
index d83e46ca2af..d656e835741 100644
--- a/apps/settings/l10n/es_AR.json
+++ b/apps/settings/l10n/es_AR.json
@@ -65,6 +65,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_CL.js
+++ b/apps/settings/l10n/es_CL.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_CL.json
+++ b/apps/settings/l10n/es_CL.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_CO.js
+++ b/apps/settings/l10n/es_CO.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_CO.json
+++ b/apps/settings/l10n/es_CO.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_CR.js
+++ b/apps/settings/l10n/es_CR.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_CR.json
+++ b/apps/settings/l10n/es_CR.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_DO.js
+++ b/apps/settings/l10n/es_DO.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_DO.json
+++ b/apps/settings/l10n/es_DO.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_EC.js
+++ b/apps/settings/l10n/es_EC.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_EC.json
+++ b/apps/settings/l10n/es_EC.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_GT.js
+++ b/apps/settings/l10n/es_GT.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_GT.json
+++ b/apps/settings/l10n/es_GT.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_HN.js
+++ b/apps/settings/l10n/es_HN.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_HN.json
+++ b/apps/settings/l10n/es_HN.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js
index f3beb979556..a66616a4b37 100644
--- a/apps/settings/l10n/es_MX.js
+++ b/apps/settings/l10n/es_MX.js
@@ -83,6 +83,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Mobile & desktop" : "Móvil & escritorio",
"Email server" : "Servidor de correo electrónico",
diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json
index 1c978c39be6..c559e3f9f73 100644
--- a/apps/settings/l10n/es_MX.json
+++ b/apps/settings/l10n/es_MX.json
@@ -81,6 +81,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Mobile & desktop" : "Móvil & escritorio",
"Email server" : "Servidor de correo electrónico",
diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_NI.js
+++ b/apps/settings/l10n/es_NI.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_NI.json
+++ b/apps/settings/l10n/es_NI.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_PA.js
+++ b/apps/settings/l10n/es_PA.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_PA.json
+++ b/apps/settings/l10n/es_PA.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_PE.js
+++ b/apps/settings/l10n/es_PE.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_PE.json
+++ b/apps/settings/l10n/es_PE.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_PR.js
+++ b/apps/settings/l10n/es_PR.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_PR.json
+++ b/apps/settings/l10n/es_PR.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_PY.js
+++ b/apps/settings/l10n/es_PY.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_PY.json
+++ b/apps/settings/l10n/es_PY.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_SV.js
+++ b/apps/settings/l10n/es_SV.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_SV.json
+++ b/apps/settings/l10n/es_SV.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_UY.js
+++ b/apps/settings/l10n/es_UY.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_UY.json
+++ b/apps/settings/l10n/es_UY.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js
index 1fbc4ec3b7f..2324c479e8a 100644
--- a/apps/settings/l10n/et_EE.js
+++ b/apps/settings/l10n/et_EE.js
@@ -71,6 +71,7 @@ OC.L10N.register(
"Overview" : "Ülevaade",
"Basic settings" : "Põhiseaded",
"Sharing" : "Jagamine",
+ "Calendar" : "Kalender",
"Personal info" : "Isiklik info",
"Mobile & desktop" : "Mobiil ja töölaud",
"Email server" : "E-kirjade server",
diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json
index d3b1816fc65..6c8b428b59f 100644
--- a/apps/settings/l10n/et_EE.json
+++ b/apps/settings/l10n/et_EE.json
@@ -69,6 +69,7 @@
"Overview" : "Ülevaade",
"Basic settings" : "Põhiseaded",
"Sharing" : "Jagamine",
+ "Calendar" : "Kalender",
"Personal info" : "Isiklik info",
"Mobile & desktop" : "Mobiil ja töölaud",
"Email server" : "E-kirjade server",
diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js
index 5142bd95948..bdc24763336 100644
--- a/apps/settings/l10n/eu.js
+++ b/apps/settings/l10n/eu.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Oinarrizko ezarpenak",
"Sharing" : "Partekatzea",
"Availability" : "Eskuragarritasuna",
+ "Calendar" : "Egutegia",
"Personal info" : "Informazio pertsonala",
"Mobile & desktop" : "Mugikorra eta mahaigaina",
"Email server" : "E-posta zerbitzaria",
diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json
index 2571ec02cc0..ba4ff989f8f 100644
--- a/apps/settings/l10n/eu.json
+++ b/apps/settings/l10n/eu.json
@@ -120,6 +120,7 @@
"Basic settings" : "Oinarrizko ezarpenak",
"Sharing" : "Partekatzea",
"Availability" : "Eskuragarritasuna",
+ "Calendar" : "Egutegia",
"Personal info" : "Informazio pertsonala",
"Mobile & desktop" : "Mugikorra eta mahaigaina",
"Email server" : "E-posta zerbitzaria",
diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js
index 612b7874a96..515dd4a7b4a 100644
--- a/apps/settings/l10n/fa.js
+++ b/apps/settings/l10n/fa.js
@@ -105,6 +105,7 @@ OC.L10N.register(
"Overview" : "بررسی اجمالی",
"Basic settings" : "تنظیمات پایه",
"Sharing" : "اشتراک گذاری",
+ "Calendar" : "تقویم",
"Personal info" : "مشخصات شخصی",
"Mobile & desktop" : "موبایل و دسک تاپ",
"Email server" : "سرور ایمیل",
diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json
index b7bb1262d67..884cfa85442 100644
--- a/apps/settings/l10n/fa.json
+++ b/apps/settings/l10n/fa.json
@@ -103,6 +103,7 @@
"Overview" : "بررسی اجمالی",
"Basic settings" : "تنظیمات پایه",
"Sharing" : "اشتراک گذاری",
+ "Calendar" : "تقویم",
"Personal info" : "مشخصات شخصی",
"Mobile & desktop" : "موبایل و دسک تاپ",
"Email server" : "سرور ایمیل",
diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js
index 3f2841b0937..0eacc11583e 100644
--- a/apps/settings/l10n/fi.js
+++ b/apps/settings/l10n/fi.js
@@ -106,6 +106,7 @@ OC.L10N.register(
"Basic settings" : "Perusasetukset",
"Sharing" : "Jakaminen",
"Availability" : "Saatavuus",
+ "Calendar" : "Kalenteri",
"Personal info" : "Henkilökohtaiset tiedot",
"Mobile & desktop" : "Mobiili ja työpöytä",
"Email server" : "Sähköpostipalvelin",
diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json
index 25eb6effcbf..417c55fb656 100644
--- a/apps/settings/l10n/fi.json
+++ b/apps/settings/l10n/fi.json
@@ -104,6 +104,7 @@
"Basic settings" : "Perusasetukset",
"Sharing" : "Jakaminen",
"Availability" : "Saatavuus",
+ "Calendar" : "Kalenteri",
"Personal info" : "Henkilökohtaiset tiedot",
"Mobile & desktop" : "Mobiili ja työpöytä",
"Email server" : "Sähköpostipalvelin",
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index dd01e591e98..7958daf0931 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Paramètres de base",
"Sharing" : "Partage",
"Availability" : "Disponibilité",
+ "Calendar" : "Agenda",
"Personal info" : "Informations personnelles",
"Mobile & desktop" : "Mobile & bureau",
"Email server" : "Serveur e-mail",
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index 0d1b6427596..b8fc44fca5e 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -120,6 +120,7 @@
"Basic settings" : "Paramètres de base",
"Sharing" : "Partage",
"Availability" : "Disponibilité",
+ "Calendar" : "Agenda",
"Personal info" : "Informations personnelles",
"Mobile & desktop" : "Mobile & bureau",
"Email server" : "Serveur e-mail",
diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js
index 6ef83fbe42b..0068b1fd358 100644
--- a/apps/settings/l10n/gl.js
+++ b/apps/settings/l10n/gl.js
@@ -99,6 +99,7 @@ OC.L10N.register(
"Overview" : "Vista xeral",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartindo",
+ "Calendar" : "Calendario",
"Personal info" : "Información persoal",
"Mobile & desktop" : "Móbil e escritorio",
"Email server" : "Servidor de correo",
diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json
index b5c296234ad..9f7f89f1447 100644
--- a/apps/settings/l10n/gl.json
+++ b/apps/settings/l10n/gl.json
@@ -97,6 +97,7 @@
"Overview" : "Vista xeral",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartindo",
+ "Calendar" : "Calendario",
"Personal info" : "Información persoal",
"Mobile & desktop" : "Móbil e escritorio",
"Email server" : "Servidor de correo",
diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js
index 54cfe1ed6e7..1068af924a3 100644
--- a/apps/settings/l10n/he.js
+++ b/apps/settings/l10n/he.js
@@ -99,6 +99,7 @@ OC.L10N.register(
"Overview" : "סקירה",
"Basic settings" : "הגדרות בסיסיות",
"Sharing" : "שיתוף",
+ "Calendar" : "לוח שנה",
"Personal info" : "פרטים אישיים",
"Mobile & desktop" : "נייד ושולחן עבודה",
"Email server" : "שרת דואר אלקטרוני",
diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json
index 7b91f42d2de..9fd2adc912f 100644
--- a/apps/settings/l10n/he.json
+++ b/apps/settings/l10n/he.json
@@ -97,6 +97,7 @@
"Overview" : "סקירה",
"Basic settings" : "הגדרות בסיסיות",
"Sharing" : "שיתוף",
+ "Calendar" : "לוח שנה",
"Personal info" : "פרטים אישיים",
"Mobile & desktop" : "נייד ושולחן עבודה",
"Email server" : "שרת דואר אלקטרוני",
diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js
index c5d9f17ab7e..880192b81b1 100644
--- a/apps/settings/l10n/hr.js
+++ b/apps/settings/l10n/hr.js
@@ -106,6 +106,7 @@ OC.L10N.register(
"Basic settings" : "Osnovne postavke",
"Sharing" : "Dijeljenje",
"Availability" : "Raspoloživost",
+ "Calendar" : "Kalendar",
"Personal info" : "Osobne informacije",
"Mobile & desktop" : "Mobilni uređaji i osobna računala",
"Email server" : "Poslužitelj e-pošte",
diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json
index c093bb0c72d..a1f5536679d 100644
--- a/apps/settings/l10n/hr.json
+++ b/apps/settings/l10n/hr.json
@@ -104,6 +104,7 @@
"Basic settings" : "Osnovne postavke",
"Sharing" : "Dijeljenje",
"Availability" : "Raspoloživost",
+ "Calendar" : "Kalendar",
"Personal info" : "Osobne informacije",
"Mobile & desktop" : "Mobilni uređaji i osobna računala",
"Email server" : "Poslužitelj e-pošte",
diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js
index 6626d99a7af..fd9096c42dc 100644
--- a/apps/settings/l10n/hu.js
+++ b/apps/settings/l10n/hu.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Alapvető beállítások",
"Sharing" : "Megosztás",
"Availability" : "Elérhetőség",
+ "Calendar" : "Naptár",
"Personal info" : "Személyes információk",
"Mobile & desktop" : "Mobil és asztali",
"Email server" : "E-mail kiszolgáló",
diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json
index caceea16cf5..934b560012d 100644
--- a/apps/settings/l10n/hu.json
+++ b/apps/settings/l10n/hu.json
@@ -120,6 +120,7 @@
"Basic settings" : "Alapvető beállítások",
"Sharing" : "Megosztás",
"Availability" : "Elérhetőség",
+ "Calendar" : "Naptár",
"Personal info" : "Személyes információk",
"Mobile & desktop" : "Mobil és asztali",
"Email server" : "E-mail kiszolgáló",
diff --git a/apps/settings/l10n/ia.js b/apps/settings/l10n/ia.js
index f1443ddbf26..8ded23fd3b6 100644
--- a/apps/settings/l10n/ia.js
+++ b/apps/settings/l10n/ia.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Settings" : "Configurationes",
"Personal" : "Personal",
"Sharing" : "Compartente",
+ "Calendar" : "Calendario",
"Personal info" : "Information personal",
"Email server" : "Servitor de e-posta",
"Security & setup warnings" : "Securitate e advertimentos de configuration",
diff --git a/apps/settings/l10n/ia.json b/apps/settings/l10n/ia.json
index 2b5311445ab..384084d2729 100644
--- a/apps/settings/l10n/ia.json
+++ b/apps/settings/l10n/ia.json
@@ -25,6 +25,7 @@
"Settings" : "Configurationes",
"Personal" : "Personal",
"Sharing" : "Compartente",
+ "Calendar" : "Calendario",
"Personal info" : "Information personal",
"Email server" : "Servitor de e-posta",
"Security & setup warnings" : "Securitate e advertimentos de configuration",
diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js
index 44d8a9797d0..16fc775fdff 100644
--- a/apps/settings/l10n/id.js
+++ b/apps/settings/l10n/id.js
@@ -108,6 +108,7 @@ OC.L10N.register(
"Overview" : "Ringkasan",
"Basic settings" : "Setelan dasar",
"Sharing" : "Berbagi",
+ "Calendar" : "Kalender",
"Personal info" : "Info pribadi",
"Mobile & desktop" : "Mobil & desktop",
"Email server" : "Server surel",
diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json
index 721b6575747..589f9653bb0 100644
--- a/apps/settings/l10n/id.json
+++ b/apps/settings/l10n/id.json
@@ -106,6 +106,7 @@
"Overview" : "Ringkasan",
"Basic settings" : "Setelan dasar",
"Sharing" : "Berbagi",
+ "Calendar" : "Kalender",
"Personal info" : "Info pribadi",
"Mobile & desktop" : "Mobil & desktop",
"Email server" : "Server surel",
diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js
index ca880a4e4ad..2a8403da64a 100644
--- a/apps/settings/l10n/is.js
+++ b/apps/settings/l10n/is.js
@@ -94,6 +94,7 @@ OC.L10N.register(
"Overview" : "Yfirlit",
"Basic settings" : "Grunnstillingar",
"Sharing" : "Deiling",
+ "Calendar" : "Dagatal",
"Personal info" : "Persónulegar upplýsingar",
"Mobile & desktop" : "Farsímar og borðtölvur",
"Email server" : "Póstþjónn",
diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json
index 45753843cde..a97a7e6e2de 100644
--- a/apps/settings/l10n/is.json
+++ b/apps/settings/l10n/is.json
@@ -92,6 +92,7 @@
"Overview" : "Yfirlit",
"Basic settings" : "Grunnstillingar",
"Sharing" : "Deiling",
+ "Calendar" : "Dagatal",
"Personal info" : "Persónulegar upplýsingar",
"Mobile & desktop" : "Farsímar og borðtölvur",
"Email server" : "Póstþjónn",
diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js
index 19f7ec9d4ba..9e08d3b3f53 100644
--- a/apps/settings/l10n/it.js
+++ b/apps/settings/l10n/it.js
@@ -112,6 +112,7 @@ OC.L10N.register(
"Basic settings" : "Impostazioni di base",
"Sharing" : "Condivisione",
"Availability" : "Disponibilità",
+ "Calendar" : "Calendario",
"Personal info" : "Informazioni personali",
"Mobile & desktop" : "Mobile e desktop",
"Email server" : "Server di posta",
diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json
index 1f581136734..b142d6c5b79 100644
--- a/apps/settings/l10n/it.json
+++ b/apps/settings/l10n/it.json
@@ -110,6 +110,7 @@
"Basic settings" : "Impostazioni di base",
"Sharing" : "Condivisione",
"Availability" : "Disponibilità",
+ "Calendar" : "Calendario",
"Personal info" : "Informazioni personali",
"Mobile & desktop" : "Mobile e desktop",
"Email server" : "Server di posta",
diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js
index 5d3fc95ecd6..88e08e587f4 100644
--- a/apps/settings/l10n/ja.js
+++ b/apps/settings/l10n/ja.js
@@ -56,6 +56,7 @@ OC.L10N.register(
"Unable to change personal password" : "個人パスワードを変更できません",
"Saved" : "保存しました",
"No user supplied" : "ユーザーが指定されていません",
+ "Unable to change password. Password too long." : "パスワードを変更できません。パスワードが長すぎます。",
"Authentication error" : "認証エラー",
"Please provide an admin recovery password; otherwise, all user data will be lost." : "リカバリ用の管理者パスワードを入力してください。そうしないと、全ユーザーのデータが失われます。",
"Wrong admin recovery password. Please check the password and try again." : "リカバリ用の管理者パスワードが間違っています。パスワードを確認して再度実行してください。",
@@ -121,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "基本設定",
"Sharing" : "共有",
"Availability" : "応対可能日時",
+ "Calendar" : "カレンダー",
"Personal info" : "個人情報",
"Mobile & desktop" : "モバイル & デスクトップ",
"Email server" : "メールサーバー",
@@ -246,6 +248,7 @@ OC.L10N.register(
"Server-side encryption" : "サーバーサイド暗号化",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "サーバーサイド暗号化では、このサーバーにアップロードされるファイルを暗号化することができます。この設定を行うとパフォーマンス劣化のような制限を伴いますので、必要な場合のみ有効にしてください。",
"Enable server-side encryption" : "サーバーサイド暗号化を有効にする",
+ "Please read carefully before activating server-side encryption:" : "サーバー側の暗号化を適用にする前に、よくお読みください:",
"Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "いったん暗号化を有効にすると、この時点からサーバーにアップロードされるすべてのファイルが暗号化されサーバー上に入ります。有効化された暗号モジュールは復号化機能をサポートしますが、すべての前提条件が満たされている(例えば、回復キーが設定されている)場合にのみ、後日暗号化を無効にできます。",
"Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "暗号化だけで、システムのセキュリティが保証されるわけではありません。暗号化アプリがどのように動作するかの詳細な情報や、サポートされているユースケースについては、Nextcloud のドキュメントを参照してください。",
"Be aware that encryption always increases the file size." : "暗号化は、常にファイルサイズが増加することに注意してください。",
@@ -253,6 +256,8 @@ OC.L10N.register(
"This is the final warning: Do you really want to enable encryption?" : "これが最後の警告です:本当に暗号化を有効にしますか?",
"No encryption module loaded, please enable an encryption module in the app menu." : "暗号化モジュールがロードされていません。アプリのメニューから暗号化モジュールを有効化してください。",
"Select default encryption module:" : "デフォルトの暗号化モジュールを選択:",
+ "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 {command}" : "暗号化キーを古い暗号化 (ownCloud <= 8.0) から新しい暗号化に移行する必要があります。 \"デフォルトの暗号化モジュール\" を有効にして {command} を実行してください",
+ "Unable to update server side encryption config" : "サーバー側暗号化の設定を更新できませんでした",
"Rename group" : "グループの名称変更",
"Remove group" : "グループを削除",
"You are about to remove the group {group}. The users will NOT be deleted." : "{group}グループを削除しようとしています。 ユーザーは削除されません。",
@@ -260,12 +265,26 @@ OC.L10N.register(
"Current password" : "現在のパスワード",
"New password" : "新しいパスワード",
"Change password" : "パスワードを変更",
+ "Your profile picture" : "プロフィール画像",
+ "Upload profile picture" : "新しいプロフィール画像のアップロード",
+ "Choose profile picture from files" : "ファイルからプロフィール画像を選択",
+ "Remove profile picture" : "プロフィール画像を削除",
"png or jpg, max. 20 MB" : "pngまたはjpg。最大20MB",
"Picture provided by original account" : "オリジナルのアカウントで提供されている写真",
"Cancel" : "キャンセル",
+ "Set as profile picture" : "プロフィール画像として設定",
+ "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "プロフィール写真がすべての場所で更新されるまで、最大 24 時間かかる場合があることに注意してください。",
+ "Choose your profile picture" : "プロフィール画像を選択",
+ "Please select a valid png or jpg file" : "pngもしくは、jpgファイルを選択してください",
+ "Error setting profile picture" : "プロフィール画像に設定できませんでした",
+ "Error cropping profile picture" : "プロフィール画像を切り取れませんでした",
+ "Error saving profile picture" : "プロフィール画像を保存できませんでした",
+ "Error removing profile picture" : "プロフィール画像を削除できませんでした",
"Your biography" : "あなたのプロファイル",
"Details" : "詳細",
"You are a member of the following groups:" : "次のグループに所属:",
+ "You are using <strong>{usage}</strong>" : "<strong>{usage}</strong>使用中です",
+ "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "<strong>{totalSpace}</strong> (<strong>{usageRelative}</strong>) のうち<strong>{usage}</strong>を使用しています",
"Your full name" : "フルネーム",
"Email options" : "メールのオプション",
"Primary email for password reset and notifications" : "パスワードのリセットや通知のための基本メールアドレス",
@@ -289,6 +308,10 @@ OC.L10N.register(
"Unable to update language" : "言語設定を更新できませんでした",
"No language set" : "言語設定なし",
"Locale" : "ロケール",
+ "Week starts on {firstDayOfWeek}" : "週の始まりは{firstDayOfWeek}です。",
+ "Unable to update locale" : "ロケールを更新できませんでした",
+ "No locale set" : "ロケールは未設定",
+ "Your location" : "位置情報",
"Your organisation" : "あなたの組織",
"Your phone number" : "あなたの電話番号",
"Edit your Profile visibility" : "プロフィールの公開範囲を変更",
@@ -300,6 +323,11 @@ OC.L10N.register(
"Your role" : "あなたの役",
"Your Twitter handle" : "あなたのTwitterのID",
"Your website" : "あなたの個人ウェブサイト",
+ "No {property} set" : "{property} は未設定",
+ "Unable to update {property}" : "{property}を更新できませんでした",
+ "Change scope level of {property}, current scope is {scope}" : "{property}の公開範囲を変更、現在の公開範囲は{scope}です",
+ "Unable to update federation scope of the primary {property}" : "プライマリー{property}のフェデレーションスコープを更新できませんでした",
+ "Unable to update federation scope of additional {property}" : "追加の{property}のフェデレーションスコープを更新できませんでした",
"Add additional email" : "その他メールアドレスを追加",
"Add" : "追加",
"You do not have permissions to see the details of this user" : "このユーザーの詳細を表示する権限がありません",
@@ -389,6 +417,7 @@ OC.L10N.register(
"Website" : "ウェブサイト",
"Profile visibility" : "プロフィールの公開範囲",
"Not available as this property is required for core functionality including file sharing and calendar invitations" : "このプロパティは、ファイル共有やカレンダーへの招待などのコア機能に必要なため、使用できません",
+ "Not available as federation has been disabled for your account, contact your system administrator if you have any questions" : "お客様のアカウントでフェデレーションが無効になっているため利用できません。不明な点がある場合は、システム管理者にお問い合わせください",
"Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "ユーザー固有のデータをルックアップサーバーに公開することは許可されていないため、利用できません。ご不明な点がある場合は、システム管理者にお問い合わせください",
"Show to everyone" : "全員に見せる",
"Show to logged in users only" : "ログインしているユーザーだけに見せる",
diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json
index 36cf89266ae..a33a1916b2b 100644
--- a/apps/settings/l10n/ja.json
+++ b/apps/settings/l10n/ja.json
@@ -54,6 +54,7 @@
"Unable to change personal password" : "個人パスワードを変更できません",
"Saved" : "保存しました",
"No user supplied" : "ユーザーが指定されていません",
+ "Unable to change password. Password too long." : "パスワードを変更できません。パスワードが長すぎます。",
"Authentication error" : "認証エラー",
"Please provide an admin recovery password; otherwise, all user data will be lost." : "リカバリ用の管理者パスワードを入力してください。そうしないと、全ユーザーのデータが失われます。",
"Wrong admin recovery password. Please check the password and try again." : "リカバリ用の管理者パスワードが間違っています。パスワードを確認して再度実行してください。",
@@ -119,6 +120,7 @@
"Basic settings" : "基本設定",
"Sharing" : "共有",
"Availability" : "応対可能日時",
+ "Calendar" : "カレンダー",
"Personal info" : "個人情報",
"Mobile & desktop" : "モバイル & デスクトップ",
"Email server" : "メールサーバー",
@@ -244,6 +246,7 @@
"Server-side encryption" : "サーバーサイド暗号化",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "サーバーサイド暗号化では、このサーバーにアップロードされるファイルを暗号化することができます。この設定を行うとパフォーマンス劣化のような制限を伴いますので、必要な場合のみ有効にしてください。",
"Enable server-side encryption" : "サーバーサイド暗号化を有効にする",
+ "Please read carefully before activating server-side encryption:" : "サーバー側の暗号化を適用にする前に、よくお読みください:",
"Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "いったん暗号化を有効にすると、この時点からサーバーにアップロードされるすべてのファイルが暗号化されサーバー上に入ります。有効化された暗号モジュールは復号化機能をサポートしますが、すべての前提条件が満たされている(例えば、回復キーが設定されている)場合にのみ、後日暗号化を無効にできます。",
"Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "暗号化だけで、システムのセキュリティが保証されるわけではありません。暗号化アプリがどのように動作するかの詳細な情報や、サポートされているユースケースについては、Nextcloud のドキュメントを参照してください。",
"Be aware that encryption always increases the file size." : "暗号化は、常にファイルサイズが増加することに注意してください。",
@@ -251,6 +254,8 @@
"This is the final warning: Do you really want to enable encryption?" : "これが最後の警告です:本当に暗号化を有効にしますか?",
"No encryption module loaded, please enable an encryption module in the app menu." : "暗号化モジュールがロードされていません。アプリのメニューから暗号化モジュールを有効化してください。",
"Select default encryption module:" : "デフォルトの暗号化モジュールを選択:",
+ "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 {command}" : "暗号化キーを古い暗号化 (ownCloud <= 8.0) から新しい暗号化に移行する必要があります。 \"デフォルトの暗号化モジュール\" を有効にして {command} を実行してください",
+ "Unable to update server side encryption config" : "サーバー側暗号化の設定を更新できませんでした",
"Rename group" : "グループの名称変更",
"Remove group" : "グループを削除",
"You are about to remove the group {group}. The users will NOT be deleted." : "{group}グループを削除しようとしています。 ユーザーは削除されません。",
@@ -258,12 +263,26 @@
"Current password" : "現在のパスワード",
"New password" : "新しいパスワード",
"Change password" : "パスワードを変更",
+ "Your profile picture" : "プロフィール画像",
+ "Upload profile picture" : "新しいプロフィール画像のアップロード",
+ "Choose profile picture from files" : "ファイルからプロフィール画像を選択",
+ "Remove profile picture" : "プロフィール画像を削除",
"png or jpg, max. 20 MB" : "pngまたはjpg。最大20MB",
"Picture provided by original account" : "オリジナルのアカウントで提供されている写真",
"Cancel" : "キャンセル",
+ "Set as profile picture" : "プロフィール画像として設定",
+ "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "プロフィール写真がすべての場所で更新されるまで、最大 24 時間かかる場合があることに注意してください。",
+ "Choose your profile picture" : "プロフィール画像を選択",
+ "Please select a valid png or jpg file" : "pngもしくは、jpgファイルを選択してください",
+ "Error setting profile picture" : "プロフィール画像に設定できませんでした",
+ "Error cropping profile picture" : "プロフィール画像を切り取れませんでした",
+ "Error saving profile picture" : "プロフィール画像を保存できませんでした",
+ "Error removing profile picture" : "プロフィール画像を削除できませんでした",
"Your biography" : "あなたのプロファイル",
"Details" : "詳細",
"You are a member of the following groups:" : "次のグループに所属:",
+ "You are using <strong>{usage}</strong>" : "<strong>{usage}</strong>使用中です",
+ "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "<strong>{totalSpace}</strong> (<strong>{usageRelative}</strong>) のうち<strong>{usage}</strong>を使用しています",
"Your full name" : "フルネーム",
"Email options" : "メールのオプション",
"Primary email for password reset and notifications" : "パスワードのリセットや通知のための基本メールアドレス",
@@ -287,6 +306,10 @@
"Unable to update language" : "言語設定を更新できませんでした",
"No language set" : "言語設定なし",
"Locale" : "ロケール",
+ "Week starts on {firstDayOfWeek}" : "週の始まりは{firstDayOfWeek}です。",
+ "Unable to update locale" : "ロケールを更新できませんでした",
+ "No locale set" : "ロケールは未設定",
+ "Your location" : "位置情報",
"Your organisation" : "あなたの組織",
"Your phone number" : "あなたの電話番号",
"Edit your Profile visibility" : "プロフィールの公開範囲を変更",
@@ -298,6 +321,11 @@
"Your role" : "あなたの役",
"Your Twitter handle" : "あなたのTwitterのID",
"Your website" : "あなたの個人ウェブサイト",
+ "No {property} set" : "{property} は未設定",
+ "Unable to update {property}" : "{property}を更新できませんでした",
+ "Change scope level of {property}, current scope is {scope}" : "{property}の公開範囲を変更、現在の公開範囲は{scope}です",
+ "Unable to update federation scope of the primary {property}" : "プライマリー{property}のフェデレーションスコープを更新できませんでした",
+ "Unable to update federation scope of additional {property}" : "追加の{property}のフェデレーションスコープを更新できませんでした",
"Add additional email" : "その他メールアドレスを追加",
"Add" : "追加",
"You do not have permissions to see the details of this user" : "このユーザーの詳細を表示する権限がありません",
@@ -387,6 +415,7 @@
"Website" : "ウェブサイト",
"Profile visibility" : "プロフィールの公開範囲",
"Not available as this property is required for core functionality including file sharing and calendar invitations" : "このプロパティは、ファイル共有やカレンダーへの招待などのコア機能に必要なため、使用できません",
+ "Not available as federation has been disabled for your account, contact your system administrator if you have any questions" : "お客様のアカウントでフェデレーションが無効になっているため利用できません。不明な点がある場合は、システム管理者にお問い合わせください",
"Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "ユーザー固有のデータをルックアップサーバーに公開することは許可されていないため、利用できません。ご不明な点がある場合は、システム管理者にお問い合わせください",
"Show to everyone" : "全員に見せる",
"Show to logged in users only" : "ログインしているユーザーだけに見せる",
diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js
index ac3e6f57900..92745345582 100644
--- a/apps/settings/l10n/ka_GE.js
+++ b/apps/settings/l10n/ka_GE.js
@@ -71,6 +71,7 @@ OC.L10N.register(
"Overview" : "ზოგადი მიმოხილვა",
"Basic settings" : "ძირითადი პარამეტრები",
"Sharing" : "გაზიარება",
+ "Calendar" : "კალენდარი",
"Personal info" : "პირადი ინფორმაცია",
"Mobile & desktop" : "მობილური და დესკტოპი",
"Email server" : "საფოსტო სერვერი",
diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json
index 4644cbeda9c..05248732eec 100644
--- a/apps/settings/l10n/ka_GE.json
+++ b/apps/settings/l10n/ka_GE.json
@@ -69,6 +69,7 @@
"Overview" : "ზოგადი მიმოხილვა",
"Basic settings" : "ძირითადი პარამეტრები",
"Sharing" : "გაზიარება",
+ "Calendar" : "კალენდარი",
"Personal info" : "პირადი ინფორმაცია",
"Mobile & desktop" : "მობილური და დესკტოპი",
"Email server" : "საფოსტო სერვერი",
diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js
index 96dfdc67bbf..8de44a90a03 100644
--- a/apps/settings/l10n/ko.js
+++ b/apps/settings/l10n/ko.js
@@ -121,6 +121,7 @@ OC.L10N.register(
"Basic settings" : "기본 설정",
"Sharing" : "공유",
"Availability" : "가능한 시간대",
+ "Calendar" : "달력",
"Personal info" : "개인 정보",
"Mobile & desktop" : "모바일 & 데스크톱",
"Email server" : "이메일 서버",
diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json
index e0352152ed4..369fab5ff0e 100644
--- a/apps/settings/l10n/ko.json
+++ b/apps/settings/l10n/ko.json
@@ -119,6 +119,7 @@
"Basic settings" : "기본 설정",
"Sharing" : "공유",
"Availability" : "가능한 시간대",
+ "Calendar" : "달력",
"Personal info" : "개인 정보",
"Mobile & desktop" : "모바일 & 데스크톱",
"Email server" : "이메일 서버",
diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js
index 73cd2dfed58..9cf41a63d74 100644
--- a/apps/settings/l10n/lt_LT.js
+++ b/apps/settings/l10n/lt_LT.js
@@ -113,6 +113,7 @@ OC.L10N.register(
"Basic settings" : "Pagrindiniai nustatymai",
"Sharing" : "Bendrinimas",
"Availability" : "Pasiekiamumas",
+ "Calendar" : "Kalendorius",
"Personal info" : "Asmeninė informacija",
"Mobile & desktop" : "Mobilieji ir darbalaukiai",
"Email server" : "El. pašto serveris",
diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json
index 2aa23344d15..91396565c47 100644
--- a/apps/settings/l10n/lt_LT.json
+++ b/apps/settings/l10n/lt_LT.json
@@ -111,6 +111,7 @@
"Basic settings" : "Pagrindiniai nustatymai",
"Sharing" : "Bendrinimas",
"Availability" : "Pasiekiamumas",
+ "Calendar" : "Kalendorius",
"Personal info" : "Asmeninė informacija",
"Mobile & desktop" : "Mobilieji ir darbalaukiai",
"Email server" : "El. pašto serveris",
diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js
index 76b78c57da7..338e22deec8 100644
--- a/apps/settings/l10n/lv.js
+++ b/apps/settings/l10n/lv.js
@@ -32,9 +32,12 @@ OC.L10N.register(
"Apps" : "Lietotnes",
"Settings" : "Iestatījumi",
"Personal" : "Personīgs",
+ "Administration" : "Administrēšana",
"Additional settings" : "Papildu iestatījumi",
+ "Administration privileges" : "Administrēšanas privilēģijas",
"Sharing" : "Koplietošana",
"Availability" : "Pieejamība",
+ "Calendar" : "Kalendārs",
"Personal info" : "Personiskā informācija",
"Email server" : "E-pasta serveris",
"Security & setup warnings" : "Drošības un iestatījumu brīdinājumi",
@@ -42,6 +45,7 @@ OC.L10N.register(
"Change" : "Mainīt",
"Delete" : "Dzēst",
"Unlimited" : "Neierobežota",
+ "Nextcloud settings" : "Nextcloud iestatījumi",
"None" : "Nav",
"Limit to groups" : "Grupu ierobežojums",
"Save changes" : "Saglabāt izmaiņas",
@@ -56,6 +60,7 @@ OC.L10N.register(
"Admin documentation" : "Administratora dokumentācija",
"Developer documentation" : "Izstrādātāja dokumentācija",
"No apps found for your version" : "Neatrada lietotnes jūsu versijai",
+ "Device settings" : "Ierīces iestatījumi",
"Rename" : "Pārsaukt",
"Revoke" : "Atsaukt",
"Internet Explorer" : "Internet Explorer",
diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json
index f86c45411ea..869e60ccc63 100644
--- a/apps/settings/l10n/lv.json
+++ b/apps/settings/l10n/lv.json
@@ -30,9 +30,12 @@
"Apps" : "Lietotnes",
"Settings" : "Iestatījumi",
"Personal" : "Personīgs",
+ "Administration" : "Administrēšana",
"Additional settings" : "Papildu iestatījumi",
+ "Administration privileges" : "Administrēšanas privilēģijas",
"Sharing" : "Koplietošana",
"Availability" : "Pieejamība",
+ "Calendar" : "Kalendārs",
"Personal info" : "Personiskā informācija",
"Email server" : "E-pasta serveris",
"Security & setup warnings" : "Drošības un iestatījumu brīdinājumi",
@@ -40,6 +43,7 @@
"Change" : "Mainīt",
"Delete" : "Dzēst",
"Unlimited" : "Neierobežota",
+ "Nextcloud settings" : "Nextcloud iestatījumi",
"None" : "Nav",
"Limit to groups" : "Grupu ierobežojums",
"Save changes" : "Saglabāt izmaiņas",
@@ -54,6 +58,7 @@
"Admin documentation" : "Administratora dokumentācija",
"Developer documentation" : "Izstrādātāja dokumentācija",
"No apps found for your version" : "Neatrada lietotnes jūsu versijai",
+ "Device settings" : "Ierīces iestatījumi",
"Rename" : "Pārsaukt",
"Revoke" : "Atsaukt",
"Internet Explorer" : "Internet Explorer",
diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js
index dd2e978d9ee..4b4043c521c 100644
--- a/apps/settings/l10n/mk.js
+++ b/apps/settings/l10n/mk.js
@@ -117,6 +117,7 @@ OC.L10N.register(
"Basic settings" : "Основни параметри",
"Sharing" : "Споделување",
"Availability" : "Достапност",
+ "Calendar" : "Календар",
"Personal info" : "Лични податоци",
"Mobile & desktop" : "Мобилен & компјутер",
"Email server" : "Сервер за е-пошта",
diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json
index fedc9d26fea..83af21f8d0f 100644
--- a/apps/settings/l10n/mk.json
+++ b/apps/settings/l10n/mk.json
@@ -115,6 +115,7 @@
"Basic settings" : "Основни параметри",
"Sharing" : "Споделување",
"Availability" : "Достапност",
+ "Calendar" : "Календар",
"Personal info" : "Лични податоци",
"Mobile & desktop" : "Мобилен & компјутер",
"Email server" : "Сервер за е-пошта",
diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js
index d23963ba7ef..66868b09c08 100644
--- a/apps/settings/l10n/nb.js
+++ b/apps/settings/l10n/nb.js
@@ -99,6 +99,7 @@ OC.L10N.register(
"Overview" : "Oversikt",
"Basic settings" : "Grunninnstillinger",
"Sharing" : "Deling",
+ "Calendar" : "Kalender",
"Personal info" : "Personlig informasjon",
"Mobile & desktop" : "Mobil og skrivebord",
"Email server" : "E-postserver",
diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json
index 5cab71e91be..9ca56908f20 100644
--- a/apps/settings/l10n/nb.json
+++ b/apps/settings/l10n/nb.json
@@ -97,6 +97,7 @@
"Overview" : "Oversikt",
"Basic settings" : "Grunninnstillinger",
"Sharing" : "Deling",
+ "Calendar" : "Kalender",
"Personal info" : "Personlig informasjon",
"Mobile & desktop" : "Mobil og skrivebord",
"Email server" : "E-postserver",
diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js
index 33d018026a7..098c660d58e 100644
--- a/apps/settings/l10n/nl.js
+++ b/apps/settings/l10n/nl.js
@@ -113,6 +113,7 @@ OC.L10N.register(
"Basic settings" : "Basis-instellingen",
"Sharing" : "Delen",
"Availability" : "Beschikbaarheid",
+ "Calendar" : "Agenda",
"Personal info" : "Persoonlijke info",
"Mobile & desktop" : "Mobiel & desktop",
"Email server" : "E-mailserver",
diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json
index 97cfa3856c3..f9f4a925933 100644
--- a/apps/settings/l10n/nl.json
+++ b/apps/settings/l10n/nl.json
@@ -111,6 +111,7 @@
"Basic settings" : "Basis-instellingen",
"Sharing" : "Delen",
"Availability" : "Beschikbaarheid",
+ "Calendar" : "Agenda",
"Personal info" : "Persoonlijke info",
"Mobile & desktop" : "Mobiel & desktop",
"Email server" : "E-mailserver",
diff --git a/apps/settings/l10n/nn_NO.js b/apps/settings/l10n/nn_NO.js
index 835daefc37d..187ba2df519 100644
--- a/apps/settings/l10n/nn_NO.js
+++ b/apps/settings/l10n/nn_NO.js
@@ -34,6 +34,7 @@ OC.L10N.register(
"Additional settings" : "Tilleggsinnstillingar",
"Overview" : "Oversyn",
"Sharing" : "Deling",
+ "Calendar" : "Kalendar",
"Personal info" : "Personleg informasjon",
"Email server" : "E-postserver",
"Create" : "Lag",
diff --git a/apps/settings/l10n/nn_NO.json b/apps/settings/l10n/nn_NO.json
index 8a53596581a..af1d95e7c5c 100644
--- a/apps/settings/l10n/nn_NO.json
+++ b/apps/settings/l10n/nn_NO.json
@@ -32,6 +32,7 @@
"Additional settings" : "Tilleggsinnstillingar",
"Overview" : "Oversyn",
"Sharing" : "Deling",
+ "Calendar" : "Kalendar",
"Personal info" : "Personleg informasjon",
"Email server" : "E-postserver",
"Create" : "Lag",
diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js
index 3476ebebd27..2d02b1d3f05 100644
--- a/apps/settings/l10n/oc.js
+++ b/apps/settings/l10n/oc.js
@@ -63,6 +63,7 @@ OC.L10N.register(
"Basic settings" : "Paramètres de basa",
"Sharing" : "Partiment",
"Availability" : "Disponibilitat",
+ "Calendar" : "Calendièr",
"Personal info" : "Info personalas",
"Mobile & desktop" : "Mobile e burèu",
"Email server" : "Servidor email",
diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json
index 1e93272b0e1..f5a64ce40ab 100644
--- a/apps/settings/l10n/oc.json
+++ b/apps/settings/l10n/oc.json
@@ -61,6 +61,7 @@
"Basic settings" : "Paramètres de basa",
"Sharing" : "Partiment",
"Availability" : "Disponibilitat",
+ "Calendar" : "Calendièr",
"Personal info" : "Info personalas",
"Mobile & desktop" : "Mobile e burèu",
"Email server" : "Servidor email",
diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js
index aa2af3b84b9..3373a2a7d5f 100644
--- a/apps/settings/l10n/pl.js
+++ b/apps/settings/l10n/pl.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
"Availability" : "Dostępność",
+ "Calendar" : "Kalendarz",
"Personal info" : "Informacje osobiste",
"Mobile & desktop" : "Mobilne i stacjonarne",
"Email server" : "Serwer poczty",
diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json
index 6bbf624de8b..a4f285e6d80 100644
--- a/apps/settings/l10n/pl.json
+++ b/apps/settings/l10n/pl.json
@@ -120,6 +120,7 @@
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
"Availability" : "Dostępność",
+ "Calendar" : "Kalendarz",
"Personal info" : "Informacje osobiste",
"Mobile & desktop" : "Mobilne i stacjonarne",
"Email server" : "Serwer poczty",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index 987a886d530..3511ca119b6 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Configurações básicas",
"Sharing" : "Compartilhamento",
"Availability" : "Disponibilidade",
+ "Calendar" : "Calendário",
"Personal info" : "Informação pessoal",
"Mobile & desktop" : "Móvel & desktop",
"Email server" : "Servidor de e-mail",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index 59bf87966b9..a49f29915a3 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -120,6 +120,7 @@
"Basic settings" : "Configurações básicas",
"Sharing" : "Compartilhamento",
"Availability" : "Disponibilidade",
+ "Calendar" : "Calendário",
"Personal info" : "Informação pessoal",
"Mobile & desktop" : "Móvel & desktop",
"Email server" : "Servidor de e-mail",
diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js
index 208627da0cc..f50ef1b41cc 100644
--- a/apps/settings/l10n/pt_PT.js
+++ b/apps/settings/l10n/pt_PT.js
@@ -75,6 +75,7 @@ OC.L10N.register(
"Overview" : "Visão Geral",
"Basic settings" : "Definições básicas",
"Sharing" : "Partilha",
+ "Calendar" : "Calendário",
"Personal info" : "Informação pessoal",
"Email server" : "Servidor de Correio Eletrónico",
"Security & setup warnings" : "Avisos de configuração e segurança",
diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json
index 67688631734..7a6e78da88c 100644
--- a/apps/settings/l10n/pt_PT.json
+++ b/apps/settings/l10n/pt_PT.json
@@ -73,6 +73,7 @@
"Overview" : "Visão Geral",
"Basic settings" : "Definições básicas",
"Sharing" : "Partilha",
+ "Calendar" : "Calendário",
"Personal info" : "Informação pessoal",
"Email server" : "Servidor de Correio Eletrónico",
"Security & setup warnings" : "Avisos de configuração e segurança",
diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js
index 3ae822bc6e3..6d34ee8871e 100644
--- a/apps/settings/l10n/ro.js
+++ b/apps/settings/l10n/ro.js
@@ -102,6 +102,7 @@ OC.L10N.register(
"Overview" : "Prezentare generală",
"Basic settings" : "Setări de bază",
"Sharing" : "Partajare",
+ "Calendar" : "Calendar",
"Personal info" : "Informații personale",
"Mobile & desktop" : "Mobil și desktop",
"Email server" : "Server de email",
diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json
index 2febc844edc..dbbb1f2abd8 100644
--- a/apps/settings/l10n/ro.json
+++ b/apps/settings/l10n/ro.json
@@ -100,6 +100,7 @@
"Overview" : "Prezentare generală",
"Basic settings" : "Setări de bază",
"Sharing" : "Partajare",
+ "Calendar" : "Calendar",
"Personal info" : "Informații personale",
"Mobile & desktop" : "Mobil și desktop",
"Email server" : "Server de email",
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index dcba2846795..caf147825f7 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Основные параметры",
"Sharing" : "Параметры публикации",
"Availability" : "Доступность",
+ "Calendar" : "Календарь",
"Personal info" : "Личная информация",
"Mobile & desktop" : "Клиенты для ПК и мобильных устройств",
"Email server" : "Почтовый сервер",
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index 3c71d4f754b..d8edbcb8b1a 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -120,6 +120,7 @@
"Basic settings" : "Основные параметры",
"Sharing" : "Параметры публикации",
"Availability" : "Доступность",
+ "Calendar" : "Календарь",
"Personal info" : "Личная информация",
"Mobile & desktop" : "Клиенты для ПК и мобильных устройств",
"Email server" : "Почтовый сервер",
diff --git a/apps/settings/l10n/sc.js b/apps/settings/l10n/sc.js
index 740323ecbc1..a067c0f50e9 100644
--- a/apps/settings/l10n/sc.js
+++ b/apps/settings/l10n/sc.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"Overview" : "Panoràmica",
"Basic settings" : "Impostatziones de base",
"Sharing" : "Cumpartzidura",
+ "Calendar" : "Calendàriu",
"Personal info" : "Informatziones personales",
"Mobile & desktop" : "Mòbile e de iscrivania",
"Email server" : "Serbidore posta eletrònica",
diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json
index 4fc00a13f1f..f4d0a2939c5 100644
--- a/apps/settings/l10n/sc.json
+++ b/apps/settings/l10n/sc.json
@@ -102,6 +102,7 @@
"Overview" : "Panoràmica",
"Basic settings" : "Impostatziones de base",
"Sharing" : "Cumpartzidura",
+ "Calendar" : "Calendàriu",
"Personal info" : "Informatziones personales",
"Mobile & desktop" : "Mòbile e de iscrivania",
"Email server" : "Serbidore posta eletrònica",
diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js
index 8423b5eb4a4..07e91155847 100644
--- a/apps/settings/l10n/sk.js
+++ b/apps/settings/l10n/sk.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Základné nastavenia",
"Sharing" : "Sprístupňovanie",
"Availability" : "Dostupnosť",
+ "Calendar" : "Kalendár",
"Personal info" : "Osobné informácie",
"Mobile & desktop" : "Mobil a počítač",
"Email server" : "Email server",
diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json
index 2006d394785..3a46888fdfe 100644
--- a/apps/settings/l10n/sk.json
+++ b/apps/settings/l10n/sk.json
@@ -120,6 +120,7 @@
"Basic settings" : "Základné nastavenia",
"Sharing" : "Sprístupňovanie",
"Availability" : "Dostupnosť",
+ "Calendar" : "Kalendár",
"Personal info" : "Osobné informácie",
"Mobile & desktop" : "Mobil a počítač",
"Email server" : "Email server",
diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js
index c1e3941cc61..7f78e1b9d35 100644
--- a/apps/settings/l10n/sl.js
+++ b/apps/settings/l10n/sl.js
@@ -105,6 +105,7 @@ OC.L10N.register(
"Basic settings" : "Osnovne nastavitve",
"Sharing" : "Souporaba",
"Availability" : "Razpoložljivost",
+ "Calendar" : "Koledar",
"Personal info" : "Osebni podatki",
"Mobile & desktop" : "Mobilni in namizni dostop",
"Email server" : "Poštni strežnik",
diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json
index ae0d2686d00..ad306368256 100644
--- a/apps/settings/l10n/sl.json
+++ b/apps/settings/l10n/sl.json
@@ -103,6 +103,7 @@
"Basic settings" : "Osnovne nastavitve",
"Sharing" : "Souporaba",
"Availability" : "Razpoložljivost",
+ "Calendar" : "Koledar",
"Personal info" : "Osebni podatki",
"Mobile & desktop" : "Mobilni in namizni dostop",
"Email server" : "Poštni strežnik",
diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js
index 6a37b89cdd1..1fd37dec143 100644
--- a/apps/settings/l10n/sq.js
+++ b/apps/settings/l10n/sq.js
@@ -67,6 +67,7 @@ OC.L10N.register(
"Additional settings" : "Konfigurime shtesë",
"Basic settings" : "Konfigurime bazike",
"Sharing" : "Ndarje me të tjerët",
+ "Calendar" : "Kalendar",
"Personal info" : "Informacion personal",
"Email server" : "Shërbyes email-esh",
"Security & setup warnings" : "Sinjalizime sigurie & rregullimi",
diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json
index 52a69c8cae0..f1968a54517 100644
--- a/apps/settings/l10n/sq.json
+++ b/apps/settings/l10n/sq.json
@@ -65,6 +65,7 @@
"Additional settings" : "Konfigurime shtesë",
"Basic settings" : "Konfigurime bazike",
"Sharing" : "Ndarje me të tjerët",
+ "Calendar" : "Kalendar",
"Personal info" : "Informacion personal",
"Email server" : "Shërbyes email-esh",
"Security & setup warnings" : "Sinjalizime sigurie & rregullimi",
diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js
index b63a4e64309..c6fcb745e8d 100644
--- a/apps/settings/l10n/sr.js
+++ b/apps/settings/l10n/sr.js
@@ -97,6 +97,7 @@ OC.L10N.register(
"Overview" : "Преглед",
"Basic settings" : "Основне поставке",
"Sharing" : "Дељење",
+ "Calendar" : "Календар",
"Personal info" : "Лични подаци",
"Mobile & desktop" : "Мобилни и десктоп",
"Email server" : "Сервер е-поште",
diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json
index 0c3467b67fa..465f82633b5 100644
--- a/apps/settings/l10n/sr.json
+++ b/apps/settings/l10n/sr.json
@@ -95,6 +95,7 @@
"Overview" : "Преглед",
"Basic settings" : "Основне поставке",
"Sharing" : "Дељење",
+ "Calendar" : "Календар",
"Personal info" : "Лични подаци",
"Mobile & desktop" : "Мобилни и десктоп",
"Email server" : "Сервер е-поште",
diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js
index fa4b3412343..09aeaae078b 100644
--- a/apps/settings/l10n/sv.js
+++ b/apps/settings/l10n/sv.js
@@ -106,6 +106,7 @@ OC.L10N.register(
"Basic settings" : "Generella inställningar",
"Sharing" : "Dela",
"Availability" : "Tillgänglighet",
+ "Calendar" : "Kalender",
"Personal info" : "Personlig information",
"Mobile & desktop" : "Mobil & skrivbord",
"Email server" : "E-postserver",
diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json
index 19c4adda6e6..6b4b39e8b80 100644
--- a/apps/settings/l10n/sv.json
+++ b/apps/settings/l10n/sv.json
@@ -104,6 +104,7 @@
"Basic settings" : "Generella inställningar",
"Sharing" : "Dela",
"Availability" : "Tillgänglighet",
+ "Calendar" : "Kalender",
"Personal info" : "Personlig information",
"Mobile & desktop" : "Mobil & skrivbord",
"Email server" : "E-postserver",
diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js
index b7da6dc43e4..875cd8c21d8 100644
--- a/apps/settings/l10n/th.js
+++ b/apps/settings/l10n/th.js
@@ -66,6 +66,7 @@ OC.L10N.register(
"Settings" : "การตั้งค่า",
"Personal" : "ส่วนตัว",
"Sharing" : "การแชร์",
+ "Calendar" : "ปฏิทิน",
"Personal info" : "ข้อมูลส่วนบุคคล",
"Email server" : "เซิร์ฟเวอร์อีเมล",
"Security & setup warnings" : "คำเตือนความปลอดภัยและการติดตั้ง",
diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json
index 913c45cc091..622a4f12b58 100644
--- a/apps/settings/l10n/th.json
+++ b/apps/settings/l10n/th.json
@@ -64,6 +64,7 @@
"Settings" : "การตั้งค่า",
"Personal" : "ส่วนตัว",
"Sharing" : "การแชร์",
+ "Calendar" : "ปฏิทิน",
"Personal info" : "ข้อมูลส่วนบุคคล",
"Email server" : "เซิร์ฟเวอร์อีเมล",
"Security & setup warnings" : "คำเตือนความปลอดภัยและการติดตั้ง",
diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js
index 6014d5886de..e3bf0b81791 100644
--- a/apps/settings/l10n/tr.js
+++ b/apps/settings/l10n/tr.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Temel ayarlar",
"Sharing" : "Paylaşım",
"Availability" : "Kullanılabilirlik",
+ "Calendar" : "Takvim",
"Personal info" : "Kişisel bilgiler",
"Mobile & desktop" : "Mobil ve masaüstü",
"Email server" : "E-posta sunucusu",
diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json
index bae09468d74..f89e3021a01 100644
--- a/apps/settings/l10n/tr.json
+++ b/apps/settings/l10n/tr.json
@@ -120,6 +120,7 @@
"Basic settings" : "Temel ayarlar",
"Sharing" : "Paylaşım",
"Availability" : "Kullanılabilirlik",
+ "Calendar" : "Takvim",
"Personal info" : "Kişisel bilgiler",
"Mobile & desktop" : "Mobil ve masaüstü",
"Email server" : "E-posta sunucusu",
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index 0a9224a45a9..e0a9c8bc9d7 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Основні налаштування",
"Sharing" : "Спільний доступ",
"Availability" : "Доступність",
+ "Calendar" : "Календар",
"Personal info" : "Особиста інформація",
"Mobile & desktop" : "Застосунки для пристроїв",
"Email server" : "Сервер електронної пошти",
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index 728dceacd12..34587a8ac48 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -120,6 +120,7 @@
"Basic settings" : "Основні налаштування",
"Sharing" : "Спільний доступ",
"Availability" : "Доступність",
+ "Calendar" : "Календар",
"Personal info" : "Особиста інформація",
"Mobile & desktop" : "Застосунки для пристроїв",
"Email server" : "Сервер електронної пошти",
diff --git a/apps/settings/l10n/vi.js b/apps/settings/l10n/vi.js
index 10e3083df05..1864e8d9718 100644
--- a/apps/settings/l10n/vi.js
+++ b/apps/settings/l10n/vi.js
@@ -86,6 +86,7 @@ OC.L10N.register(
"Settings" : "Cài đặt",
"Personal" : "Cá nhân",
"Sharing" : "Chia sẻ",
+ "Calendar" : "Lịch",
"Security & setup warnings" : "Bảo mật và thiết lập cảnh báo",
"Background jobs" : "Các công việc trong nền",
"Create" : "Tạo mới",
diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json
index bc8fbfe6a52..8ebe85b7fb9 100644
--- a/apps/settings/l10n/vi.json
+++ b/apps/settings/l10n/vi.json
@@ -84,6 +84,7 @@
"Settings" : "Cài đặt",
"Personal" : "Cá nhân",
"Sharing" : "Chia sẻ",
+ "Calendar" : "Lịch",
"Security & setup warnings" : "Bảo mật và thiết lập cảnh báo",
"Background jobs" : "Các công việc trong nền",
"Create" : "Tạo mới",
diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js
index bf57657c957..1bf122e8c7a 100644
--- a/apps/settings/l10n/zh_CN.js
+++ b/apps/settings/l10n/zh_CN.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "基本设置",
"Sharing" : "共享",
"Availability" : "可用性",
+ "Calendar" : "日历",
"Personal info" : "个人信息",
"Mobile & desktop" : "手机与电脑",
"Email server" : "电子邮件服务器",
diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json
index d49fcdd7806..b210112ffdd 100644
--- a/apps/settings/l10n/zh_CN.json
+++ b/apps/settings/l10n/zh_CN.json
@@ -120,6 +120,7 @@
"Basic settings" : "基本设置",
"Sharing" : "共享",
"Availability" : "可用性",
+ "Calendar" : "日历",
"Personal info" : "个人信息",
"Mobile & desktop" : "手机与电脑",
"Email server" : "电子邮件服务器",
diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js
index f8d04f8ecac..ae7267e3431 100644
--- a/apps/settings/l10n/zh_HK.js
+++ b/apps/settings/l10n/zh_HK.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "基本設定",
"Sharing" : "分享",
"Availability" : "可得性",
+ "Calendar" : "日曆",
"Personal info" : "個人資訊",
"Mobile & desktop" : "手提電話及電腦",
"Email server" : "電郵伺服器",
diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json
index b0117df0020..160d06cfed2 100644
--- a/apps/settings/l10n/zh_HK.json
+++ b/apps/settings/l10n/zh_HK.json
@@ -120,6 +120,7 @@
"Basic settings" : "基本設定",
"Sharing" : "分享",
"Availability" : "可得性",
+ "Calendar" : "日曆",
"Personal info" : "個人資訊",
"Mobile & desktop" : "手提電話及電腦",
"Email server" : "電郵伺服器",
diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js
index 70ae97e9217..e323b8b8c79 100644
--- a/apps/settings/l10n/zh_TW.js
+++ b/apps/settings/l10n/zh_TW.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "基本設定",
"Sharing" : "分享",
"Availability" : "可用性",
+ "Calendar" : "日曆",
"Personal info" : "個人資訊",
"Mobile & desktop" : "行動裝置及桌面",
"Email server" : "電子郵件伺服器",
diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json
index d0f78af2305..526ddc77d9b 100644
--- a/apps/settings/l10n/zh_TW.json
+++ b/apps/settings/l10n/zh_TW.json
@@ -120,6 +120,7 @@
"Basic settings" : "基本設定",
"Sharing" : "分享",
"Availability" : "可用性",
+ "Calendar" : "日曆",
"Personal info" : "個人資訊",
"Mobile & desktop" : "行動裝置及桌面",
"Email server" : "電子郵件伺服器",
diff --git a/apps/settings/lib/Controller/CheckSetupController.php b/apps/settings/lib/Controller/CheckSetupController.php
index c0496369f20..45e94c3b7a7 100644
--- a/apps/settings/lib/Controller/CheckSetupController.php
+++ b/apps/settings/lib/Controller/CheckSetupController.php
@@ -330,7 +330,7 @@ class CheckSetupController extends Controller {
* @return bool
*/
protected function isPhpOutdated(): bool {
- return PHP_VERSION_ID < 70400;
+ return PHP_VERSION_ID < 80000;
}
/**
diff --git a/apps/settings/lib/Sections/Personal/Calendar.php b/apps/settings/lib/Sections/Personal/Calendar.php
new file mode 100644
index 00000000000..3f4f100e121
--- /dev/null
+++ b/apps/settings/lib/Sections/Personal/Calendar.php
@@ -0,0 +1,55 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * Mail
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Settings\Sections\Personal;
+
+use OCP\IL10N;
+use OCP\IURLGenerator;
+use OCP\Settings\IIconSection;
+
+class Calendar implements IIconSection {
+
+ private IL10N $l;
+ private IURLGenerator $urlGenerator;
+
+ public function __construct(IL10N $l, IURLGenerator $urlGenerator) {
+ $this->l = $l;
+ $this->urlGenerator = $urlGenerator;
+ }
+
+ public function getIcon(): string {
+ return $this->urlGenerator->imagePath('core', 'caldav/time.svg');
+ }
+
+ public function getID(): string {
+ return 'calendar';
+ }
+
+ public function getName(): string {
+ return $this->l->t('Calendar');
+ }
+
+ public function getPriority(): int {
+ return 50;
+ }
+}
diff --git a/apps/settings/tests/Mailer/NewUserMailHelperTest.php b/apps/settings/tests/Mailer/NewUserMailHelperTest.php
index 2a9c1ee58ec..252dcfd8057 100644
--- a/apps/settings/tests/Mailer/NewUserMailHelperTest.php
+++ b/apps/settings/tests/Mailer/NewUserMailHelperTest.php
@@ -55,6 +55,8 @@ class NewUserMailHelperTest extends TestCase {
private $urlGenerator;
/** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
private $l10n;
+ /** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */
+ private $l10nFactory;
/** @var IMailer|\PHPUnit\Framework\MockObject\MockObject */
private $mailer;
/** @var ISecureRandom|\PHPUnit\Framework\MockObject\MockObject */
@@ -367,7 +369,9 @@ Set your password: https://example.com/resetPassword/MySuperLongSecureRandomToke
Install Client: https://nextcloud.com/install/#install-clients
---
+EOF;
+ $expectedTextBody .= "\n-- \n";
+ $expectedTextBody .= <<<EOF
TestCloud
This is an automatically sent email, please do not reply.
EOF;
@@ -601,7 +605,9 @@ Go to TestCloud: https://example.com/
Install Client: https://nextcloud.com/install/#install-clients
---
+EOF;
+ $expectedTextBody .= "\n-- \n";
+ $expectedTextBody .= <<<EOF
TestCloud
This is an automatically sent email, please do not reply.
EOF;
@@ -822,7 +828,9 @@ Go to TestCloud: https://example.com/
Install Client: https://nextcloud.com/install/#install-clients
---
+EOF;
+ $expectedTextBody .= "\n-- \n";
+ $expectedTextBody .= <<<EOF
TestCloud
This is an automatically sent email, please do not reply.
EOF;
diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php
index 01dd3b428d1..af3d14b49bc 100644
--- a/apps/sharebymail/lib/ShareByMailProvider.php
+++ b/apps/sharebymail/lib/ShareByMailProvider.php
@@ -1042,8 +1042,8 @@ class ShareByMailProvider implements IShareProvider {
$share->setShareTime($shareTime);
$share->setSharedWith($data['share_with']);
$share->setPassword($data['password']);
- $passwordExpirationTime = \DateTime::createFromFormat('Y-m-d H:i:s', $data['password_expiration_time']);
- $share->setPasswordExpirationTime($passwordExpirationTime !== false? $passwordExpirationTime : null);
+ $passwordExpirationTime = \DateTime::createFromFormat('Y-m-d H:i:s', $data['password_expiration_time'] ?? '');
+ $share->setPasswordExpirationTime($passwordExpirationTime !== false ? $passwordExpirationTime : null);
$share->setLabel($data['label']);
$share->setSendPasswordByTalk((bool)$data['password_by_talk']);
$share->setHideDownload((bool)$data['hide_download']);
@@ -1140,7 +1140,6 @@ class ShareByMailProvider implements IShareProvider {
* @throws ShareNotFound
*/
protected function getRawShare($id) {
-
// Now fetch the inserted share and create a complete share object
$qb = $this->dbConnection->getQueryBuilder();
$qb->select('*')
diff --git a/apps/theming/l10n/de.js b/apps/theming/l10n/de.js
index bfb0b7bab3f..0c7730f2fb8 100644
--- a/apps/theming/l10n/de.js
+++ b/apps/theming/l10n/de.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"The given privacy policy address is not a valid URL" : "Die eingegebene Adresse der Datenschutzerklärung ist keine gültige URL",
"The given slogan is too long" : "Der eingegebene Slogan ist zu lang",
"The given color is invalid" : "Die gewählte Farbe ist ungültig",
+ "Disable-user-theming should be true or false" : "Benutzer-Design deaktivieren sollte wahr oder falsch sein",
"Saved" : "Gespeichert",
"The file was uploaded" : "Die Datei wurde hochgeladen",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
@@ -20,6 +21,8 @@ OC.L10N.register(
"Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden",
"A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt",
"No file uploaded" : "Keine Datei hochgeladen",
+ "Cleanup old theming cache" : "Alten Design-Cache leeren",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "Verzeichnis konnte nicht gelöscht werden: \"%1$s\", Fehler: %2$s",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Du benutzt bereits ein benutzerdefiniertes Design. Die App \"Theming\" würde dies überschreiben.",
"Theming" : "Design",
"Appearance and accessibility" : "Erscheinungsbild und Barrierefreiheit",
@@ -29,7 +32,7 @@ OC.L10N.register(
"Dark theme" : "Dunkles Design",
"Enable dark theme" : "Dunkles Design aktivieren",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Ein dunkles Design zur Entlastung deiner Augen durch Verringerung der Gesamtleuchtkraft und -helligkeit.",
- "System default theme" : "Design des Systemstandards",
+ "System default theme" : "Standard-Design des Systems",
"Enable the system default" : "Systemstandard aktivieren",
"Using the default system appearance." : "Das Erscheinungsbild des Systemstandards verwenden",
"Dyslexia font" : "Legasthenie-Schriftart",
@@ -46,6 +49,7 @@ OC.L10N.register(
"Adjust the Nextcloud theme" : "Passe das Design von Nextcloud an",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Das Ändern des Designs ermöglicht es auf einfache Weise das Aussehen deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.",
"Advanced options" : "Erweiterte Optionen",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die ImageMagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favicons auf Basis des hochgeladenen Logos und der Farbe zu erstellen.",
"Name" : "Name",
"Web link" : "Internet-Link",
"a safe home for all your data" : "Ein sicheres Zuhause für deine Daten",
@@ -53,16 +57,23 @@ OC.L10N.register(
"Color" : "Farbe",
"Logo" : "Logo",
"Upload new logo" : "Neues Logo hochladen",
+ "Background and login image" : "Hintergrund und Login-Bild",
+ "Upload new background and login image" : "Ein neues Hintergrund- und Anmeldebild hochladen",
"Legal notice link" : "Link zum Impressum",
"Privacy policy link" : "Link zur Datenschutzerklärung",
"Header logo" : "Kopfbereichs-Logo",
- "Upload new header logo" : "Neues Kopfbereichs-Logo hochladen",
+ "Upload new header logo" : "Neues Logo für den Kopfbereich hochladen",
"Favicon" : "Favicon",
"Upload new favicon" : "Neues Favicon hochladen",
"User settings" : "Benutzer-Einstellungen",
+ "Disable user theming" : "Benutzer-Design deaktivieren",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Obwohl du deine Instanz auswählen und anpassen kannst, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn du deine Anpassung erzwingen möchtest, kannst du dies einschalten.",
"Keyboard shortcuts" : "Tastaturkürzel",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Barrierefreiheits-Tools beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.",
+ "Disable all keyboard shortcuts" : "Alle Tastenkombinationen deaktivieren",
"Background" : "Hintergrund",
- "Customization has been disabled by your administrator" : "Die Einstellung wurde von deinem Administrator deaktiviert.",
+ "Customization has been disabled by your administrator" : "Das Ändern der Einstellungen wurde von deinem Administrator deaktiviert.",
+ "Set a custom background" : "Einen benutzerdefinierten Hintergrund setzen",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Der unbeschränkte Zugang ist für uns sehr wichtig. Wir halten uns an Webstandards und prüfen, ob alles auch ohne Maus und unterstützende Software wie Screenreader nutzbar ist. Wir streben die Einhaltung der {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 auf AA-Niveau an, mit dem kontrastreichen Design sogar auf AAA-Niveau.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!",
"Pick from Files" : "Aus Dateien auswählen",
@@ -71,7 +82,9 @@ OC.L10N.register(
"Plain background" : "Einfacher Hintergrund",
"Insert from {productName}" : "Von {productName} einfügen",
"Theme selection is enforced" : "Designauswahl wird erzwungen",
+ "Select a custom color" : "Eine benutzerdefinierte Farbe auswählen",
"Reset to default" : " Auf Standard zurücksetzen ",
+ "Upload" : "Hochladen",
"Remove background image" : "Hintergrundbild entfernen",
"Loading preview…" : "Lade Vorschau…",
"Admin" : "Administrator",
@@ -82,6 +95,7 @@ OC.L10N.register(
"Login image" : "Anmeldebild",
"Upload new login background" : "Neuen Anmelde-Hintergrund hochladen",
"Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die Imagemagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favicons auf Basis des hochgeladenen Logos und der Farbe zu erstellen.",
- "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert."
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Obwohl du deine Instanz auswählen und anpassen kannst, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn du ihre Anpassung erzwingen möchtest, kannst du dieses Kontrollkästchen aktivieren."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/theming/l10n/de.json b/apps/theming/l10n/de.json
index 6819e72fe15..54f7c9d04f4 100644
--- a/apps/theming/l10n/de.json
+++ b/apps/theming/l10n/de.json
@@ -8,6 +8,7 @@
"The given privacy policy address is not a valid URL" : "Die eingegebene Adresse der Datenschutzerklärung ist keine gültige URL",
"The given slogan is too long" : "Der eingegebene Slogan ist zu lang",
"The given color is invalid" : "Die gewählte Farbe ist ungültig",
+ "Disable-user-theming should be true or false" : "Benutzer-Design deaktivieren sollte wahr oder falsch sein",
"Saved" : "Gespeichert",
"The file was uploaded" : "Die Datei wurde hochgeladen",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
@@ -18,6 +19,8 @@
"Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden",
"A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt",
"No file uploaded" : "Keine Datei hochgeladen",
+ "Cleanup old theming cache" : "Alten Design-Cache leeren",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "Verzeichnis konnte nicht gelöscht werden: \"%1$s\", Fehler: %2$s",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Du benutzt bereits ein benutzerdefiniertes Design. Die App \"Theming\" würde dies überschreiben.",
"Theming" : "Design",
"Appearance and accessibility" : "Erscheinungsbild und Barrierefreiheit",
@@ -27,7 +30,7 @@
"Dark theme" : "Dunkles Design",
"Enable dark theme" : "Dunkles Design aktivieren",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Ein dunkles Design zur Entlastung deiner Augen durch Verringerung der Gesamtleuchtkraft und -helligkeit.",
- "System default theme" : "Design des Systemstandards",
+ "System default theme" : "Standard-Design des Systems",
"Enable the system default" : "Systemstandard aktivieren",
"Using the default system appearance." : "Das Erscheinungsbild des Systemstandards verwenden",
"Dyslexia font" : "Legasthenie-Schriftart",
@@ -44,6 +47,7 @@
"Adjust the Nextcloud theme" : "Passe das Design von Nextcloud an",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Das Ändern des Designs ermöglicht es auf einfache Weise das Aussehen deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.",
"Advanced options" : "Erweiterte Optionen",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die ImageMagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favicons auf Basis des hochgeladenen Logos und der Farbe zu erstellen.",
"Name" : "Name",
"Web link" : "Internet-Link",
"a safe home for all your data" : "Ein sicheres Zuhause für deine Daten",
@@ -51,16 +55,23 @@
"Color" : "Farbe",
"Logo" : "Logo",
"Upload new logo" : "Neues Logo hochladen",
+ "Background and login image" : "Hintergrund und Login-Bild",
+ "Upload new background and login image" : "Ein neues Hintergrund- und Anmeldebild hochladen",
"Legal notice link" : "Link zum Impressum",
"Privacy policy link" : "Link zur Datenschutzerklärung",
"Header logo" : "Kopfbereichs-Logo",
- "Upload new header logo" : "Neues Kopfbereichs-Logo hochladen",
+ "Upload new header logo" : "Neues Logo für den Kopfbereich hochladen",
"Favicon" : "Favicon",
"Upload new favicon" : "Neues Favicon hochladen",
"User settings" : "Benutzer-Einstellungen",
+ "Disable user theming" : "Benutzer-Design deaktivieren",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Obwohl du deine Instanz auswählen und anpassen kannst, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn du deine Anpassung erzwingen möchtest, kannst du dies einschalten.",
"Keyboard shortcuts" : "Tastaturkürzel",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Barrierefreiheits-Tools beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.",
+ "Disable all keyboard shortcuts" : "Alle Tastenkombinationen deaktivieren",
"Background" : "Hintergrund",
- "Customization has been disabled by your administrator" : "Die Einstellung wurde von deinem Administrator deaktiviert.",
+ "Customization has been disabled by your administrator" : "Das Ändern der Einstellungen wurde von deinem Administrator deaktiviert.",
+ "Set a custom background" : "Einen benutzerdefinierten Hintergrund setzen",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Der unbeschränkte Zugang ist für uns sehr wichtig. Wir halten uns an Webstandards und prüfen, ob alles auch ohne Maus und unterstützende Software wie Screenreader nutzbar ist. Wir streben die Einhaltung der {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 auf AA-Niveau an, mit dem kontrastreichen Design sogar auf AAA-Niveau.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!",
"Pick from Files" : "Aus Dateien auswählen",
@@ -69,7 +80,9 @@
"Plain background" : "Einfacher Hintergrund",
"Insert from {productName}" : "Von {productName} einfügen",
"Theme selection is enforced" : "Designauswahl wird erzwungen",
+ "Select a custom color" : "Eine benutzerdefinierte Farbe auswählen",
"Reset to default" : " Auf Standard zurücksetzen ",
+ "Upload" : "Hochladen",
"Remove background image" : "Hintergrundbild entfernen",
"Loading preview…" : "Lade Vorschau…",
"Admin" : "Administrator",
@@ -80,6 +93,7 @@
"Login image" : "Anmeldebild",
"Upload new login background" : "Neuen Anmelde-Hintergrund hochladen",
"Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die Imagemagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favicons auf Basis des hochgeladenen Logos und der Farbe zu erstellen.",
- "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert."
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Obwohl du deine Instanz auswählen und anpassen kannst, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn du ihre Anpassung erzwingen möchtest, kannst du dieses Kontrollkästchen aktivieren."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/theming/l10n/el.js b/apps/theming/l10n/el.js
index 073569e2c59..4402c6be199 100644
--- a/apps/theming/l10n/el.js
+++ b/apps/theming/l10n/el.js
@@ -25,12 +25,18 @@ OC.L10N.register(
"Appearance and accessibility" : "Εμφάνιση και προσβασιμότητα",
"Dark theme" : "Σκούρο θέμα",
"Enable dark theme" : "Ενεργοποίηση σκούρου θέματος",
+ "System default theme" : "Προεπιλεγμένο θέμα συστήματος",
+ "Enable the system default" : "Ενεργοποίηση προεπιλογής συστήματος",
+ "Using the default system 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 είναι μία δωρεάν γραμματοσειρά σχεδιασμένη ώστε να περιορίζει ορισμένα από τα πιο συνήθη λάθη που προκαλεί η δυσλεξία στην ανάγνωση",
"High contrast mode" : "Λειτουργία υψηλής αντίθεσης",
"Enable high contrast mode" : "Ενεργοποίηση λειτουργίας υψηλής αντίθεσης",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Λειτουργία με υψηλή αντίθεση για να διευκολύνει την πλοήγηση σας. Η οπτική ποιότητα θα είναι μειωμένη αλλά θα έχετε υψηλότερη ευκρίνεια.",
+ "Light theme" : "Ανοιχτό θέμα",
+ "Enable the default light theme" : "Ενεργοποίηση ανοικτού θέματος",
+ "The default light appearance." : "Η προεπιλεγμένη ανοιχτόχρωμη εμφάνιση.",
"Legal notice" : "Νομική ειδοποίηση",
"Privacy policy" : "Πολιτική Απορρήτου",
"Adjust the Nextcloud theme" : "Προσαρμόστε το θέμα του Nextcloud",
@@ -43,6 +49,7 @@ OC.L10N.register(
"Color" : "Χρώμα",
"Logo" : "Λογότυπο",
"Upload new logo" : "Μεταφόρτωση νέου λογοτύπου",
+ "Background and login image" : "Παρασκήνιο και εικόνα εισόδου",
"Legal notice link" : "Σύνδεσμος νομικής ειδοποίησης",
"Privacy policy link" : "Σύνδεσμος πολιτικής απορρήτου",
"Header logo" : "Λογότυπο επικεφαλίδας",
@@ -51,12 +58,17 @@ OC.L10N.register(
"Upload new favicon" : "Μεταφόρτωση νέου favicon",
"User settings" : "Ρυθμίσεις χρήστη",
"Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Σε ορισμένες περιπτώσεις, οι συντομεύσεις πληκτρολογίου μπορεί να επηρεάσουν τα εργαλεία προσβασιμότητας. Για να επιτρέψετε τη σωστή εστίαση στο εργαλείο σας, μπορείτε να απενεργοποιήσετε όλες τις συντομεύσεις πληκτρολογίου εδώ. Αυτό θα απενεργοποιήσει επίσης όλες τις διαθέσιμες συντομεύσεις στις εφαρμογές.",
+ "Disable all keyboard shortcuts" : "Απενεργοποίηση των συντομεύσεων πληκτρολογίου",
"Background" : "Φόντο",
+ "Set a custom background" : "Ορισμός προσαρμοσμένου φόντου",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Η πρόσβαση από όλους είναι πολύ σημαντική για εμάς. Ακολουθούμε τα πρότυπα του διαδικτύου και ελέγχουμε ότι τα πάντα μπορούν να χρησιμοποιηθούν χωρίς ποντίκι και βοηθητικό λογισμικό όπως προγράμματα ανάγνωσης οθόνης. Στόχος μας είναι να συμμορφωνόμαστε με τις {προδιαγραφές} Προδιαγραφές πρόσβασης περιεχομένου Ιστού 2.1 σε επίπεδο AA, με το θέμα υψηλής αντίθεσης ακόμη και σε επίπεδο ΑΑΑ.",
"Pick from Files" : "Επιλέξτε από αρχεία",
+ "Default image" : "Προεπιλεγμένη εικόνα",
"Custom color" : "Προσαρμοσμένο χρώμα",
"Plain background" : "Απλό παρασκήνιο",
"Insert from {productName}" : "Εισαγωγή από {productName}",
+ "Select a custom color" : "Επιλογή προσαρμοσμένου χρώματος",
"Reset to default" : "Επαναφορά στα προεπιλεγμένα",
"Upload" : "Μεταφόρτωση",
"Remove background image" : "Αφαίρεση εικόνας παρασκηνίου",
@@ -67,6 +79,7 @@ OC.L10N.register(
"https://…" : "https://…",
"Login image" : "Εικόνα εισόδου",
"Upload new login background" : "Μεταφόρτωση νέου παρασκηνίου εισόδου",
- "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα."
+ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα.",
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Σε ορισμένες περιπτώσεις, οι συντομεύσεις πληκτρολογίου μπορεί να επηρεάσουν τα εργαλεία προσβασιμότητας. Για να επιτρέψετε τη σωστή εστίαση στο εργαλείο σας, μπορείτε να απενεργοποιήσετε όλες τις συντομεύσεις πληκτρολογίου εδώ. Αυτό θα απενεργοποιήσει επίσης όλες τις διαθέσιμες συντομεύσεις στις εφαρμογές."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/theming/l10n/el.json b/apps/theming/l10n/el.json
index c9168e0a139..7fc0731e8ad 100644
--- a/apps/theming/l10n/el.json
+++ b/apps/theming/l10n/el.json
@@ -23,12 +23,18 @@
"Appearance and accessibility" : "Εμφάνιση και προσβασιμότητα",
"Dark theme" : "Σκούρο θέμα",
"Enable dark theme" : "Ενεργοποίηση σκούρου θέματος",
+ "System default theme" : "Προεπιλεγμένο θέμα συστήματος",
+ "Enable the system default" : "Ενεργοποίηση προεπιλογής συστήματος",
+ "Using the default system 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 είναι μία δωρεάν γραμματοσειρά σχεδιασμένη ώστε να περιορίζει ορισμένα από τα πιο συνήθη λάθη που προκαλεί η δυσλεξία στην ανάγνωση",
"High contrast mode" : "Λειτουργία υψηλής αντίθεσης",
"Enable high contrast mode" : "Ενεργοποίηση λειτουργίας υψηλής αντίθεσης",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Λειτουργία με υψηλή αντίθεση για να διευκολύνει την πλοήγηση σας. Η οπτική ποιότητα θα είναι μειωμένη αλλά θα έχετε υψηλότερη ευκρίνεια.",
+ "Light theme" : "Ανοιχτό θέμα",
+ "Enable the default light theme" : "Ενεργοποίηση ανοικτού θέματος",
+ "The default light appearance." : "Η προεπιλεγμένη ανοιχτόχρωμη εμφάνιση.",
"Legal notice" : "Νομική ειδοποίηση",
"Privacy policy" : "Πολιτική Απορρήτου",
"Adjust the Nextcloud theme" : "Προσαρμόστε το θέμα του Nextcloud",
@@ -41,6 +47,7 @@
"Color" : "Χρώμα",
"Logo" : "Λογότυπο",
"Upload new logo" : "Μεταφόρτωση νέου λογοτύπου",
+ "Background and login image" : "Παρασκήνιο και εικόνα εισόδου",
"Legal notice link" : "Σύνδεσμος νομικής ειδοποίησης",
"Privacy policy link" : "Σύνδεσμος πολιτικής απορρήτου",
"Header logo" : "Λογότυπο επικεφαλίδας",
@@ -49,12 +56,17 @@
"Upload new favicon" : "Μεταφόρτωση νέου favicon",
"User settings" : "Ρυθμίσεις χρήστη",
"Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Σε ορισμένες περιπτώσεις, οι συντομεύσεις πληκτρολογίου μπορεί να επηρεάσουν τα εργαλεία προσβασιμότητας. Για να επιτρέψετε τη σωστή εστίαση στο εργαλείο σας, μπορείτε να απενεργοποιήσετε όλες τις συντομεύσεις πληκτρολογίου εδώ. Αυτό θα απενεργοποιήσει επίσης όλες τις διαθέσιμες συντομεύσεις στις εφαρμογές.",
+ "Disable all keyboard shortcuts" : "Απενεργοποίηση των συντομεύσεων πληκτρολογίου",
"Background" : "Φόντο",
+ "Set a custom background" : "Ορισμός προσαρμοσμένου φόντου",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Η πρόσβαση από όλους είναι πολύ σημαντική για εμάς. Ακολουθούμε τα πρότυπα του διαδικτύου και ελέγχουμε ότι τα πάντα μπορούν να χρησιμοποιηθούν χωρίς ποντίκι και βοηθητικό λογισμικό όπως προγράμματα ανάγνωσης οθόνης. Στόχος μας είναι να συμμορφωνόμαστε με τις {προδιαγραφές} Προδιαγραφές πρόσβασης περιεχομένου Ιστού 2.1 σε επίπεδο AA, με το θέμα υψηλής αντίθεσης ακόμη και σε επίπεδο ΑΑΑ.",
"Pick from Files" : "Επιλέξτε από αρχεία",
+ "Default image" : "Προεπιλεγμένη εικόνα",
"Custom color" : "Προσαρμοσμένο χρώμα",
"Plain background" : "Απλό παρασκήνιο",
"Insert from {productName}" : "Εισαγωγή από {productName}",
+ "Select a custom color" : "Επιλογή προσαρμοσμένου χρώματος",
"Reset to default" : "Επαναφορά στα προεπιλεγμένα",
"Upload" : "Μεταφόρτωση",
"Remove background image" : "Αφαίρεση εικόνας παρασκηνίου",
@@ -65,6 +77,7 @@
"https://…" : "https://…",
"Login image" : "Εικόνα εισόδου",
"Upload new login background" : "Μεταφόρτωση νέου παρασκηνίου εισόδου",
- "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα."
+ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα.",
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Σε ορισμένες περιπτώσεις, οι συντομεύσεις πληκτρολογίου μπορεί να επηρεάσουν τα εργαλεία προσβασιμότητας. Για να επιτρέψετε τη σωστή εστίαση στο εργαλείο σας, μπορείτε να απενεργοποιήσετε όλες τις συντομεύσεις πληκτρολογίου εδώ. Αυτό θα απενεργοποιήσει επίσης όλες τις διαθέσιμες συντομεύσεις στις εφαρμογές."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js
index a45163edadf..bb2d47a671c 100644
--- a/apps/theming/l10n/hu.js
+++ b/apps/theming/l10n/hu.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"The given privacy policy address is not a valid URL" : "A megadott adatvédelmi irányelvek URL címe érvénytelen",
"The given slogan is too long" : "A megadott szlogen túl hosszú",
"The given color is invalid" : "A megadott szín érvénytelen",
+ "Disable-user-theming should be true or false" : "A felhasználói témázás letiltásának igaznak vagy hamisnak kell lennie",
"Saved" : "Mentve",
"The file was uploaded" : "A fájl fel lett töltve",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "A feltöltött fájl meghaladja a php.ini upload_max_filesize direktívájában meghatározott méretet.",
@@ -20,6 +21,8 @@ OC.L10N.register(
"Could not write file to disk" : "A fájlt nem sikerült a lemezre írni",
"A PHP extension stopped the file upload" : "Egy PHP kiterjesztés megállította a fájl feltöltését",
"No file uploaded" : "Nincs fájl feltöltve",
+ "Cleanup old theming cache" : "Régi témagyorsítótár kitakarítása",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "A(z) „%1$s” törlése sikertelen, hiba: %2$s",
"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",
@@ -46,6 +49,7 @@ OC.L10N.register(
"Adjust the Nextcloud theme" : "A Nextcloud téma módosítása",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A témák lehetővé teszik, hogy könnyedén személyre szabja a példány és a támogatott kliensek megjelenését. Ez minden felhasználó számára látható lesz.",
"Advanced options" : "Speciális beállítások",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítse az ImageMagick PHP kiterjesztést SVG képtámogatással, hogy automatikusan előállítsa a kedvencek ikont a feltöltött logó és szín alapján.",
"Name" : "Név",
"Web link" : "Webes hivatkozás",
"a safe home for all your data" : "biztonságos hely az adatai számára",
@@ -53,6 +57,8 @@ OC.L10N.register(
"Color" : "Szín",
"Logo" : "Logó",
"Upload new logo" : "Új logó feltöltése",
+ "Background and login image" : "Háttér és bejelentkezőkép",
+ "Upload new background and login image" : "Új háttér és bejelentkezőkép feltöltése",
"Legal notice link" : "Jogi nyilatkozat hivatkozása",
"Privacy policy link" : "Adatvédelmi irányelvek hivatkozása",
"Header logo" : "Fejléc logó",
@@ -60,9 +66,13 @@ OC.L10N.register(
"Favicon" : "Kedvencek ikon",
"Upload new favicon" : "Kedvencek ikon feltöltése",
"User settings" : "Felhasználói beállítások",
+ "Disable user theming" : "Felhasználói témázás letiltása",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Bár kiválaszthatja és testreszabhatja a példányát, a felhasználók módosíthatják a hátterüket és a színeiket. Ha ki akarja kényszeríteni a saját testreszabását, akkor bekapcsolja ezt. ",
"Keyboard shortcuts" : "Gyorsbillentyűk",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt.",
"Disable all keyboard shortcuts" : "Összes gyorsbillentyű letiltása",
"Background" : "Háttér",
+ "Customization has been disabled by your administrator" : "A testreszabást letiltotta a rendszergazda",
"Set a custom background" : "Egyéni háttér beállítása",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Az akadálymentesítés fontos számunka. A webes szabványokat követjük, és ellenőrizzük, hogy minden használható egér nélkül, illetve akadálymentesítési technológiákkal, például képernyőolvasókkal. Arra törekszünk, hogy a {guidelines}Webes tartalomra vonatkozó akadálymentesítési irányelvek{linkend} 2.1-es változatának AA szinten, a magas kontrasztú témával pedig AAA szinten megfeleljünk.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ha problémákat tapasztal, jelentse a {issuetracker}hibakövetőnkben{linkend}. És ha segíteni szeretne, csatlakozzon a {designteam}dizájn csapatunkhoz{linkend}!",
@@ -72,6 +82,7 @@ OC.L10N.register(
"Plain background" : "Egyszerű háttér",
"Insert from {productName}" : "Beillesztés innen: {productName}",
"Theme selection is enforced" : "A témaválasztás kényszerített",
+ "Select a custom color" : "Válasszon egyéni színt",
"Reset to default" : "Visszaállítás alapértelmezettre",
"Upload" : "Feltöltés",
"Remove background image" : "Háttérkép eltávolítása",
@@ -84,6 +95,7 @@ OC.L10N.register(
"Login image" : "Bejelentkező kép",
"Upload new login background" : "Új bejelentkező kép feltöltése",
"Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítse az Imagemagick PHP kiterjesztést SVG képtámogatással, hogy automatikusan előállítsa a kedvencek ikont a feltöltött logó és szín alapján.",
- "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt."
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt.",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Bár kiválaszthatja és testreszabhatja a példányát, a felhasználók módosíthatják a hátterüket és a színeiket. Ha ki akarja kényszeríteni a saját testreszabását, akkor bejelölheti ezt a mezőt. "
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json
index e614cecf721..47ebcb60d00 100644
--- a/apps/theming/l10n/hu.json
+++ b/apps/theming/l10n/hu.json
@@ -8,6 +8,7 @@
"The given privacy policy address is not a valid URL" : "A megadott adatvédelmi irányelvek URL címe érvénytelen",
"The given slogan is too long" : "A megadott szlogen túl hosszú",
"The given color is invalid" : "A megadott szín érvénytelen",
+ "Disable-user-theming should be true or false" : "A felhasználói témázás letiltásának igaznak vagy hamisnak kell lennie",
"Saved" : "Mentve",
"The file was uploaded" : "A fájl fel lett töltve",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "A feltöltött fájl meghaladja a php.ini upload_max_filesize direktívájában meghatározott méretet.",
@@ -18,6 +19,8 @@
"Could not write file to disk" : "A fájlt nem sikerült a lemezre írni",
"A PHP extension stopped the file upload" : "Egy PHP kiterjesztés megállította a fájl feltöltését",
"No file uploaded" : "Nincs fájl feltöltve",
+ "Cleanup old theming cache" : "Régi témagyorsítótár kitakarítása",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "A(z) „%1$s” törlése sikertelen, hiba: %2$s",
"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",
@@ -44,6 +47,7 @@
"Adjust the Nextcloud theme" : "A Nextcloud téma módosítása",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A témák lehetővé teszik, hogy könnyedén személyre szabja a példány és a támogatott kliensek megjelenését. Ez minden felhasználó számára látható lesz.",
"Advanced options" : "Speciális beállítások",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítse az ImageMagick PHP kiterjesztést SVG képtámogatással, hogy automatikusan előállítsa a kedvencek ikont a feltöltött logó és szín alapján.",
"Name" : "Név",
"Web link" : "Webes hivatkozás",
"a safe home for all your data" : "biztonságos hely az adatai számára",
@@ -51,6 +55,8 @@
"Color" : "Szín",
"Logo" : "Logó",
"Upload new logo" : "Új logó feltöltése",
+ "Background and login image" : "Háttér és bejelentkezőkép",
+ "Upload new background and login image" : "Új háttér és bejelentkezőkép feltöltése",
"Legal notice link" : "Jogi nyilatkozat hivatkozása",
"Privacy policy link" : "Adatvédelmi irányelvek hivatkozása",
"Header logo" : "Fejléc logó",
@@ -58,9 +64,13 @@
"Favicon" : "Kedvencek ikon",
"Upload new favicon" : "Kedvencek ikon feltöltése",
"User settings" : "Felhasználói beállítások",
+ "Disable user theming" : "Felhasználói témázás letiltása",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Bár kiválaszthatja és testreszabhatja a példányát, a felhasználók módosíthatják a hátterüket és a színeiket. Ha ki akarja kényszeríteni a saját testreszabását, akkor bekapcsolja ezt. ",
"Keyboard shortcuts" : "Gyorsbillentyűk",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt.",
"Disable all keyboard shortcuts" : "Összes gyorsbillentyű letiltása",
"Background" : "Háttér",
+ "Customization has been disabled by your administrator" : "A testreszabást letiltotta a rendszergazda",
"Set a custom background" : "Egyéni háttér beállítása",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Az akadálymentesítés fontos számunka. A webes szabványokat követjük, és ellenőrizzük, hogy minden használható egér nélkül, illetve akadálymentesítési technológiákkal, például képernyőolvasókkal. Arra törekszünk, hogy a {guidelines}Webes tartalomra vonatkozó akadálymentesítési irányelvek{linkend} 2.1-es változatának AA szinten, a magas kontrasztú témával pedig AAA szinten megfeleljünk.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ha problémákat tapasztal, jelentse a {issuetracker}hibakövetőnkben{linkend}. És ha segíteni szeretne, csatlakozzon a {designteam}dizájn csapatunkhoz{linkend}!",
@@ -70,6 +80,7 @@
"Plain background" : "Egyszerű háttér",
"Insert from {productName}" : "Beillesztés innen: {productName}",
"Theme selection is enforced" : "A témaválasztás kényszerített",
+ "Select a custom color" : "Válasszon egyéni színt",
"Reset to default" : "Visszaállítás alapértelmezettre",
"Upload" : "Feltöltés",
"Remove background image" : "Háttérkép eltávolítása",
@@ -82,6 +93,7 @@
"Login image" : "Bejelentkező kép",
"Upload new login background" : "Új bejelentkező kép feltöltése",
"Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítse az Imagemagick PHP kiterjesztést SVG képtámogatással, hogy automatikusan előállítsa a kedvencek ikont a feltöltött logó és szín alapján.",
- "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt."
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt.",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Bár kiválaszthatja és testreszabhatja a példányát, a felhasználók módosíthatják a hátterüket és a színeiket. Ha ki akarja kényszeríteni a saját testreszabását, akkor bejelölheti ezt a mezőt. "
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/theming/l10n/ja.js b/apps/theming/l10n/ja.js
index 23a641fb860..0cdf510d11c 100644
--- a/apps/theming/l10n/ja.js
+++ b/apps/theming/l10n/ja.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"The given privacy policy address is not a valid URL" : "指定された個人情報保護方針アドレスは有効なURLではありません",
"The given slogan is too long" : "スローガンが長すぎます",
"The given color is invalid" : "無効な色です",
+ "Disable-user-theming should be true or false" : "Disable-user-themingは、trueまたはfalseで指定してください",
"Saved" : "保存済み",
"The file was uploaded" : "ファイルがアップロードされました",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "アップロードファイルサイズが、php.ini の upload_max_filesize を超過しています",
@@ -20,22 +21,35 @@ OC.L10N.register(
"Could not write file to disk" : "ディスクにファイルを書き込めませんでした",
"A PHP extension stopped the file upload" : "PHP拡張でファイルのアップロードが停止されています",
"No file uploaded" : "ファイルがアップロードされていません",
+ "Cleanup old theming cache" : "古いテーマのキャッシュを削除",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "フォルダー \"%1$s\" を削除できませんでした。エラー: %2$s",
"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." : "全体的な明度と明るさを下げることで目を楽にする暗い色調のテーマ",
+ "System default theme" : "システムのデフォルトに合わせたテーマ",
+ "Enable the system default" : "システムデフォルトを有効化",
+ "Using the default system appearance." : "デフォルトの外観を利用",
"Dyslexia font" : "Dyslexia フォント",
"Enable dyslexia font" : "Dyslexia フォントを有効にする",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexicは、ディスレクシアによって引き起こされる一般的な読み間違いの一部を軽減するためにデザインされた、無料で利用できる書体/フォントです。",
"High contrast mode" : "ハイ・コントラストモード",
"Enable high contrast mode" : "ハイ・コントラストモードを有効にする。",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "操作をわかりやすくするためのハイ・コントラストモード。\n見た目の美しさは低下しますが、明確さが向上します。",
+ "Light theme" : "ライトテーマ",
+ "Enable the default light theme" : "デフォルトの明るいテーマを有効化",
+ "The default light appearance." : "デフォルトの明るい外観",
"Legal notice" : "法的通知",
"Privacy policy" : "個人情報保護方針",
"Adjust the Nextcloud theme" : "Nextcloudテーマを調整する",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマでは、あなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更はすべてのユーザーが対象となります。",
"Advanced options" : "詳細オプション",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "SVG画像をサポートするPHP拡張機能 ImageMagick をインストールすると、アップロードされたロゴと色に基づいてファビコンを自動生成することができます。",
"Name" : "名前",
"Web link" : "Webリンク",
"a safe home for all your data" : "あなたのすべてのデータを安全に保管する場所",
@@ -43,6 +57,8 @@ OC.L10N.register(
"Color" : "色",
"Logo" : "ロゴ",
"Upload new logo" : "新しいロゴをアップロード",
+ "Background and login image" : "背景とログイン画像",
+ "Upload new background and login image" : "新しい背景とログイン画像",
"Legal notice link" : "法的通知のリンク",
"Privacy policy link" : "個人情報保護方針のリンク",
"Header logo" : "ヘッダーロゴ",
@@ -50,23 +66,36 @@ OC.L10N.register(
"Favicon" : "Favicon",
"Upload new favicon" : "新しいfaviconをアップロード",
"User settings" : "ユーザー設定",
+ "Disable user theming" : "ユーザー毎のテーマを無効",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "このサーバーの外観のカスタマイズと画像を変更を変更できますが、さらにユーザーは背景と色を変更できます。外観のカスタマイズを強制する場合は以下のチェック設定をオンにしてください。",
"Keyboard shortcuts" : "キーボードショートカット",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "場合によっては、キーボードショートカットがアクセシビリティツールに干渉することがあります。ツールに正しくフォーカスできるようにするために、ここですべてのキーボード ショートカットを無効にできます。この場合、アプリで使用可能なすべてのショートカットも無効になります。",
+ "Disable all keyboard shortcuts" : "全てのキーボードショートカットを無効化",
"Background" : "背景",
+ "Customization has been disabled by your administrator" : "カスタマイズは管理者によって無効にされています",
+ "Set a custom background" : "背景を設定",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "ユニバーサルアクセスは私たちにとって非常に重要なことです。そのためウェブ標準に従い、マウスやスクリーンリーダーなどの支援ソフトウェアが無くても全ての機能をご利用いただけるようにチェックしています。AAAレベルのハイコントラストのテーマを採用することで、{guidelines} Webコンテンツアクセシビリティガイドライン2.1 {linkend} のAAAレベルに準拠することを目指しています。",
+ "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "何か問題を見つけた場合は、{issuetracker}私たちの問題トラッカー{linkend}で遠慮なく報告してください。参加したい場合は、{designteam}私たちのデザイン チーム{linkend}に参加してください!",
"Pick from Files" : "ファイルから選択",
+ "Default image" : "デフォルト背景",
"Custom color" : "カスタム色",
"Plain background" : "シンプルな背景",
"Insert from {productName}" : "{productName} から挿入",
+ "Theme selection is enforced" : "テーマ選択を強制",
+ "Select a custom color" : "カスタムカラーを選択",
"Reset to default" : "デフォルトに戻す",
"Upload" : "アップロード",
"Remove background image" : "背景画像を削除",
"Loading preview…" : "プレビューを読み込み中...",
"Admin" : "管理者",
+ "Error uploading the file" : "ファイルのアップロードエラー",
"Name cannot be empty" : "名前は空にできません",
"Open documentation" : "ドキュメントを開く",
"https://…" : "https://…",
"Login image" : "ログイン画像",
"Upload new login background" : "新しいログイン背景画像をアップロード",
- "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "アップロードしたロゴと色に基づいてfaviconを自動的に生成するには、SVG画像をサポートしているimagemagick PHP拡張をインストールしてください。"
+ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "アップロードしたロゴと色に基づいてfaviconを自動的に生成するには、SVG画像をサポートしているimagemagick PHP拡張をインストールしてください。",
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "場合によっては、キーボードショートカットがアクセシビリティツールに干渉することがあります。ツールに正しくフォーカスできるようにするために、ここですべてのキーボード ショートカットを無効にできます。この場合、アプリで使用可能なすべてのショートカットも無効になります。",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "このサーバーの外観のカスタマイズと画像を変更を変更できますが、さらにユーザーは背景と色を変更できます。外観のカスタマイズを強制する場合は以下のチェック設定をオンにしてください。"
},
"nplurals=1; plural=0;");
diff --git a/apps/theming/l10n/ja.json b/apps/theming/l10n/ja.json
index 11e64862170..a0bffc78478 100644
--- a/apps/theming/l10n/ja.json
+++ b/apps/theming/l10n/ja.json
@@ -8,6 +8,7 @@
"The given privacy policy address is not a valid URL" : "指定された個人情報保護方針アドレスは有効なURLではありません",
"The given slogan is too long" : "スローガンが長すぎます",
"The given color is invalid" : "無効な色です",
+ "Disable-user-theming should be true or false" : "Disable-user-themingは、trueまたはfalseで指定してください",
"Saved" : "保存済み",
"The file was uploaded" : "ファイルがアップロードされました",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "アップロードファイルサイズが、php.ini の upload_max_filesize を超過しています",
@@ -18,22 +19,35 @@
"Could not write file to disk" : "ディスクにファイルを書き込めませんでした",
"A PHP extension stopped the file upload" : "PHP拡張でファイルのアップロードが停止されています",
"No file uploaded" : "ファイルがアップロードされていません",
+ "Cleanup old theming cache" : "古いテーマのキャッシュを削除",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "フォルダー \"%1$s\" を削除できませんでした。エラー: %2$s",
"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." : "全体的な明度と明るさを下げることで目を楽にする暗い色調のテーマ",
+ "System default theme" : "システムのデフォルトに合わせたテーマ",
+ "Enable the system default" : "システムデフォルトを有効化",
+ "Using the default system appearance." : "デフォルトの外観を利用",
"Dyslexia font" : "Dyslexia フォント",
"Enable dyslexia font" : "Dyslexia フォントを有効にする",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexicは、ディスレクシアによって引き起こされる一般的な読み間違いの一部を軽減するためにデザインされた、無料で利用できる書体/フォントです。",
"High contrast mode" : "ハイ・コントラストモード",
"Enable high contrast mode" : "ハイ・コントラストモードを有効にする。",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "操作をわかりやすくするためのハイ・コントラストモード。\n見た目の美しさは低下しますが、明確さが向上します。",
+ "Light theme" : "ライトテーマ",
+ "Enable the default light theme" : "デフォルトの明るいテーマを有効化",
+ "The default light appearance." : "デフォルトの明るい外観",
"Legal notice" : "法的通知",
"Privacy policy" : "個人情報保護方針",
"Adjust the Nextcloud theme" : "Nextcloudテーマを調整する",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマでは、あなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更はすべてのユーザーが対象となります。",
"Advanced options" : "詳細オプション",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "SVG画像をサポートするPHP拡張機能 ImageMagick をインストールすると、アップロードされたロゴと色に基づいてファビコンを自動生成することができます。",
"Name" : "名前",
"Web link" : "Webリンク",
"a safe home for all your data" : "あなたのすべてのデータを安全に保管する場所",
@@ -41,6 +55,8 @@
"Color" : "色",
"Logo" : "ロゴ",
"Upload new logo" : "新しいロゴをアップロード",
+ "Background and login image" : "背景とログイン画像",
+ "Upload new background and login image" : "新しい背景とログイン画像",
"Legal notice link" : "法的通知のリンク",
"Privacy policy link" : "個人情報保護方針のリンク",
"Header logo" : "ヘッダーロゴ",
@@ -48,23 +64,36 @@
"Favicon" : "Favicon",
"Upload new favicon" : "新しいfaviconをアップロード",
"User settings" : "ユーザー設定",
+ "Disable user theming" : "ユーザー毎のテーマを無効",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "このサーバーの外観のカスタマイズと画像を変更を変更できますが、さらにユーザーは背景と色を変更できます。外観のカスタマイズを強制する場合は以下のチェック設定をオンにしてください。",
"Keyboard shortcuts" : "キーボードショートカット",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "場合によっては、キーボードショートカットがアクセシビリティツールに干渉することがあります。ツールに正しくフォーカスできるようにするために、ここですべてのキーボード ショートカットを無効にできます。この場合、アプリで使用可能なすべてのショートカットも無効になります。",
+ "Disable all keyboard shortcuts" : "全てのキーボードショートカットを無効化",
"Background" : "背景",
+ "Customization has been disabled by your administrator" : "カスタマイズは管理者によって無効にされています",
+ "Set a custom background" : "背景を設定",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "ユニバーサルアクセスは私たちにとって非常に重要なことです。そのためウェブ標準に従い、マウスやスクリーンリーダーなどの支援ソフトウェアが無くても全ての機能をご利用いただけるようにチェックしています。AAAレベルのハイコントラストのテーマを採用することで、{guidelines} Webコンテンツアクセシビリティガイドライン2.1 {linkend} のAAAレベルに準拠することを目指しています。",
+ "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "何か問題を見つけた場合は、{issuetracker}私たちの問題トラッカー{linkend}で遠慮なく報告してください。参加したい場合は、{designteam}私たちのデザイン チーム{linkend}に参加してください!",
"Pick from Files" : "ファイルから選択",
+ "Default image" : "デフォルト背景",
"Custom color" : "カスタム色",
"Plain background" : "シンプルな背景",
"Insert from {productName}" : "{productName} から挿入",
+ "Theme selection is enforced" : "テーマ選択を強制",
+ "Select a custom color" : "カスタムカラーを選択",
"Reset to default" : "デフォルトに戻す",
"Upload" : "アップロード",
"Remove background image" : "背景画像を削除",
"Loading preview…" : "プレビューを読み込み中...",
"Admin" : "管理者",
+ "Error uploading the file" : "ファイルのアップロードエラー",
"Name cannot be empty" : "名前は空にできません",
"Open documentation" : "ドキュメントを開く",
"https://…" : "https://…",
"Login image" : "ログイン画像",
"Upload new login background" : "新しいログイン背景画像をアップロード",
- "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "アップロードしたロゴと色に基づいてfaviconを自動的に生成するには、SVG画像をサポートしているimagemagick PHP拡張をインストールしてください。"
+ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "アップロードしたロゴと色に基づいてfaviconを自動的に生成するには、SVG画像をサポートしているimagemagick PHP拡張をインストールしてください。",
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "場合によっては、キーボードショートカットがアクセシビリティツールに干渉することがあります。ツールに正しくフォーカスできるようにするために、ここですべてのキーボード ショートカットを無効にできます。この場合、アプリで使用可能なすべてのショートカットも無効になります。",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "このサーバーの外観のカスタマイズと画像を変更を変更できますが、さらにユーザーは背景と色を変更できます。外観のカスタマイズを強制する場合は以下のチェック設定をオンにしてください。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/theming/tests/Settings/PersonalTest.php b/apps/theming/tests/Settings/PersonalTest.php
index f8f6052a0f8..4e9be5ef994 100644
--- a/apps/theming/tests/Settings/PersonalTest.php
+++ b/apps/theming/tests/Settings/PersonalTest.php
@@ -54,6 +54,7 @@ class PersonalTest extends TestCase {
private ThemesService $themesService;
private IInitialState $initialStateService;
private ThemingDefaults $themingDefaults;
+ private Personal $admin;
/** @var ITheme[] */
private $themes;
@@ -144,7 +145,7 @@ class PersonalTest extends TestCase {
$themingDefaults->expects($this->any())
->method('getColorPrimary')
->willReturn('#0082c9');
-
+
$themingDefaults->expects($this->any())
->method('getDefaultColorPrimary')
->willReturn('#0082c9');
diff --git a/apps/theming/tests/Themes/DyslexiaFontTest.php b/apps/theming/tests/Themes/DyslexiaFontTest.php
index 1a0f0adebec..3e92d03e473 100644
--- a/apps/theming/tests/Themes/DyslexiaFontTest.php
+++ b/apps/theming/tests/Themes/DyslexiaFontTest.php
@@ -40,10 +40,11 @@ use OCP\IUserSession;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
-
class DyslexiaFontTest extends TestCase {
/** @var ThemingDefaults|MockObject */
private $themingDefaults;
+ /** @var IUserSession|MockObject */
+ private $userSession;
/** @var IURLGenerator|MockObject */
private $urlGenerator;
/** @var ImageManager|MockObject */
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index 03a83d83a35..7f8455f54b8 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -60,6 +60,10 @@ OC.L10N.register(
"Your password will expire today." : "パスワードが今日期限切れになります。",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["パスワードがあと %n日で期限切れになります。"],
"LDAP/AD integration" : "LDAP/AD統合",
+ "_%n group found_::_%n groups found_" : ["グループ%nが見つかりました "],
+ "> 1000 groups found" : "1000 以上のグループが見つかりました",
+ "> 1000 users found" : "1000 以上のユーザーが見つかりました",
+ "_%n user found_::_%n users found_" : ["ユーザー%n が見つかりました"],
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "ユーザー表示名の属性を検出できませんでした。詳細設定で対応する属性を指定してください。",
"Could not find the desired feature" : "望ましい機能は見つかりませんでした",
"Invalid Host" : "無効なホスト",
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index bae170334bb..a177306a5ce 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -58,6 +58,10 @@
"Your password will expire today." : "パスワードが今日期限切れになります。",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["パスワードがあと %n日で期限切れになります。"],
"LDAP/AD integration" : "LDAP/AD統合",
+ "_%n group found_::_%n groups found_" : ["グループ%nが見つかりました "],
+ "> 1000 groups found" : "1000 以上のグループが見つかりました",
+ "> 1000 users found" : "1000 以上のユーザーが見つかりました",
+ "_%n user found_::_%n users found_" : ["ユーザー%n が見つかりました"],
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "ユーザー表示名の属性を検出できませんでした。詳細設定で対応する属性を指定してください。",
"Could not find the desired feature" : "望ましい機能は見つかりませんでした",
"Invalid Host" : "無効なホスト",
diff --git a/apps/user_ldap/l10n/lv.js b/apps/user_ldap/l10n/lv.js
index 61eb1d75c98..2c623018a21 100644
--- a/apps/user_ldap/l10n/lv.js
+++ b/apps/user_ldap/l10n/lv.js
@@ -45,6 +45,7 @@ OC.L10N.register(
"Selected groups" : "Izvēlētās grupas",
"Edit LDAP Query" : "Labot LDAP vaicājumu",
"LDAP Filter:" : "LDAP filtrs:",
+ "Verify settings and count the groups" : "Pārbaudiet iestatījumus un saskaitiet grupas",
"Other Attributes:" : "Citi atribūti:",
"Test Loginname" : "Pārbaudiet lietotājvārdu",
"Verify settings" : "Pārbaudīt iestatījumus",
@@ -60,6 +61,7 @@ OC.L10N.register(
"You can specify Base DN for users and groups in the Advanced tab" : "Lietotājiem un grupām var norādīt bāzes DN cilnē “Paplašināti”",
"Detect Base DN" : "Noteikt bāzes DN",
"Test Base DN" : "Testēt bāzes DN",
+ "Verify settings and count users" : "Pārbaudiet iestatījumus un saskaitiet lietotājus",
"Saving" : "Saglabā",
"Back" : "Atpakaļ",
"Continue" : "Turpināt",
diff --git a/apps/user_ldap/l10n/lv.json b/apps/user_ldap/l10n/lv.json
index be82e0717dc..fdebc4b2287 100644
--- a/apps/user_ldap/l10n/lv.json
+++ b/apps/user_ldap/l10n/lv.json
@@ -43,6 +43,7 @@
"Selected groups" : "Izvēlētās grupas",
"Edit LDAP Query" : "Labot LDAP vaicājumu",
"LDAP Filter:" : "LDAP filtrs:",
+ "Verify settings and count the groups" : "Pārbaudiet iestatījumus un saskaitiet grupas",
"Other Attributes:" : "Citi atribūti:",
"Test Loginname" : "Pārbaudiet lietotājvārdu",
"Verify settings" : "Pārbaudīt iestatījumus",
@@ -58,6 +59,7 @@
"You can specify Base DN for users and groups in the Advanced tab" : "Lietotājiem un grupām var norādīt bāzes DN cilnē “Paplašināti”",
"Detect Base DN" : "Noteikt bāzes DN",
"Test Base DN" : "Testēt bāzes DN",
+ "Verify settings and count users" : "Pārbaudiet iestatījumus un saskaitiet lietotājus",
"Saving" : "Saglabā",
"Back" : "Atpakaļ",
"Continue" : "Turpināt",
diff --git a/apps/user_ldap/lib/AppInfo/Application.php b/apps/user_ldap/lib/AppInfo/Application.php
index 79998a580e5..757ac141d3d 100644
--- a/apps/user_ldap/lib/AppInfo/Application.php
+++ b/apps/user_ldap/lib/AppInfo/Application.php
@@ -31,6 +31,7 @@ use OCA\Files_External\Service\BackendService;
use OCA\User_LDAP\Controller\RenewPasswordController;
use OCA\User_LDAP\Events\GroupBackendRegistered;
use OCA\User_LDAP\Events\UserBackendRegistered;
+use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\Group_Proxy;
use OCA\User_LDAP\GroupPluginManager;
use OCA\User_LDAP\Handler\ExtStorageConfigHandler;
@@ -38,6 +39,7 @@ use OCA\User_LDAP\Helper;
use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\Notification\Notifier;
+use OCA\User_LDAP\User\Manager;
use OCA\User_LDAP\User_Proxy;
use OCA\User_LDAP\UserPluginManager;
use OCP\AppFramework\App;
@@ -46,10 +48,17 @@ use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\AppFramework\IAppContainer;
use OCP\EventDispatcher\IEventDispatcher;
+use OCP\IAvatarManager;
+use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IL10N;
+use OCP\Image;
use OCP\IServerContainer;
+use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
+use OCP\Share\IManager as IShareManager;
+use Psr\Container\ContainerInterface;
+use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class Application extends App implements IBootstrap {
@@ -87,6 +96,24 @@ class Application extends App implements IBootstrap {
public function register(IRegistrationContext $context): void {
$context->registerNotifierService(Notifier::class);
+
+ $context->registerService(
+ Manager::class,
+ function (ContainerInterface $c) {
+ return new Manager(
+ $c->get(IConfig::class),
+ $c->get(FilesystemHelper::class),
+ $c->get(LoggerInterface::class),
+ $c->get(IAvatarManager::class),
+ $c->get(Image::class),
+ $c->get(IUserManager::class),
+ $c->get(INotificationManager::class),
+ $c->get(IShareManager::class),
+ );
+ },
+ // the instance is specific to a lazy bound Access instance, thus cannot be shared.
+ false
+ );
}
public function boot(IBootContext $context): void {
diff --git a/apps/workflowengine/lib/Check/RequestTime.php b/apps/workflowengine/lib/Check/RequestTime.php
index b7a2f725451..be28f8ead15 100644
--- a/apps/workflowengine/lib/Check/RequestTime.php
+++ b/apps/workflowengine/lib/Check/RequestTime.php
@@ -109,12 +109,12 @@ class RequestTime implements ICheck {
}
$values = json_decode($value, true);
- $time1 = \DateTime::createFromFormat('H:i e', $values[0]);
+ $time1 = \DateTime::createFromFormat('H:i e', (string)$values[0]);
if ($time1 === false) {
throw new \UnexpectedValueException($this->l->t('The given start time is invalid'), 3);
}
- $time2 = \DateTime::createFromFormat('H:i e', $values[1]);
+ $time2 = \DateTime::createFromFormat('H:i e', (string)$values[1]);
if ($time2 === false) {
throw new \UnexpectedValueException($this->l->t('The given end time is invalid'), 4);
}
diff --git a/build/integration/features/bootstrap/SharingContext.php b/build/integration/features/bootstrap/SharingContext.php
index 7080fd0a1a0..f187e89f08f 100644
--- a/build/integration/features/bootstrap/SharingContext.php
+++ b/build/integration/features/bootstrap/SharingContext.php
@@ -46,5 +46,7 @@ class SharingContext implements Context, SnippetAcceptingContext {
$this->deleteServerConfig('core', 'shareapi_default_expire_date');
$this->deleteServerConfig('core', 'shareapi_expire_after_n_days');
$this->deleteServerConfig('core', 'link_defaultExpDays');
+
+ $this->runOcc(['config:system:delete', 'share_folder']);
}
}
diff --git a/build/integration/sharing_features/sharing-v1-part3.feature b/build/integration/sharing_features/sharing-v1-part3.feature
index 621aa95b364..1331d5b2ba6 100644
--- a/build/integration/sharing_features/sharing-v1-part3.feature
+++ b/build/integration/sharing_features/sharing-v1-part3.feature
@@ -514,6 +514,20 @@ Feature: sharing
Then as "user1" the file "/shared/shared_file.txt" exists
And as "user0" the file "/shared/shared_file.txt" exists
+ Scenario: receiving shares into a configured share_folder
+ Given As an "admin"
+ And invoking occ with "config:system:set share_folder --value received_shares"
+ And user "user0" exists
+ And user "user1" exists
+ And user "user0" created a folder "/shared_folder"
+ And User "user0" moved file "/textfile0.txt" to "/shared_file.txt"
+ When folder "/shared_folder" of user "user0" is shared with user "user1"
+ And user "user1" accepts last share
+ Then as "user1" the file "/received_shares/shared_folder" exists
+ When file "/shared_file.txt" of user "user0" is shared with user "user1"
+ And user "user1" accepts last share
+ Then as "user1" the file "/received_shares/shared_file.txt" exists
+
Scenario: Owner of subshares is adjusted after moving into received share
Given As an "admin"
And user "user0" exists
diff --git a/config/config.sample.php b/config/config.sample.php
index d6e60c40374..40eaee3179d 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -1405,10 +1405,7 @@ $CONFIG = [
],
/**
- * Connection details for a Redis Cluster
- *
- * Only for use with Redis Clustering, for Sentinel-based setups use the single
- * server configuration above, and perform HA on the hostname.
+ * Connection details for a Redis Cluster.
*
* Redis Cluster support requires the php module phpredis in version 3.0.0 or
* higher.
diff --git a/core/Command/App/ListApps.php b/core/Command/App/ListApps.php
index 6f8858c8858..6405afc2f68 100644
--- a/core/Command/App/ListApps.php
+++ b/core/Command/App/ListApps.php
@@ -87,7 +87,7 @@ class ListApps extends Base {
sort($disabledApps);
foreach ($disabledApps as $app) {
- $apps['disabled'][$app] = $versions[$app] ?? null;
+ $apps['disabled'][$app] = $this->manager->getAppVersion($app) . (isset($versions[$app]) ? ' (installed ' . $versions[$app] . ')' : '');
}
$this->writeAppList($input, $output, $apps);
diff --git a/core/js/setupchecks.js b/core/js/setupchecks.js
index 338d818eeee..67f8d70bd31 100644
--- a/core/js/setupchecks.js
+++ b/core/js/setupchecks.js
@@ -303,12 +303,6 @@
type: OC.SetupChecks.MESSAGE_TYPE_INFO
})
}
- if (data.phpSupported && data.phpSupported.version.substr(0, 3) === '7.3') {
- messages.push({
- msg: t('core', 'Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4.'),
- type: OC.SetupChecks.MESSAGE_TYPE_INFO
- })
- }
if(!data.forwardedForHeadersWorking) {
messages.push({
msg: t('core', 'The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}.')
diff --git a/core/l10n/bg.js b/core/l10n/bg.js
index 31e4216eaa5..f597846b6ca 100644
--- a/core/l10n/bg.js
+++ b/core/l10n/bg.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не е конфигурирана кеш паметта. За да подобрите производителността, моля, конфигурирайте memcache, ако е наличен. Допълнителна информация можете да намерите в {linkstart}документацията ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не е открит подходящ източник за случайност от PHP, което е силно обезкуражително от съображения за сигурност. Допълнителна информация можете да намерите в {linkstart}документацията ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "В момента използвате PHP {версия}. Надстройте своята версия на PHP, за да се възползвате от {linkstart}актуализациите за производителност и сигурност, предоставени от PHP Group ↗{linkend}, веднага щом вашата дистрибуция я поддържа.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 е последното издание, поддържащо PHP 7.3. Nextcloud 24 изисква поне PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Конфигурацията на заглавката на обратния прокси сървър е неправилна или осъществявате достъп до Nextcloud от доверен прокси сървър. Ако не, това е проблем със сигурността и може да позволи на хакер да прикрие IP адреса си в Nextcloud. Допълнителна информация можете да намерите в {linkstart}документацията ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Кеширането на паметта е настроено като разпределена кеш, но е инсталиран грешен PHP модул \"memcache\". \\OC\\Memcache\\Memcached поддържа само \"memcached\", но не и \"memcache\". Вижте {linkstart}memcached wiki за двата модула ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Някои файлове не са преминали проверката за цялост. Допълнителна информация за това как да разрешите този проблем можете да намерите в {linkstart1}документация ↗{linkend}. ({linkstart2}Списък с невалидни файлове…{linkend} / {linkstart3}Повторно сканиране…{linkend})",
@@ -406,6 +405,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Въведете абонаментния си ключ, за да увеличите потребителския си лимит. За повече информация относно Nextcloud Enterprise вижте нашия уеб сайт.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверяване на таблица %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Това е неподдържаната общностна версия на Nextcloud. Като се има предвид размера на този екземпляр, производителността, надеждността и мащабируемостта не могат да бъдат гарантирани. Push известията са деактивирани, за да се избегне претоварването на нашата безплатна услуга. Научете повече за предимствата на Nextcloud Enterprise на nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 е последното издание, поддържащо PHP 7.3. Nextcloud 24 изисква поне PHP 7.4.",
"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}." : "В някои колони от базата данни липсва преобразуване в big int. Поради факта, че промяната на типовете колони в големи таблици може да отнеме известно време, те не се променят автоматично. Чрез стартиране на 'occ db:convert-filecache-bigint' тези чакащи промени могат да бъдат приложени ръчно. Тази операция трябва да се извърши, докато екземплярът е офлайн. За повече подробности прочетете {linkstart}страницата с документация за това ↗{linkend}. ",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "За да мигрирате към друга база данни, използвайте инструмента за команден ред: 'occ db: convert-type' или вижте {linkstart}документацията ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавката „{header}“ не съдържа „{expected}“. Това е потенциален риск за сигурността или поверителността, като се препоръчва да настроитепо подходящ начин тази настройка.",
diff --git a/core/l10n/bg.json b/core/l10n/bg.json
index 52cd2b9eb81..451e2ba3149 100644
--- a/core/l10n/bg.json
+++ b/core/l10n/bg.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не е конфигурирана кеш паметта. За да подобрите производителността, моля, конфигурирайте memcache, ако е наличен. Допълнителна информация можете да намерите в {linkstart}документацията ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не е открит подходящ източник за случайност от PHP, което е силно обезкуражително от съображения за сигурност. Допълнителна информация можете да намерите в {linkstart}документацията ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "В момента използвате PHP {версия}. Надстройте своята версия на PHP, за да се възползвате от {linkstart}актуализациите за производителност и сигурност, предоставени от PHP Group ↗{linkend}, веднага щом вашата дистрибуция я поддържа.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 е последното издание, поддържащо PHP 7.3. Nextcloud 24 изисква поне PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Конфигурацията на заглавката на обратния прокси сървър е неправилна или осъществявате достъп до Nextcloud от доверен прокси сървър. Ако не, това е проблем със сигурността и може да позволи на хакер да прикрие IP адреса си в Nextcloud. Допълнителна информация можете да намерите в {linkstart}документацията ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Кеширането на паметта е настроено като разпределена кеш, но е инсталиран грешен PHP модул \"memcache\". \\OC\\Memcache\\Memcached поддържа само \"memcached\", но не и \"memcache\". Вижте {linkstart}memcached wiki за двата модула ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Някои файлове не са преминали проверката за цялост. Допълнителна информация за това как да разрешите този проблем можете да намерите в {linkstart1}документация ↗{linkend}. ({linkstart2}Списък с невалидни файлове…{linkend} / {linkstart3}Повторно сканиране…{linkend})",
@@ -404,6 +403,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Въведете абонаментния си ключ, за да увеличите потребителския си лимит. За повече информация относно Nextcloud Enterprise вижте нашия уеб сайт.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверяване на таблица %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Това е неподдържаната общностна версия на Nextcloud. Като се има предвид размера на този екземпляр, производителността, надеждността и мащабируемостта не могат да бъдат гарантирани. Push известията са деактивирани, за да се избегне претоварването на нашата безплатна услуга. Научете повече за предимствата на Nextcloud Enterprise на nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 е последното издание, поддържащо PHP 7.3. Nextcloud 24 изисква поне PHP 7.4.",
"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}." : "В някои колони от базата данни липсва преобразуване в big int. Поради факта, че промяната на типовете колони в големи таблици може да отнеме известно време, те не се променят автоматично. Чрез стартиране на 'occ db:convert-filecache-bigint' тези чакащи промени могат да бъдат приложени ръчно. Тази операция трябва да се извърши, докато екземплярът е офлайн. За повече подробности прочетете {linkstart}страницата с документация за това ↗{linkend}. ",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "За да мигрирате към друга база данни, използвайте инструмента за команден ред: 'occ db: convert-type' или вижте {linkstart}документацията ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавката „{header}“ не съдържа „{expected}“. Това е потенциален риск за сигурността или поверителността, като се препоръчва да настроитепо подходящ начин тази настройка.",
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index 5909b55d0cc..6165d539707 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -83,7 +83,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "No s'ha configurat cap memòria cau. Per millorar el rendiment, configureu un memcache, si està disponible. Podeu trobar més informació a la {linkstart}documentació ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP no ha trobat cap font adequada per a l'atzar, que es desaconsella molt per raons de seguretat. Podeu trobar més informació a la {linkstart}documentació ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Actualitzeu la vostra versió de PHP per aprofitar les {linkstart}actualitzacions de rendiment i seguretat proporcionades pel Grup PHP ↗{linkend} tan aviat com la vostra distribució ho admeti.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 és l'última versió que admet PHP 7.3. Nextcloud 24 requereix almenys PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La configuració de la capçalera del servidor intermediari invers és incorrecta o esteu accedint a Nextcloud des d'un servidor intermediari de confiança. Si no és així, es tracta d'un problema de seguretat i pot permetre que un atacant falsegi la seva adreça IP com a visible per a Nextcloud. Podeu trobar més informació a la {linkstart}documentació ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached està configurat com a memòria cau distribuïda, però s'ha instal·lat el mòdul PHP incorrecte \"memcache\". \\OC\\Memcache\\Memcached només admet \"memcached\" i no \"memcache\". Consulteu la {linkstart}wiki de memcached sobre ambdós mòduls ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Alguns fitxers no han superat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest problema a la {linkstart1}documentació ↗{linkend}. ({linkstart2}Llista de fitxers no vàlids...{linkend}/{linkstart3}Reexplorar...{linkend})",
@@ -399,6 +398,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Indiqueu la vostra clau de subscripció per a augmentar el límit d'usuaris. Per a obtenir més informació sobre el Nextcloud Enterprise, consulteu el nostre lloc web.",
"[%d / %d]: Checking table %s" : "[%d/%d]: S'està comprovant la taula %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Aquesta és la creació de comunitat no compatible de Nextcloud. Donada la mida d'aquesta instància, no es pot garantir el rendiment, la fiabilitat i l'escalabilitat. Les notificacions push s'han inhabilitat per evitar sobrecarregar el nostre servei gratuït. Obteniu més informació sobre els avantatges de Nextcloud Enterprise a nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 és l'última versió que admet PHP 7.3. Nextcloud 24 requereix almenys PHP 7.4.",
"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}." : "Algunes columnes de la base de dades no tenen una conversió a big int. A causa del fet que canviar els tipus de columnes a les taules grans podria trigar un temps, no es van canviar automàticament. Si executeu \"occ db:convert-filecache-bigint\", aquests canvis pendents es podrien aplicar manualment. Aquesta operació s'ha de fer mentre la instància està fora de línia. Per aconseguir més detalls, llegiu {linkstart}la pàgina de documentació sobre això ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Per a migrar a una altra base de dades utilitzeu l'eina de la línia d'ordres: 'occ db:convert-type', o consulteu la {linkstart}documentació ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La capçalera HTTP «{header}» no conté «{expected}». Això és un risc potencial de seguretat o privadesa, perquè es recomana ajustar aquest paràmetre adequadament.",
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index 9bff4f3f305..7cd0199c270 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -81,7 +81,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "No s'ha configurat cap memòria cau. Per millorar el rendiment, configureu un memcache, si està disponible. Podeu trobar més informació a la {linkstart}documentació ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP no ha trobat cap font adequada per a l'atzar, que es desaconsella molt per raons de seguretat. Podeu trobar més informació a la {linkstart}documentació ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Actualitzeu la vostra versió de PHP per aprofitar les {linkstart}actualitzacions de rendiment i seguretat proporcionades pel Grup PHP ↗{linkend} tan aviat com la vostra distribució ho admeti.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 és l'última versió que admet PHP 7.3. Nextcloud 24 requereix almenys PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La configuració de la capçalera del servidor intermediari invers és incorrecta o esteu accedint a Nextcloud des d'un servidor intermediari de confiança. Si no és així, es tracta d'un problema de seguretat i pot permetre que un atacant falsegi la seva adreça IP com a visible per a Nextcloud. Podeu trobar més informació a la {linkstart}documentació ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached està configurat com a memòria cau distribuïda, però s'ha instal·lat el mòdul PHP incorrecte \"memcache\". \\OC\\Memcache\\Memcached només admet \"memcached\" i no \"memcache\". Consulteu la {linkstart}wiki de memcached sobre ambdós mòduls ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Alguns fitxers no han superat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest problema a la {linkstart1}documentació ↗{linkend}. ({linkstart2}Llista de fitxers no vàlids...{linkend}/{linkstart3}Reexplorar...{linkend})",
@@ -397,6 +396,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Indiqueu la vostra clau de subscripció per a augmentar el límit d'usuaris. Per a obtenir més informació sobre el Nextcloud Enterprise, consulteu el nostre lloc web.",
"[%d / %d]: Checking table %s" : "[%d/%d]: S'està comprovant la taula %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Aquesta és la creació de comunitat no compatible de Nextcloud. Donada la mida d'aquesta instància, no es pot garantir el rendiment, la fiabilitat i l'escalabilitat. Les notificacions push s'han inhabilitat per evitar sobrecarregar el nostre servei gratuït. Obteniu més informació sobre els avantatges de Nextcloud Enterprise a nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 és l'última versió que admet PHP 7.3. Nextcloud 24 requereix almenys PHP 7.4.",
"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}." : "Algunes columnes de la base de dades no tenen una conversió a big int. A causa del fet que canviar els tipus de columnes a les taules grans podria trigar un temps, no es van canviar automàticament. Si executeu \"occ db:convert-filecache-bigint\", aquests canvis pendents es podrien aplicar manualment. Aquesta operació s'ha de fer mentre la instància està fora de línia. Per aconseguir més detalls, llegiu {linkstart}la pàgina de documentació sobre això ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Per a migrar a una altra base de dades utilitzeu l'eina de la línia d'ordres: 'occ db:convert-type', o consulteu la {linkstart}documentació ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La capçalera HTTP «{header}» no conté «{expected}». Això és un risc potencial de seguretat o privadesa, perquè es recomana ajustar aquest paràmetre adequadament.",
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index 97890b6820a..e81642d6e5c 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nebyla nastavena mezipaměť v paměti. Pokud je dostupná, nastavte ji pro zlepšení výkonu. Další informace lze nalézt v naší {linkstart}dokumentaci ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP nenalezlo žádný použitelný zdroj náhodnosti, což je silně nedoporučeno z důvodu zabezpečení. Bližší informace naleznete v {linkstart}dokumentaci ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Nyní používáte PHP {version}. Abyste mohli využívat {linkstart}aktualizace, zlepšující výkonnost a zabezpečení, poskytované autory PHP↗{linkend}, přejděte na jeho novější verzi. A to tak rychle, jak to vámi využívaná distribuce operačního systému umožňuje.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 je posledním vydáním, které podporuje PHP 7.3. Nextcloud 24 vyžaduje přinejmenším PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nastavení hlaviček reverzní proxy není správné nebo přistupujete na Nextcloud z důvěryhodné proxy. Pokud nepřistupujete k Nextcloud z důvěryhodné proxy, potom je toto bezpečností chyba a může útočníkovi umožnit falšovat IP adresu, kterou NextCloud vidí. Další informace lze nalézt v naší {linkstart}dokumentaci ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Je nastaven memcached jako distribuovaná cache, ale je nainstalovaný nesprávný PHP modul „memcache“. \\OC\\Memcache\\Memcached podporuje pouze „memcached“ a ne „memcache“. Podívejte se na {linkstart}memcached wiki pro oba moduly ↗{linkend}..",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Některé soubory neprošly kontrolou integrity. Podrobnosti ohledně řešení tohoto problém lze nalézt v {linkstart1}dokumentaci↗{linkend}. ({linkstart2}Seznam neplatných souborů…{linkend} / {linkstart3}Znovu ověřit…{linkend})",
@@ -392,7 +391,7 @@ OC.L10N.register(
"The theme %s has been disabled." : "Motiv vzhledu %s byl vypnut.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Před provedením dalšího kroku se ujistěte, že je zazálohována databáze a složky s nastaveními a daty.",
"Start update" : "Spustit aktualizaci",
- "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "U větších instalací, abyste zabránili nezdarům kvůli překračování časových limitů, můžete namísto toho v adresáři, ve kterém je nainstalováno, spustit:",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Abyste zabránili překračování časových limitů u větších instalací, můžete místo toho v adresáři s nainstalovanou aplikací spustit:",
"Detailed logs" : "Podrobné záznamy událostí",
"Update needed" : "Je třeba provést aktualizaci",
"Please use the command line updater because you have a big instance with more than 50 users." : "Použijte aktualizační příkazový řádek, protože máte velkou instanci s více než 50 uživateli.",
@@ -407,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Pokud chcete zvýšit limit počtu uživatelů, zadejte klíč předplatného. Další informace o Nextcloud Enterprise najdete na našich webových stránkách.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Kontroluje se tabulka %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Toto je nepodporované komunitní sestavení Nextcloud. Vzhledem k velikosti této instance, není garantován výkon, spolehlivost, ani škálovatelnost. Aby se zabránilo přetěžování našich služeb, které jsou zdarma, okamžitá oznámení byla vypnuta. Zjistěte více o výhodách Nextcloud pro podniky na nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 je posledním vydáním, které podporuje PHP 7.3. Nextcloud 24 vyžaduje přinejmenším PHP 7.4.",
"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}." : "U některých sloupců tabulek databáze doposud nebyla provedena konverze na datový typ big int. To proto, že změna typů sloupců ve velkých tabulkách může trvat dlouho a proto nebylo provedeno automaticky. Provedení je možné spustit ručně a to spuštěním příkazu „occ db: convert-filecache-bigint“. Ovšem provést lze jen tehdy, když je instance Nexcloud odstavená. Další podrobnosti naleznete {linkstart}na stránce v dokumentaci, pojednávající o tomto↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Pokud chcete-li převést do jiné databáze, použijte nástroj pro příkazový řádek: „occ db:convert-type“, nebo si projděte {linkstart}dokumentaci ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP hlavička „{header}“ neobsahuje „{expected}“. To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.",
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index f7e76cca8d6..7e781db545d 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nebyla nastavena mezipaměť v paměti. Pokud je dostupná, nastavte ji pro zlepšení výkonu. Další informace lze nalézt v naší {linkstart}dokumentaci ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP nenalezlo žádný použitelný zdroj náhodnosti, což je silně nedoporučeno z důvodu zabezpečení. Bližší informace naleznete v {linkstart}dokumentaci ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Nyní používáte PHP {version}. Abyste mohli využívat {linkstart}aktualizace, zlepšující výkonnost a zabezpečení, poskytované autory PHP↗{linkend}, přejděte na jeho novější verzi. A to tak rychle, jak to vámi využívaná distribuce operačního systému umožňuje.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 je posledním vydáním, které podporuje PHP 7.3. Nextcloud 24 vyžaduje přinejmenším PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nastavení hlaviček reverzní proxy není správné nebo přistupujete na Nextcloud z důvěryhodné proxy. Pokud nepřistupujete k Nextcloud z důvěryhodné proxy, potom je toto bezpečností chyba a může útočníkovi umožnit falšovat IP adresu, kterou NextCloud vidí. Další informace lze nalézt v naší {linkstart}dokumentaci ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Je nastaven memcached jako distribuovaná cache, ale je nainstalovaný nesprávný PHP modul „memcache“. \\OC\\Memcache\\Memcached podporuje pouze „memcached“ a ne „memcache“. Podívejte se na {linkstart}memcached wiki pro oba moduly ↗{linkend}..",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Některé soubory neprošly kontrolou integrity. Podrobnosti ohledně řešení tohoto problém lze nalézt v {linkstart1}dokumentaci↗{linkend}. ({linkstart2}Seznam neplatných souborů…{linkend} / {linkstart3}Znovu ověřit…{linkend})",
@@ -390,7 +389,7 @@
"The theme %s has been disabled." : "Motiv vzhledu %s byl vypnut.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Před provedením dalšího kroku se ujistěte, že je zazálohována databáze a složky s nastaveními a daty.",
"Start update" : "Spustit aktualizaci",
- "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "U větších instalací, abyste zabránili nezdarům kvůli překračování časových limitů, můžete namísto toho v adresáři, ve kterém je nainstalováno, spustit:",
+ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Abyste zabránili překračování časových limitů u větších instalací, můžete místo toho v adresáři s nainstalovanou aplikací spustit:",
"Detailed logs" : "Podrobné záznamy událostí",
"Update needed" : "Je třeba provést aktualizaci",
"Please use the command line updater because you have a big instance with more than 50 users." : "Použijte aktualizační příkazový řádek, protože máte velkou instanci s více než 50 uživateli.",
@@ -405,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Pokud chcete zvýšit limit počtu uživatelů, zadejte klíč předplatného. Další informace o Nextcloud Enterprise najdete na našich webových stránkách.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Kontroluje se tabulka %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Toto je nepodporované komunitní sestavení Nextcloud. Vzhledem k velikosti této instance, není garantován výkon, spolehlivost, ani škálovatelnost. Aby se zabránilo přetěžování našich služeb, které jsou zdarma, okamžitá oznámení byla vypnuta. Zjistěte více o výhodách Nextcloud pro podniky na nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 je posledním vydáním, které podporuje PHP 7.3. Nextcloud 24 vyžaduje přinejmenším PHP 7.4.",
"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}." : "U některých sloupců tabulek databáze doposud nebyla provedena konverze na datový typ big int. To proto, že změna typů sloupců ve velkých tabulkách může trvat dlouho a proto nebylo provedeno automaticky. Provedení je možné spustit ručně a to spuštěním příkazu „occ db: convert-filecache-bigint“. Ovšem provést lze jen tehdy, když je instance Nexcloud odstavená. Další podrobnosti naleznete {linkstart}na stránce v dokumentaci, pojednávající o tomto↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Pokud chcete-li převést do jiné databáze, použijte nástroj pro příkazový řádek: „occ db:convert-type“, nebo si projděte {linkstart}dokumentaci ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP hlavička „{header}“ neobsahuje „{expected}“. To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.",
diff --git a/core/l10n/da.js b/core/l10n/da.js
index 96b5d620829..31ad474215e 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Der er ikke konfigureret nogen hukommelsescache. For at forbedre ydeevnen skal du konfigurere en memcache, hvis den er tilgængelig. Yderligere information kan findes i {linkstart}dokumentationen ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ingen passende kilde til tilfældighed fundet af PHP, hvilket er stærkt frarådigt af sikkerhedsmæssige årsager. Yderligere information kan findes i {linkstart}dokumentationen ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du kører i øjeblikket PHP {version}. Opgrader din PHP-version for at drage fordel af {linkstart}ydeevne og sikkerhedsopdateringer fra PHP Group ↗{linkend}, så snart din distribution understøtter det.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er den sidste udgivelse, der understøtter PHP 7.3. Nextcloud 24 kræver mindst PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfigurationen af omvendt proxy-header er forkert, eller du får adgang til Nextcloud fra en betroet proxy. Hvis ikke, er dette et sikkerhedsproblem og kan tillade en hacker at forfalske deres IP-adresse som synlig for Nextcloud. Yderligere information kan findes i {linkstart}dokumentationen ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached er konfigureret som distribueret cache, men det forkerte PHP-modul \"memcache\" er installeret. \\OC\\Memcache\\Memcached understøtter kun \"memcached\" og ikke \"memcache\". Se den {linkstart}memcachede wiki om begge moduler ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Nogle filer har ikke bestået integritetskontrollen. Yderligere oplysninger om, hvordan du løser dette problem, kan findes i {linkstart1}dokumentationen ↗{linkend}. ({linkstart2}Liste over ugyldige filer...{linkend} / {linkstart3}Scan igen...{linkend})",
@@ -406,6 +405,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Indtast din abonnementsnøgle for at øge brugergrænsen. For mere information om Nextcloud Enterprise se vores hjemmeside.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Tjekker tabel %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dette er den ikke-understøttede fællesskabsopbygning af Nextcloud. I betragtning af størrelsen af denne instans kan ydeevne, pålidelighed og skalerbarhed ikke garanteres. Push-meddelelser er blevet deaktiveret for at undgå at overbelaste vores gratis service. Lær mere om fordelene ved Nextcloud Enterprise på nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er den sidste udgivelse, der understøtter PHP 7.3. Nextcloud 24 kræver mindst PHP 7.4.",
"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}." : "Nogle kolonner i databasen mangler en konvertering til big int. På grund af det faktum, at ændring af kolonnetyper på store tabeller kunne tage noget tid, blev de ikke ændret automatisk. Ved at køre 'occ db:convert-filecache-bigint' kunne disse afventende ændringer anvendes manuelt. Denne handling skal udføres, mens instansen er offline. For yderligere detaljer læs {linkstart}dokumentationssiden om dette ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "For at migrere til en anden database skal du bruge kommandolinjeværktøjet: 'occ db:convert-type', eller se {linkstart}dokumentationen ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hovedet \"{header}\" mangler \"{expected}\". Dette er en potentiel sikkerhedsrisiko. Det er anbefalet at du justerer denne indstilling.",
diff --git a/core/l10n/da.json b/core/l10n/da.json
index cb4c70dc47e..30ba3cc4e3e 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Der er ikke konfigureret nogen hukommelsescache. For at forbedre ydeevnen skal du konfigurere en memcache, hvis den er tilgængelig. Yderligere information kan findes i {linkstart}dokumentationen ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ingen passende kilde til tilfældighed fundet af PHP, hvilket er stærkt frarådigt af sikkerhedsmæssige årsager. Yderligere information kan findes i {linkstart}dokumentationen ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du kører i øjeblikket PHP {version}. Opgrader din PHP-version for at drage fordel af {linkstart}ydeevne og sikkerhedsopdateringer fra PHP Group ↗{linkend}, så snart din distribution understøtter det.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er den sidste udgivelse, der understøtter PHP 7.3. Nextcloud 24 kræver mindst PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfigurationen af omvendt proxy-header er forkert, eller du får adgang til Nextcloud fra en betroet proxy. Hvis ikke, er dette et sikkerhedsproblem og kan tillade en hacker at forfalske deres IP-adresse som synlig for Nextcloud. Yderligere information kan findes i {linkstart}dokumentationen ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached er konfigureret som distribueret cache, men det forkerte PHP-modul \"memcache\" er installeret. \\OC\\Memcache\\Memcached understøtter kun \"memcached\" og ikke \"memcache\". Se den {linkstart}memcachede wiki om begge moduler ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Nogle filer har ikke bestået integritetskontrollen. Yderligere oplysninger om, hvordan du løser dette problem, kan findes i {linkstart1}dokumentationen ↗{linkend}. ({linkstart2}Liste over ugyldige filer...{linkend} / {linkstart3}Scan igen...{linkend})",
@@ -404,6 +403,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Indtast din abonnementsnøgle for at øge brugergrænsen. For mere information om Nextcloud Enterprise se vores hjemmeside.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Tjekker tabel %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dette er den ikke-understøttede fællesskabsopbygning af Nextcloud. I betragtning af størrelsen af denne instans kan ydeevne, pålidelighed og skalerbarhed ikke garanteres. Push-meddelelser er blevet deaktiveret for at undgå at overbelaste vores gratis service. Lær mere om fordelene ved Nextcloud Enterprise på nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er den sidste udgivelse, der understøtter PHP 7.3. Nextcloud 24 kræver mindst PHP 7.4.",
"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}." : "Nogle kolonner i databasen mangler en konvertering til big int. På grund af det faktum, at ændring af kolonnetyper på store tabeller kunne tage noget tid, blev de ikke ændret automatisk. Ved at køre 'occ db:convert-filecache-bigint' kunne disse afventende ændringer anvendes manuelt. Denne handling skal udføres, mens instansen er offline. For yderligere detaljer læs {linkstart}dokumentationssiden om dette ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "For at migrere til en anden database skal du bruge kommandolinjeværktøjet: 'occ db:convert-type', eller se {linkstart}dokumentationen ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hovedet \"{header}\" mangler \"{expected}\". Dette er en potentiel sikkerhedsrisiko. Det er anbefalet at du justerer denne indstilling.",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 2d0efb4bc84..d4a43136627 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -82,7 +82,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen findest du in unserer {linkstart}Dokumentation ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Von PHP wurde keine geeignete Quelle für Zufälligkeit gefunden, aus Sicht der Sicherheit ist dies bedenklich. Weitere Informationen sind in der {linkstart}Dokumentation ↗{linkend} zu finden.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du verwendest im Moment PHP {version}. Wir empfehlen ein Upgrade deiner PHP Version, um die {linkstart}Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden↗{linkend}, sobald Deine Distribution diese unterstützt.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 ist die letzte Version, die PHP 7.3 unterstützt. Nextcloud 24 erfordert mindestens PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Die Reverse-Proxy-Header-Konfiguration ist fehlerhaft oder du greifst auf Nextcloud über einen vertrauenswürdigen Proxy zu. Ist dies nicht der Fall, dann besteht ein Sicherheitsproblem, das einem Angreifer erlaubt, die IP-Adresse, die für Nextcloud sichtbar ist, auszuspähen. Weitere Informationen hierzu finden sich in der {linkstart}Dokumentation ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Im {linkstart}memcached wiki nach beiden Modulen suchen ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu beheben findest du in unserer {linkstart1}Dokumentation↗{linkend}. ({linkstart2}Liste der ungültigen Dateien …{linkend} / {linkstart3}Erneut scannen…{linkend})",
@@ -398,6 +397,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Gebe deinen Abonnementschlüssel ein, um die Benutzergrenze erhöhen. Weitere Informationen Informationen zu Nextcloud für Unternehmen (Enterprise) findest du auf unserer Website.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dies ist der nicht unterstützte Community-Build von Nextcloud. Angesichts der Größe dieser Instanz können Leistung, Zuverlässigkeit und Skalierbarkeit nicht garantiert werden. Push-Benachrichtigungen wurden deaktiviert, um eine Überlastung unseres kostenlosen Dienstes zu vermeiden. Erfahre mehr über die Vorteile von Nextcloud Enterprise unter nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 ist die letzte Version, die PHP 7.3 unterstützt. Nextcloud 24 erfordert mindestens PHP 7.4.",
"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}." : "Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von \"occ db:convert-filecache-bigint\" können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Details findest du auf {linkstart}der zugehörigen Dokumentationsseite ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Um zu einer anderen Datenbank zu migrieren, benutze bitte die Befehlszeile: 'occ db:convert-type', oder in die {linkstart}Dokumentation ↗{linkend} schauen.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ enthält. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index d8ae1c15465..678d1a37af5 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -80,7 +80,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen findest du in unserer {linkstart}Dokumentation ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Von PHP wurde keine geeignete Quelle für Zufälligkeit gefunden, aus Sicht der Sicherheit ist dies bedenklich. Weitere Informationen sind in der {linkstart}Dokumentation ↗{linkend} zu finden.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du verwendest im Moment PHP {version}. Wir empfehlen ein Upgrade deiner PHP Version, um die {linkstart}Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden↗{linkend}, sobald Deine Distribution diese unterstützt.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 ist die letzte Version, die PHP 7.3 unterstützt. Nextcloud 24 erfordert mindestens PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Die Reverse-Proxy-Header-Konfiguration ist fehlerhaft oder du greifst auf Nextcloud über einen vertrauenswürdigen Proxy zu. Ist dies nicht der Fall, dann besteht ein Sicherheitsproblem, das einem Angreifer erlaubt, die IP-Adresse, die für Nextcloud sichtbar ist, auszuspähen. Weitere Informationen hierzu finden sich in der {linkstart}Dokumentation ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Im {linkstart}memcached wiki nach beiden Modulen suchen ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu beheben findest du in unserer {linkstart1}Dokumentation↗{linkend}. ({linkstart2}Liste der ungültigen Dateien …{linkend} / {linkstart3}Erneut scannen…{linkend})",
@@ -396,6 +395,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Gebe deinen Abonnementschlüssel ein, um die Benutzergrenze erhöhen. Weitere Informationen Informationen zu Nextcloud für Unternehmen (Enterprise) findest du auf unserer Website.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dies ist der nicht unterstützte Community-Build von Nextcloud. Angesichts der Größe dieser Instanz können Leistung, Zuverlässigkeit und Skalierbarkeit nicht garantiert werden. Push-Benachrichtigungen wurden deaktiviert, um eine Überlastung unseres kostenlosen Dienstes zu vermeiden. Erfahre mehr über die Vorteile von Nextcloud Enterprise unter nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 ist die letzte Version, die PHP 7.3 unterstützt. Nextcloud 24 erfordert mindestens PHP 7.4.",
"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}." : "Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von \"occ db:convert-filecache-bigint\" können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Details findest du auf {linkstart}der zugehörigen Dokumentationsseite ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Um zu einer anderen Datenbank zu migrieren, benutze bitte die Befehlszeile: 'occ db:convert-type', oder in die {linkstart}Dokumentation ↗{linkend} schauen.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ enthält. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 4a38ebabd9c..10ba6820537 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Es wurde kein PHP Memory Cache konfiguriert. Konfigurieren Sie zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer {linkstart}Dokumentation ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Von PHP wurde keine geeignete Quelle für Zufälligkeit gefunden, aus Sicht der Sicherheit ist dies bedenklich. Weitere Informationen sind in der {linkstart}Dokumentation ↗{linkend} zu finden.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Sie verwenden im Moment PHP {version}. Wir empfehlen ein Upgrade ihrer PHP Version, um die {linkstart}Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden↗{linkend}, sobald Ihre Distribution diese unterstützt.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 ist die letzte Version, die PHP 7.3 unterstützt. Nextcloud 24 erfordert mindestens PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Die Reverse-Proxy-Header-Konfiguration ist fehlerhaft oder Sie greifen auf Nextcloud über einen vertrauenswürdigen Proxy zu. Ist dies nicht der Fall, dann besteht ein Sicherheitsproblem, das einem Angreifer erlaubt die IP-Adresse, die für Nextcloud sichtbar ist, auszuspähen. Weitere Informationen hierzu befindet sich in der {linkstart}Dokumentation ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Im {linkstart}memcached wiki nach beiden Modulen suchen ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu behen finden Sie in unserer {linkstart1}Dokumentation↗{linkend}. ({linkstart2}Liste der ungültigen Dateien...{linkend} / {linkstart3}Erneut scannen…{linkend})",
@@ -407,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Geben Sie Ihren Abonnementschlüssel ein, um die Benutzergrenze zu erhöhen. Weitere Informationen über Nextcloud für Unternehmen (Enterprise) finden Sie auf unserer Webseite.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dies ist der nicht unterstützte Community-Build von Nextcloud. Angesichts der Größe dieser Instanz können Leistung, Zuverlässigkeit und Skalierbarkeit nicht garantiert werden. Push-Benachrichtigungen wurden deaktiviert, um eine Überlastung unseres kostenlosen Dienstes zu vermeiden. Erfahren Sie mehr über die Vorteile von Nextcloud Enterprise unter nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 ist die letzte Version, die PHP 7.3 unterstützt. Nextcloud 24 erfordert mindestens PHP 7.4.",
"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}." : "Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von \"occ db:convert-filecache-bigint\" können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Details finden Sie auf {linkstart}der zugehörigen Dokumentationsseite ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Um zu einer anderen Datenbank zu migrieren, benutzen Sie bitte die Befehlszeile: 'occ db:convert-type', oder in die {linkstart}Dokumentation ↗{linkend} schauen.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ enthält. Dies ist ein potentielles Risiko für Sicherheit und Privatsphäre und es wird empfohlen, diese Einstellung zu ändern.",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index 0bbb07d7afa..40f40128d65 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Es wurde kein PHP Memory Cache konfiguriert. Konfigurieren Sie zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer {linkstart}Dokumentation ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Von PHP wurde keine geeignete Quelle für Zufälligkeit gefunden, aus Sicht der Sicherheit ist dies bedenklich. Weitere Informationen sind in der {linkstart}Dokumentation ↗{linkend} zu finden.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Sie verwenden im Moment PHP {version}. Wir empfehlen ein Upgrade ihrer PHP Version, um die {linkstart}Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden↗{linkend}, sobald Ihre Distribution diese unterstützt.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 ist die letzte Version, die PHP 7.3 unterstützt. Nextcloud 24 erfordert mindestens PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Die Reverse-Proxy-Header-Konfiguration ist fehlerhaft oder Sie greifen auf Nextcloud über einen vertrauenswürdigen Proxy zu. Ist dies nicht der Fall, dann besteht ein Sicherheitsproblem, das einem Angreifer erlaubt die IP-Adresse, die für Nextcloud sichtbar ist, auszuspähen. Weitere Informationen hierzu befindet sich in der {linkstart}Dokumentation ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Im {linkstart}memcached wiki nach beiden Modulen suchen ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu behen finden Sie in unserer {linkstart1}Dokumentation↗{linkend}. ({linkstart2}Liste der ungültigen Dateien...{linkend} / {linkstart3}Erneut scannen…{linkend})",
@@ -405,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Geben Sie Ihren Abonnementschlüssel ein, um die Benutzergrenze zu erhöhen. Weitere Informationen über Nextcloud für Unternehmen (Enterprise) finden Sie auf unserer Webseite.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dies ist der nicht unterstützte Community-Build von Nextcloud. Angesichts der Größe dieser Instanz können Leistung, Zuverlässigkeit und Skalierbarkeit nicht garantiert werden. Push-Benachrichtigungen wurden deaktiviert, um eine Überlastung unseres kostenlosen Dienstes zu vermeiden. Erfahren Sie mehr über die Vorteile von Nextcloud Enterprise unter nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 ist die letzte Version, die PHP 7.3 unterstützt. Nextcloud 24 erfordert mindestens PHP 7.4.",
"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}." : "Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von \"occ db:convert-filecache-bigint\" können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Details finden Sie auf {linkstart}der zugehörigen Dokumentationsseite ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Um zu einer anderen Datenbank zu migrieren, benutzen Sie bitte die Befehlszeile: 'occ db:convert-type', oder in die {linkstart}Dokumentation ↗{linkend} schauen.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ enthält. Dies ist ein potentielles Risiko für Sicherheit und Privatsphäre und es wird empfohlen, diese Einstellung zu ändern.",
diff --git a/core/l10n/el.js b/core/l10n/el.js
index babe989b112..516ee140b9d 100644
--- a/core/l10n/el.js
+++ b/core/l10n/el.js
@@ -71,7 +71,6 @@ OC.L10N.register(
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Δεν ήταν δυνατή η εκτέλεση της cron job μέσω τερματικού (CLI). Εμφανίστηκαν τα παρακάτω τεχνικά σφάλματα:",
"This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Αυτός ο διακομιστής δεν έχει ενεργή σύνδεση στο διαδίκτυο. Δεν ήταν δυνατή η πρόσβαση σε πολλά τελικά σημεία. Αυτό σημαίνει πως κάποιες λειτουργίες/υπηρεσίες όπως η σύνδεση με εξωτερικούς χώρους αποθήκευσης, ειδοποιήσεις σχετικά με ενημερώσεις ή η εγκατάσταση εφαρμογών από τρίτους δε θα λειτουργούν. Η απομακρυσμένη πρόσβαση στα αρχεία και η αποστολή ειδοποιήσεων ηλεκτρονικού ταχυδρομείου ενδέχεται να μη λειτουργούν επίσης. Ενεργοποιήσετε την πρόσβαση στο διαδίκτυο για τον συγκεκριμένο διακομιστή για να μπορείτε να χρησιμοποιήσετε και να απολαύσετε όλα τα χαρακτηριστικά και τις υπηρεσίες.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Αυτήν τη στιγμή εκτελείτε PHP {version}. Αναβαθμίστε την έκδοσή σας PHP για να επωφεληθείτε από τις ενημερώσεις {linkstart}απόδοσης και ασφάλειας που παρέχονται από την Ομάδα PHP ↗{linkend} μόλις το υποστηρίξει η διανομή σας.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Το Nextcloud 23 είναι η τελευταία έκδοση που υποστηρίζει PHP 7.3. Το Nextcloud 24 απαιτεί τουλάχιστον PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Η διαμόρφωση των reverse proxy headers είναι εσφαλμένη, ή έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο/έμπιστο διαμεσολαβητή. Εάν όχι, αυτό είναι ένα ζήτημα ασφάλειας και μπορεί να επιτρέψει σε έναν κακόβουλο χρήστη να ξεγελάσει την διεύθυνση IP του ως ορατή στο Nextcloud. Περισσότερες πληροφορίες μπορείτε να βρείτε στη {linkstart}τεκμηρίωση ↗{linkend}.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Μη διαθέσιμη λειτουργία της PHP \"set_time_limit\". Μπορεί να διακοπεί η εκτέλεση διαφόρων scripts με αποτέλεσμα διακοπή της εγκατάστασης. Συνιστούμε ενεργοποίηση της λειτουργίας.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Η PHP δεν έχει υποστήριξη FreεType, με αποτέλεσμα τα σφάλματα στην εικόνα προφίλ και στις ρυθμίσεις διεπαφής χρήστη.",
@@ -356,6 +355,7 @@ OC.L10N.register(
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Αυτή η έκδοση του Nextcloud δεν υποστηρίζεται και οι άμεσες ειδοποιήσεις δεν είναι διαθέσιμες.",
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Εισάγετε το κλειδί συνδρομής σας για να αυξήσετε το όριο χρήστη. Για περισσότερες πληροφορίες σχετικά με το Nextcloud Enterprise, ανατρέξτε στον ιστότοπό μας.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Έλεγχος πίνακα %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Το Nextcloud 23 είναι η τελευταία έκδοση που υποστηρίζει PHP 7.3. Το Nextcloud 24 απαιτεί τουλάχιστον PHP 7.4.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "H \"{header}\" κεφαλίδα HTTP δεν περιέχει \"{expected}\". Αυτό αποτελεί κίνδυνο ασφάλειας ή ιδιωτικότητας και συστήνουμε τη προσαρμογή αυτής της ρύθμισης.",
"Collaboratively edit office documents." : "Συνεργατική επεξεργασία εγγράφων.",
"Local document editing back-end used by the Collabora Online app." : "Επεξεργασία τοπικών εγγράφων με χρήση εφαρμογής Collabora Online.",
diff --git a/core/l10n/el.json b/core/l10n/el.json
index af16844527a..2d9ae0421fc 100644
--- a/core/l10n/el.json
+++ b/core/l10n/el.json
@@ -69,7 +69,6 @@
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Δεν ήταν δυνατή η εκτέλεση της cron job μέσω τερματικού (CLI). Εμφανίστηκαν τα παρακάτω τεχνικά σφάλματα:",
"This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Αυτός ο διακομιστής δεν έχει ενεργή σύνδεση στο διαδίκτυο. Δεν ήταν δυνατή η πρόσβαση σε πολλά τελικά σημεία. Αυτό σημαίνει πως κάποιες λειτουργίες/υπηρεσίες όπως η σύνδεση με εξωτερικούς χώρους αποθήκευσης, ειδοποιήσεις σχετικά με ενημερώσεις ή η εγκατάσταση εφαρμογών από τρίτους δε θα λειτουργούν. Η απομακρυσμένη πρόσβαση στα αρχεία και η αποστολή ειδοποιήσεων ηλεκτρονικού ταχυδρομείου ενδέχεται να μη λειτουργούν επίσης. Ενεργοποιήσετε την πρόσβαση στο διαδίκτυο για τον συγκεκριμένο διακομιστή για να μπορείτε να χρησιμοποιήσετε και να απολαύσετε όλα τα χαρακτηριστικά και τις υπηρεσίες.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Αυτήν τη στιγμή εκτελείτε PHP {version}. Αναβαθμίστε την έκδοσή σας PHP για να επωφεληθείτε από τις ενημερώσεις {linkstart}απόδοσης και ασφάλειας που παρέχονται από την Ομάδα PHP ↗{linkend} μόλις το υποστηρίξει η διανομή σας.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Το Nextcloud 23 είναι η τελευταία έκδοση που υποστηρίζει PHP 7.3. Το Nextcloud 24 απαιτεί τουλάχιστον PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Η διαμόρφωση των reverse proxy headers είναι εσφαλμένη, ή έχετε πρόσβαση στο Nextcloud από έναν αξιόπιστο/έμπιστο διαμεσολαβητή. Εάν όχι, αυτό είναι ένα ζήτημα ασφάλειας και μπορεί να επιτρέψει σε έναν κακόβουλο χρήστη να ξεγελάσει την διεύθυνση IP του ως ορατή στο Nextcloud. Περισσότερες πληροφορίες μπορείτε να βρείτε στη {linkstart}τεκμηρίωση ↗{linkend}.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Μη διαθέσιμη λειτουργία της PHP \"set_time_limit\". Μπορεί να διακοπεί η εκτέλεση διαφόρων scripts με αποτέλεσμα διακοπή της εγκατάστασης. Συνιστούμε ενεργοποίηση της λειτουργίας.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Η PHP δεν έχει υποστήριξη FreεType, με αποτέλεσμα τα σφάλματα στην εικόνα προφίλ και στις ρυθμίσεις διεπαφής χρήστη.",
@@ -354,6 +353,7 @@
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Αυτή η έκδοση του Nextcloud δεν υποστηρίζεται και οι άμεσες ειδοποιήσεις δεν είναι διαθέσιμες.",
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Εισάγετε το κλειδί συνδρομής σας για να αυξήσετε το όριο χρήστη. Για περισσότερες πληροφορίες σχετικά με το Nextcloud Enterprise, ανατρέξτε στον ιστότοπό μας.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Έλεγχος πίνακα %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Το Nextcloud 23 είναι η τελευταία έκδοση που υποστηρίζει PHP 7.3. Το Nextcloud 24 απαιτεί τουλάχιστον PHP 7.4.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "H \"{header}\" κεφαλίδα HTTP δεν περιέχει \"{expected}\". Αυτό αποτελεί κίνδυνο ασφάλειας ή ιδιωτικότητας και συστήνουμε τη προσαρμογή αυτής της ρύθμισης.",
"Collaboratively edit office documents." : "Συνεργατική επεξεργασία εγγράφων.",
"Local document editing back-end used by the Collabora Online app." : "Επεξεργασία τοπικών εγγράφων με χρήση εφαρμογής Collabora Online.",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index 9d1379c5226..a664d3069ab 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La memoria caché no ha sido configurada. Para mejorar el rendimiento, por favor, configure memcache si está disponible. Puede encontrar más información en la {linkstart}documentación ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "No se ha encontrado una fuente de aleatoriedad en PHP, lo que se desaconseja por razones de seguridad. Puede encontrar más información en la {linkstart}documentación ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Actualmente está ejecutando PHP {version}. Actualize la versión de PHP para beneficiarse de las {linkstart}actualizaciones de rendimiento y seguridad que aporta PHP Group ↗{linkend} en cuanto su distribución lo soporte.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 es la última versión compatible con PHP 7.3. Nextcloud 24 requiere al menos PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La configuración de la cabecera del proxy reverso no es correcta o está accediendo a Nextcloud desde un proxy de confianza. Si no, esto es un problema de seguridad y podría permitir a un ataccante a disfrazar su dirección IP como visible para Nextcloud. Se puede encontrar más información en la {linkstart}documentación ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached está configurado como una caché distribuida, pero se ha instalado el módulo equivocado de PHP \"memcache\". \\OC\\Memcache\\Memcached solo soporta \"memcached\" y no \"memcache\". Comprueba la {linkstart}wiki de memcached wiki acerca de ambos módulos ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Algunos archivos no han pasado la comprobación de integridad. Puede encontrar más información sobre cómo resolver este problema en la {linkstart1}documentacióarchivosn ↗{linkend}. ({linkstart2}Lista de archivos no válidos…{linkend} / {linkstart3}Rescanear…{linkend})",
@@ -407,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Introduzca su clave de suscripción para aumentar el límite de usuarios. Para obtener más información sobre Nextcloud Enterprise, visite nuestro sitio web.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Zona de comprobación %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Esta es la versión para la comunidad, sin soportede Nextcloud. Dado el tamaño de esta instancia, no se puede garantizar el rendimiento, la fiabilidad y la escalabilidad. Las notificaciones Push han sido desactivadas para evitar sobrecargas en nuestro servicio gratuito. Más información sobre las ventajas de Nextcloud Enterprise en nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 es la última versión compatible con PHP 7.3. Nextcloud 24 requiere al menos PHP 7.4.",
"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}." : "A algunas columnas de la base de datos les falta convertirse a \"big int\". Debido a que cambiar los tipos de columna en tablas grandes podría tardar mucho tiempo no fueron cambiadas automáticamente. Ejecutando 'occ db:convert-filecache-bigint' se pueden aplicar estos cambios pendientes de manera manual. Esta operación debe realizarse cuando el servidor esté sin conexión. Para más detalles, consulte {linkstart}la página de documentación ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Para migrar a otra base de datos use la herramienta de línea de comandos (CLI): 'occ db:convert-type', o revise la {linkstart}documentación ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La cabecera HTTP \"{header}\" no contiene \"{expected}\". \nEste es un riesgo potencial de seguridad o privacidad, por lo que se recomienda ajustar esta configuración.",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index 9f36c4796e5..fdefcd0ed6d 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La memoria caché no ha sido configurada. Para mejorar el rendimiento, por favor, configure memcache si está disponible. Puede encontrar más información en la {linkstart}documentación ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "No se ha encontrado una fuente de aleatoriedad en PHP, lo que se desaconseja por razones de seguridad. Puede encontrar más información en la {linkstart}documentación ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Actualmente está ejecutando PHP {version}. Actualize la versión de PHP para beneficiarse de las {linkstart}actualizaciones de rendimiento y seguridad que aporta PHP Group ↗{linkend} en cuanto su distribución lo soporte.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 es la última versión compatible con PHP 7.3. Nextcloud 24 requiere al menos PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La configuración de la cabecera del proxy reverso no es correcta o está accediendo a Nextcloud desde un proxy de confianza. Si no, esto es un problema de seguridad y podría permitir a un ataccante a disfrazar su dirección IP como visible para Nextcloud. Se puede encontrar más información en la {linkstart}documentación ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached está configurado como una caché distribuida, pero se ha instalado el módulo equivocado de PHP \"memcache\". \\OC\\Memcache\\Memcached solo soporta \"memcached\" y no \"memcache\". Comprueba la {linkstart}wiki de memcached wiki acerca de ambos módulos ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Algunos archivos no han pasado la comprobación de integridad. Puede encontrar más información sobre cómo resolver este problema en la {linkstart1}documentacióarchivosn ↗{linkend}. ({linkstart2}Lista de archivos no válidos…{linkend} / {linkstart3}Rescanear…{linkend})",
@@ -405,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Introduzca su clave de suscripción para aumentar el límite de usuarios. Para obtener más información sobre Nextcloud Enterprise, visite nuestro sitio web.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Zona de comprobación %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Esta es la versión para la comunidad, sin soportede Nextcloud. Dado el tamaño de esta instancia, no se puede garantizar el rendimiento, la fiabilidad y la escalabilidad. Las notificaciones Push han sido desactivadas para evitar sobrecargas en nuestro servicio gratuito. Más información sobre las ventajas de Nextcloud Enterprise en nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 es la última versión compatible con PHP 7.3. Nextcloud 24 requiere al menos PHP 7.4.",
"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}." : "A algunas columnas de la base de datos les falta convertirse a \"big int\". Debido a que cambiar los tipos de columna en tablas grandes podría tardar mucho tiempo no fueron cambiadas automáticamente. Ejecutando 'occ db:convert-filecache-bigint' se pueden aplicar estos cambios pendientes de manera manual. Esta operación debe realizarse cuando el servidor esté sin conexión. Para más detalles, consulte {linkstart}la página de documentación ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Para migrar a otra base de datos use la herramienta de línea de comandos (CLI): 'occ db:convert-type', o revise la {linkstart}documentación ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La cabecera HTTP \"{header}\" no contiene \"{expected}\". \nEste es un riesgo potencial de seguridad o privacidad, por lo que se recomienda ajustar esta configuración.",
diff --git a/core/l10n/eu.js b/core/l10n/eu.js
index eb7779713d7..9330059203d 100644
--- a/core/l10n/eu.js
+++ b/core/l10n/eu.js
@@ -83,7 +83,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ez da memoria cachea konfiguratu. Errendimendua hobetzeko, konfiguratu memcache bat, erabilgarri badago. Informazio gehiago aurki dezakezu {linkstart} dokumentazioan ↗ {linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP-k ez du aurkitu iturri egokirik ausazkotasunerako, segurtasun arrazoiengatik oso gomendagarria dena. Informazio gehiago aurki dezakezu {linkstart} dokumentazioan ↗ {linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Une honetan PHP {version} exekutatzen ari zara. Bertsio-berritu zure PHP bertsioa PHP Group-ek link {linkend} eskaintzen dituen {linkstart} errendimendu eta segurtasun eguneratzeak aprobetxatzeko zure banaketak onartu bezain laster.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 da PHP 7.3 onartzen duen azken bertsioa. Nextcloud 24 PHP 7.4 behar du gutxienez.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Alderantzizko proxy goiburuko konfigurazioa okerra da, edo Nextcloud-era proxy fidagarri batetik sartzen ari zara. Hala ez bada, segurtasun arazo bat bada eta erasotzaile batek Nextcloud-en ikusgai dagoen IP helbidea faltsutzea baimendu dezake. Informazio gehiago aurkitu daiteke {linkstart} dokumentazioan ↗ {linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached banatutako cache gisa konfiguratuta dago, baina \"memcache\" PHP modulu okerra dago instalatuta. \\ OC \\ Memcache \\ Memcached-ek \"memcached\" soilik onartzen du eta ez \"memcache\". Ikusi bi moduluei buruzko {linkstart} memcached wikia ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Zenbait fitxategik ez dute integritate egiaztapena gainditu. Arazo hau konpontzeko moduari buruzko informazio gehiago aurki daiteke {linkstart1} dokumentazioan ↗ {linkend}. ({linkstart2} Baliogabeko fitxategien zerrenda...{linkend} / {linkstart3} Eskaneatu berriro...{linkend})",
@@ -400,6 +399,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Sartu zure harpidetza-gakoa erabiltzaile muga goratzeko. Nextcloud Enterprise-ri buruzko informazio gehiagorako ikusi gure webgunea.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Taula egiaztatzen %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Hau laguntzarik gabeko Nextcloud komunitate bertsioa da. Instantzia honen tamaina kontuan hartuz, ezin da errendimendua, fidagarritasuna eta eskalabilitatea ziurtatu. Push jakinarazpenak desgaitu egin dira gure doako zerbitzua ez gainkargatzeko. Ikusi Nextcloud Enterprise buruzko abantailak nextcloud.com/enterprise orrian.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 da PHP 7.3 onartzen duen azken bertsioa. Nextcloud 24 PHP 7.4 behar du gutxienez.",
"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}." : "Datu baseko zutabe batzuek big int bihurtzea falta dute. Taula handietan zutabe motak aldatzeak denbora dezente har dezakeenez ez dira automatikoki aldatu. 'Occ db: convert-filecache-bigint' exekutatuz zain dauden aldaketak eskuz aplika litezke. Eragiketa hau instantzia lineaz kanpo dagoen bitartean egin behar da. Xehetasun gehiagorako, irakurri {linkstart} honi buruzko dokumentazio orria ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Beste datu-base batera migratzeko, erabili komando-lerroko tresna hau: 'occ db: convert-type', edo ikusi {linkstart} dokumentazioa ↗ {linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{expected}\" ez dago \"{header}\" HTTP goiburuaren barnean. Hau segurtasun edo pribatutasun arrisku bat izan daiteke. Ezarpenean dagokion balioa jartzea gomendatzen da.",
diff --git a/core/l10n/eu.json b/core/l10n/eu.json
index 97dc5b31a9a..3d872f480de 100644
--- a/core/l10n/eu.json
+++ b/core/l10n/eu.json
@@ -81,7 +81,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ez da memoria cachea konfiguratu. Errendimendua hobetzeko, konfiguratu memcache bat, erabilgarri badago. Informazio gehiago aurki dezakezu {linkstart} dokumentazioan ↗ {linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP-k ez du aurkitu iturri egokirik ausazkotasunerako, segurtasun arrazoiengatik oso gomendagarria dena. Informazio gehiago aurki dezakezu {linkstart} dokumentazioan ↗ {linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Une honetan PHP {version} exekutatzen ari zara. Bertsio-berritu zure PHP bertsioa PHP Group-ek link {linkend} eskaintzen dituen {linkstart} errendimendu eta segurtasun eguneratzeak aprobetxatzeko zure banaketak onartu bezain laster.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 da PHP 7.3 onartzen duen azken bertsioa. Nextcloud 24 PHP 7.4 behar du gutxienez.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Alderantzizko proxy goiburuko konfigurazioa okerra da, edo Nextcloud-era proxy fidagarri batetik sartzen ari zara. Hala ez bada, segurtasun arazo bat bada eta erasotzaile batek Nextcloud-en ikusgai dagoen IP helbidea faltsutzea baimendu dezake. Informazio gehiago aurkitu daiteke {linkstart} dokumentazioan ↗ {linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached banatutako cache gisa konfiguratuta dago, baina \"memcache\" PHP modulu okerra dago instalatuta. \\ OC \\ Memcache \\ Memcached-ek \"memcached\" soilik onartzen du eta ez \"memcache\". Ikusi bi moduluei buruzko {linkstart} memcached wikia ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Zenbait fitxategik ez dute integritate egiaztapena gainditu. Arazo hau konpontzeko moduari buruzko informazio gehiago aurki daiteke {linkstart1} dokumentazioan ↗ {linkend}. ({linkstart2} Baliogabeko fitxategien zerrenda...{linkend} / {linkstart3} Eskaneatu berriro...{linkend})",
@@ -398,6 +397,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Sartu zure harpidetza-gakoa erabiltzaile muga goratzeko. Nextcloud Enterprise-ri buruzko informazio gehiagorako ikusi gure webgunea.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Taula egiaztatzen %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Hau laguntzarik gabeko Nextcloud komunitate bertsioa da. Instantzia honen tamaina kontuan hartuz, ezin da errendimendua, fidagarritasuna eta eskalabilitatea ziurtatu. Push jakinarazpenak desgaitu egin dira gure doako zerbitzua ez gainkargatzeko. Ikusi Nextcloud Enterprise buruzko abantailak nextcloud.com/enterprise orrian.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 da PHP 7.3 onartzen duen azken bertsioa. Nextcloud 24 PHP 7.4 behar du gutxienez.",
"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}." : "Datu baseko zutabe batzuek big int bihurtzea falta dute. Taula handietan zutabe motak aldatzeak denbora dezente har dezakeenez ez dira automatikoki aldatu. 'Occ db: convert-filecache-bigint' exekutatuz zain dauden aldaketak eskuz aplika litezke. Eragiketa hau instantzia lineaz kanpo dagoen bitartean egin behar da. Xehetasun gehiagorako, irakurri {linkstart} honi buruzko dokumentazio orria ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Beste datu-base batera migratzeko, erabili komando-lerroko tresna hau: 'occ db: convert-type', edo ikusi {linkstart} dokumentazioa ↗ {linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{expected}\" ez dago \"{header}\" HTTP goiburuaren barnean. Hau segurtasun edo pribatutasun arrisku bat izan daiteke. Ezarpenean dagokion balioa jartzea gomendatzen da.",
diff --git a/core/l10n/fi.js b/core/l10n/fi.js
index e96ede0cbe6..c2dd4a967ec 100644
--- a/core/l10n/fi.js
+++ b/core/l10n/fi.js
@@ -68,7 +68,6 @@ OC.L10N.register(
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Tietokantaasi ei suoriteta \"READ COMMITTED\"-transaktioeristystasolla. Tämä saattaa aiheuttaa ongelmia, kun useita toimintoja suoritetaan rinnakkaisesti.",
"The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP \"fileinfo\" moduuli puuttuu. Moduulin käyttöönottaminen on vahvasti suositeltua paremman MIME tyyppien tunnistuksen saavuttamiseksi.",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Cron-työtä ei voitu suorittaa komentorivin kautta. Seuraavat tekniset virheet havaittiin:",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 on viimeinen julkaiusu, joka tukee PHP:n versiota 7.3. Nextcloud 24 vaatii vähintään PHP:n version 7.4.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP-funktio \"set_time_limit\" ei ole käytettävissä. Tämä saattaa johtaa siihen, että skriptien suoritus päättyy ennenaikaisesti ja Nextcloud-asennus rikkoutuu. Funktion käyttäminen on erittäin suositeltavaa.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "PHP-asennuksessasi ei ole FreeType-tukea, ja siitä aiheutuu profiilikuvien sekä asetuskäyttöliittymän rikkoutuminen.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Puuttuva indeksi \"{indexName}\" taulussa \"{tableName}\".",
@@ -364,6 +363,7 @@ OC.L10N.register(
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Tätä yhteisöjulkaisua Nextcloudista ei tueta, ja pikailmoitukset eivät ole saatavilla.",
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Syötä tilausavaimesi lisätäksesi käyttäjärajaa. Lisätietoja Nextcloud Enterprisestä saat nettisivuiltamme.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Tarkistetaan taulua %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 on viimeinen julkaiusu, joka tukee PHP:n versiota 7.3. Nextcloud 24 vaatii vähintään PHP:n version 7.4.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Siirtyäksesi toiseen tietokantaan, käytä komentorivityökalua: 'occ db:convert-type', tai lue {linkstart}dokumentaatio ↗{linkend}.",
"Collaboratively edit office documents." : "Muokkaa toimistodokumentteja yhteistyössä.",
"Local document editing back-end used by the Collabora Online app." : "Collabora Online-sovelluksen käyttämä taustasovellus paikalliseen dokumenttien muokkaamiseen.",
diff --git a/core/l10n/fi.json b/core/l10n/fi.json
index 99b88781ff4..dd498a65c54 100644
--- a/core/l10n/fi.json
+++ b/core/l10n/fi.json
@@ -66,7 +66,6 @@
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Tietokantaasi ei suoriteta \"READ COMMITTED\"-transaktioeristystasolla. Tämä saattaa aiheuttaa ongelmia, kun useita toimintoja suoritetaan rinnakkaisesti.",
"The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP \"fileinfo\" moduuli puuttuu. Moduulin käyttöönottaminen on vahvasti suositeltua paremman MIME tyyppien tunnistuksen saavuttamiseksi.",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Cron-työtä ei voitu suorittaa komentorivin kautta. Seuraavat tekniset virheet havaittiin:",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 on viimeinen julkaiusu, joka tukee PHP:n versiota 7.3. Nextcloud 24 vaatii vähintään PHP:n version 7.4.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP-funktio \"set_time_limit\" ei ole käytettävissä. Tämä saattaa johtaa siihen, että skriptien suoritus päättyy ennenaikaisesti ja Nextcloud-asennus rikkoutuu. Funktion käyttäminen on erittäin suositeltavaa.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "PHP-asennuksessasi ei ole FreeType-tukea, ja siitä aiheutuu profiilikuvien sekä asetuskäyttöliittymän rikkoutuminen.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Puuttuva indeksi \"{indexName}\" taulussa \"{tableName}\".",
@@ -362,6 +361,7 @@
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Tätä yhteisöjulkaisua Nextcloudista ei tueta, ja pikailmoitukset eivät ole saatavilla.",
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Syötä tilausavaimesi lisätäksesi käyttäjärajaa. Lisätietoja Nextcloud Enterprisestä saat nettisivuiltamme.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Tarkistetaan taulua %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 on viimeinen julkaiusu, joka tukee PHP:n versiota 7.3. Nextcloud 24 vaatii vähintään PHP:n version 7.4.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Siirtyäksesi toiseen tietokantaan, käytä komentorivityökalua: 'occ db:convert-type', tai lue {linkstart}dokumentaatio ↗{linkend}.",
"Collaboratively edit office documents." : "Muokkaa toimistodokumentteja yhteistyössä.",
"Local document editing back-end used by the Collabora Online app." : "Collabora Online-sovelluksen käyttämä taustasovellus paikalliseen dokumenttien muokkaamiseen.",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index 721e01ecab6..8a150319195 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Pas de mémoire cache configurée. Pour améliorer les performances, merci de configurer un memcache, si disponible. Des informations sont disponibles dans la {linkstart}documentation ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Aucune source appropriée pour l'aléatoire n'a été trouvée par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Des informations complémentaires peuvent être trouvées dans la {linkstart}documentation ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Vous disposez actuellement de PHP {version}. Mettez à niveau votre version de PHP pour bénéficier des {linkstart}améliorations de performance et de correctifs de sécurité fournis par le groupe PHP ↗{linkend} dès que votre distribution les supporte.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 est la dernière version prenant en charge PHP 7.3. Nextcloud 24 nécessite au moins PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La configuration des entêtes du reverse proxy est incorrecte, ou vous accédez à Nextcloud depuis un proxy de confiance. Si ce n'est pas le cas, c'est un problème de sécurité, qui peut permettre à un attaquant d'usurper l'adresse IP affichée à Nextcloud. Plus d'information peuvent être trouvées dans la {linkstart}documentation ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached est configuré comme cache distribué, mais le mauvais module PHP \"memcache\" est installé. \\OC\\Memcache\\Memcached est le seul a supporter \"memcached\" et non \"memcache\". Se reporter au {linkstart}wiki memcached à propos des deux modules ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Certains fichiers n'ont pas passé la vérification d'intégrité. Plus d'informations sur la résolution de ce problème peuvent être trouvées dans la {linkstart1}documentation ↗{linkend}. ({linkstart2}Liste des fichiers invalides…{linkend} / {linkstart3}Rescanner…{linkend})",
@@ -407,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Entrez votre clé d’abonnement pour augmenter la limite par utilisateur. Pour plus d'informations sur Nextcloud Enterprise, consultez notre site web.",
"[%d / %d]: Checking table %s" : "[%d / %d] : Vérification de la table %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Il s'agit de la version communautaire non prise en charge de Nextcloud. Compte tenu de la taille de cette instance, les performances, la fiabilité et l'extensibilité ne peuvent être garanties. Les notifications push ont été désactivées pour éviter de surcharger notre service gratuit. Apprenez-en plus sur les avantages de Nextcloud Enterprise sur nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 est la dernière version prenant en charge PHP 7.3. Nextcloud 24 nécessite au moins PHP 7.4.",
"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}." : "Certaines colonnes de la base de données n'ont pas été converties en big int. Changer le type de colonne dans de grandes tables peut prendre beaucoup de temps, elles n'ont donc pas été converties automatiquement. En exécutant 'occ db:convert-filecache-bigint', ces changements en suspens peuvent être déclenchés manuellement. Cette opération doit être exécutée pendant que l'instance est hors ligne. Pour plus d'information, consulter {linkstart}la page de documentation à ce propos ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Pour migrer vers une autre base de données, utiliser la ligne de commande : 'occ db:convert-type', ou se reporter à la {linkstart}documentation ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" ne contient pas \"{expected}\". Ceci est un risque potentiel pour la sécurité ou la vie privée, et il est recommandé d'ajuster ce paramètre en conséquence.",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index ae805b45b2a..3628d7a554c 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Pas de mémoire cache configurée. Pour améliorer les performances, merci de configurer un memcache, si disponible. Des informations sont disponibles dans la {linkstart}documentation ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Aucune source appropriée pour l'aléatoire n'a été trouvée par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Des informations complémentaires peuvent être trouvées dans la {linkstart}documentation ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Vous disposez actuellement de PHP {version}. Mettez à niveau votre version de PHP pour bénéficier des {linkstart}améliorations de performance et de correctifs de sécurité fournis par le groupe PHP ↗{linkend} dès que votre distribution les supporte.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 est la dernière version prenant en charge PHP 7.3. Nextcloud 24 nécessite au moins PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La configuration des entêtes du reverse proxy est incorrecte, ou vous accédez à Nextcloud depuis un proxy de confiance. Si ce n'est pas le cas, c'est un problème de sécurité, qui peut permettre à un attaquant d'usurper l'adresse IP affichée à Nextcloud. Plus d'information peuvent être trouvées dans la {linkstart}documentation ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached est configuré comme cache distribué, mais le mauvais module PHP \"memcache\" est installé. \\OC\\Memcache\\Memcached est le seul a supporter \"memcached\" et non \"memcache\". Se reporter au {linkstart}wiki memcached à propos des deux modules ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Certains fichiers n'ont pas passé la vérification d'intégrité. Plus d'informations sur la résolution de ce problème peuvent être trouvées dans la {linkstart1}documentation ↗{linkend}. ({linkstart2}Liste des fichiers invalides…{linkend} / {linkstart3}Rescanner…{linkend})",
@@ -405,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Entrez votre clé d’abonnement pour augmenter la limite par utilisateur. Pour plus d'informations sur Nextcloud Enterprise, consultez notre site web.",
"[%d / %d]: Checking table %s" : "[%d / %d] : Vérification de la table %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Il s'agit de la version communautaire non prise en charge de Nextcloud. Compte tenu de la taille de cette instance, les performances, la fiabilité et l'extensibilité ne peuvent être garanties. Les notifications push ont été désactivées pour éviter de surcharger notre service gratuit. Apprenez-en plus sur les avantages de Nextcloud Enterprise sur nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 est la dernière version prenant en charge PHP 7.3. Nextcloud 24 nécessite au moins PHP 7.4.",
"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}." : "Certaines colonnes de la base de données n'ont pas été converties en big int. Changer le type de colonne dans de grandes tables peut prendre beaucoup de temps, elles n'ont donc pas été converties automatiquement. En exécutant 'occ db:convert-filecache-bigint', ces changements en suspens peuvent être déclenchés manuellement. Cette opération doit être exécutée pendant que l'instance est hors ligne. Pour plus d'information, consulter {linkstart}la page de documentation à ce propos ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Pour migrer vers une autre base de données, utiliser la ligne de commande : 'occ db:convert-type', ou se reporter à la {linkstart}documentation ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" ne contient pas \"{expected}\". Ceci est un risque potentiel pour la sécurité ou la vie privée, et il est recommandé d'ajuster ce paramètre en conséquence.",
diff --git a/core/l10n/hu.js b/core/l10n/hu.js
index a870fe0a64d..d64d1ad6f69 100644
--- a/core/l10n/hu.js
+++ b/core/l10n/hu.js
@@ -40,6 +40,7 @@ OC.L10N.register(
"Some of your link shares have been removed" : "Néhány megosztási hivatkozása eltávolításra került",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Egy biztonsági hiba miatt el kellett távolítsunk néhány megosztási hivatkozását. További információkért lásd a lenti hivatkozást.",
"The user limit of this instance is reached." : "Elérte ennek a példánynak a felhasználói korlátját.",
+ "Enter your subscription key in the support app in order to increase the user limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Adja meg az előfizetési kulcsát a támogatási alkalmazásban, hogy megnövelje a felhasználókorlátot. Ez a Nextcloud vállalati ajánlatainak további előnyeit is biztosítja, és határozottan ajánlott a céges üzemeltetés esetén.",
"Learn more ↗" : "Tudjon meg többet ↗",
"Preparing update" : "Felkészülés a frissítésre",
"[%d / %d]: %s" : "[%d / %d]: %s",
@@ -83,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nincs beállítva memória gyorsítótár. A teljesítmény növelése érdekében állítson be egy memcache-t, ha van ilyen. További információk a {linkstart}dokumentációban találhatók ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "A PHP nem talált megfelelő véletlenszerűségi forrást, amely biztonsági okokból erősen ellenjavallt. További információk a {linkstart}dokumentációban találhatók ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Ön jelenleg a következő verziójú PHP-t futtatja: {version}. Amint a disztribúciója támogatja, frissítse a PHP verzióját, hogy kihasználhassa a {linkstart}PHP Group által nyújtott teljesítménybeli és biztonsági frissítéseket ↗{linkend}.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "A Nextcloud 23 az utolsó olyan kiadás, amely támogatja a PHP 7.3-as verzióját. A Nextcloud 21 legalább PHP 7.4-et igényel.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "A fordított proxy fejléc konfigurációja helytelen, vagy egy megbízható proxyból érhető el a Nextcloud. Ha nem, akkor ez biztonsági probléma, és lehetővé teheti a támadók számára, hogy a Nextcloud számára látható IP-címüket meghamisítsák. További információk a {linkstart}dokumentációban találhatók ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "A Memcached elosztott gyorsítótárként van konfigurálva, de rossz „memcache” PHP modul van telepítve. Az OC\\Memcache\\Memcached csak a „memcached” modult támogatja, a „memcache”-t nem. Lásd a {linkstart}memcached wiki-t mindkét modulról ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Néhány fájl elbukott az integritásellenőrzésen. További információk a probléma megoldásáról a {linkstart1}dokumentációban találhatók ↗{linkend}. ({linkstart2}Érvénytelen fájlok listája…{linkend} / {linkstart3}Újrakeresés…{linkend})",
@@ -99,6 +99,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Ennél a példánynál hiányzik néhány javasolt PHP modul. A jobb teljesítmény és nagyobb kompatibilitás miatt ezek telepítése erősen javallott.",
"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." : "Az „imagick” PHP-modul nem engedélyezett, de a témázó alkalmazás igen. A webhelyikonok előállításához telepítenie és engedélyeznie kell ezt a modult.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "A „gmp” vagy a „bcmath” PHP modulok nem engedélyezettek. Ha WebAuthn jelszó nélküli hitelesítést használ, akkor szükség van ezekre a modulokra.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Úgy tűnik, hogy a PHP 32 bites változatát futtatja. a Nextcloud 26-os és újabb verziójához 64 bites szükséges. Frissítse az operációs rendszerét és a PHP-ját 64 bitesre. További információkért olvassa el az erről szóló {linkstart}dokumentációs oldalt ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "A php-imagick modul ebben az esetben nem rendelkezik SVG támogatással. A jobb kompatibilitás érdekében ajánlott telepíteni.",
"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}." : "Az adatbázis egyes oszlopaiból hiányzik a big int átalakítás. MIvel a nagy táblák oszloptípusainak megváltoztatása eltarthat egy ideig, azok nem lettek automatikusan megváltoztatva. Az „occ db: convert-filecache-bigint” futtatásával ezek a függőben lévő módosítások kézileg is alkalmazhatók. Ezt a műveletet offline állapotban kell végrehajtani. További részletekért olvassa el a {linkstart}erről szóló dokumentációs oldalt ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Jelenleg SQLite van háttéradatbázisként használva. Nagyobb telepítésekhez javasoljuk, hogy váltson más háttéradatbázisra. ",
@@ -202,6 +203,8 @@ OC.L10N.register(
"An error occurred while searching for {type}" : "Hiba történt a(z) {type} keresése sorá",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["A kereséshez írjon be a legalább {minSearchLength} karaktert","A kereséshez írjon be a legalább {minSearchLength} karaktert"],
"This browser is not supported" : "Ez a böngésző nem támogatott.",
+ "Your browser is not supported. Please upgrade to a newer version or a supported one." : "A böngészője nem támogatott. Frissítsen újabb verzióra, vagy váltson egy támogatott böngészőre.",
+ "Continue with this unsupported browser" : "Folytatás ezzel a nem támogatott böngészővel",
"Supported versions" : "Támogatott verziók",
"{name} version {version} and above" : "{name} {version} verziója, és újabb",
"Search {types} …" : "{types} keresése…",
@@ -292,6 +295,7 @@ OC.L10N.register(
"The profile does not exist." : "A profil nem létezik.",
"Back to %s" : "Vissza ide %s",
"Page not found" : "Az oldal nem található",
+ "The page could not be found on the server." : "Az oldal nem található a kiszolgálón.",
"Too many requests" : "Túl sok kérés",
"There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Túl sok kérés érkezett a hálózatától. Próbálja újra később, vagy ha ez egy hiba, akkor forduljon a rendszergazdához.",
"Error" : "Hiba",
@@ -402,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Adja meg előfizetésének kulcsát a felhasználói korlát növeléséhez. További információ a Nextcloud Enterprise-ról a weboldalunkon található.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Tábla ellenőrzése: %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Ez a Nextcloud nem támogatott közösségi kiadása. A példány mérete miatt a teljesítménye, megbízhatósága és skálázhatósága nem garantálható. A leküldéses értesítések letiltásra kerültek, hogy ne terheljék túl az ingyenes szolgáltatásunkat. Tudjon meg többet a Nextcloud Enterprise előnyeiről a nextcloud.com/enterprise oldalon.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "A Nextcloud 23 az utolsó olyan kiadás, amely támogatja a PHP 7.3-as verzióját. A Nextcloud 21 legalább PHP 7.4-et igényel.",
"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}." : "Az adatbázis egyes oszlopaiból hiányzik a big int átalakítás. MIvel a nagy táblák oszloptípusainak megváltoztatása eltarthat egy ideig, azok nem lettek automatikusan megváltoztatva. Az „occ db: convert-filecache-bigint” futtatásával ezek a függőben lévő módosítások kézileg is alkalmazhatók. Ezt a műveletet offline állapotban kell végrehajtani. További részletekért olvassa el a {linkstart}erről szóló dokumentációs oldalt ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Más adatbázisba történő áttéréshez használja a parancssori eszközt: „occ db: convert-type”, vagy tekintse meg a {linkstart}dokumentációt ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A(z) „{header}” HTTP-fejléc nem tartalmazza ezt: „{expected}”. Ez egy lehetséges biztonsági és adatvédelmi kockázat, ezért javasolt, hogy módosítsa megfelelően a beállítást.",
@@ -417,6 +422,7 @@ OC.L10N.register(
"More apps menu" : "További alkalmazások menü",
"Settings menu" : "Beállítások menü",
"The password is wrong. Try again." : "A megadott jelszó hibás. Próbálja újra.",
- "Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása"
+ "Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Úgy tűnik, hogy a PHP 32 bites változatát futtatja. a Nextcloud 26-os és újabb verziójához 64 bites szükséges. Frissítse az operációs rendszerét és a PHP-ját 64 bitesre. További információkért olvassa el az erről szóló {linkstart}dokumentációs oldalt ↗{linkend}."
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/hu.json b/core/l10n/hu.json
index 2d2dc8a21c5..57e72eb233e 100644
--- a/core/l10n/hu.json
+++ b/core/l10n/hu.json
@@ -38,6 +38,7 @@
"Some of your link shares have been removed" : "Néhány megosztási hivatkozása eltávolításra került",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Egy biztonsági hiba miatt el kellett távolítsunk néhány megosztási hivatkozását. További információkért lásd a lenti hivatkozást.",
"The user limit of this instance is reached." : "Elérte ennek a példánynak a felhasználói korlátját.",
+ "Enter your subscription key in the support app in order to increase the user limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Adja meg az előfizetési kulcsát a támogatási alkalmazásban, hogy megnövelje a felhasználókorlátot. Ez a Nextcloud vállalati ajánlatainak további előnyeit is biztosítja, és határozottan ajánlott a céges üzemeltetés esetén.",
"Learn more ↗" : "Tudjon meg többet ↗",
"Preparing update" : "Felkészülés a frissítésre",
"[%d / %d]: %s" : "[%d / %d]: %s",
@@ -81,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nincs beállítva memória gyorsítótár. A teljesítmény növelése érdekében állítson be egy memcache-t, ha van ilyen. További információk a {linkstart}dokumentációban találhatók ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "A PHP nem talált megfelelő véletlenszerűségi forrást, amely biztonsági okokból erősen ellenjavallt. További információk a {linkstart}dokumentációban találhatók ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Ön jelenleg a következő verziójú PHP-t futtatja: {version}. Amint a disztribúciója támogatja, frissítse a PHP verzióját, hogy kihasználhassa a {linkstart}PHP Group által nyújtott teljesítménybeli és biztonsági frissítéseket ↗{linkend}.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "A Nextcloud 23 az utolsó olyan kiadás, amely támogatja a PHP 7.3-as verzióját. A Nextcloud 21 legalább PHP 7.4-et igényel.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "A fordított proxy fejléc konfigurációja helytelen, vagy egy megbízható proxyból érhető el a Nextcloud. Ha nem, akkor ez biztonsági probléma, és lehetővé teheti a támadók számára, hogy a Nextcloud számára látható IP-címüket meghamisítsák. További információk a {linkstart}dokumentációban találhatók ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "A Memcached elosztott gyorsítótárként van konfigurálva, de rossz „memcache” PHP modul van telepítve. Az OC\\Memcache\\Memcached csak a „memcached” modult támogatja, a „memcache”-t nem. Lásd a {linkstart}memcached wiki-t mindkét modulról ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Néhány fájl elbukott az integritásellenőrzésen. További információk a probléma megoldásáról a {linkstart1}dokumentációban találhatók ↗{linkend}. ({linkstart2}Érvénytelen fájlok listája…{linkend} / {linkstart3}Újrakeresés…{linkend})",
@@ -97,6 +97,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Ennél a példánynál hiányzik néhány javasolt PHP modul. A jobb teljesítmény és nagyobb kompatibilitás miatt ezek telepítése erősen javallott.",
"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." : "Az „imagick” PHP-modul nem engedélyezett, de a témázó alkalmazás igen. A webhelyikonok előállításához telepítenie és engedélyeznie kell ezt a modult.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "A „gmp” vagy a „bcmath” PHP modulok nem engedélyezettek. Ha WebAuthn jelszó nélküli hitelesítést használ, akkor szükség van ezekre a modulokra.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Úgy tűnik, hogy a PHP 32 bites változatát futtatja. a Nextcloud 26-os és újabb verziójához 64 bites szükséges. Frissítse az operációs rendszerét és a PHP-ját 64 bitesre. További információkért olvassa el az erről szóló {linkstart}dokumentációs oldalt ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "A php-imagick modul ebben az esetben nem rendelkezik SVG támogatással. A jobb kompatibilitás érdekében ajánlott telepíteni.",
"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}." : "Az adatbázis egyes oszlopaiból hiányzik a big int átalakítás. MIvel a nagy táblák oszloptípusainak megváltoztatása eltarthat egy ideig, azok nem lettek automatikusan megváltoztatva. Az „occ db: convert-filecache-bigint” futtatásával ezek a függőben lévő módosítások kézileg is alkalmazhatók. Ezt a műveletet offline állapotban kell végrehajtani. További részletekért olvassa el a {linkstart}erről szóló dokumentációs oldalt ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Jelenleg SQLite van háttéradatbázisként használva. Nagyobb telepítésekhez javasoljuk, hogy váltson más háttéradatbázisra. ",
@@ -200,6 +201,8 @@
"An error occurred while searching for {type}" : "Hiba történt a(z) {type} keresése sorá",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["A kereséshez írjon be a legalább {minSearchLength} karaktert","A kereséshez írjon be a legalább {minSearchLength} karaktert"],
"This browser is not supported" : "Ez a böngésző nem támogatott.",
+ "Your browser is not supported. Please upgrade to a newer version or a supported one." : "A böngészője nem támogatott. Frissítsen újabb verzióra, vagy váltson egy támogatott böngészőre.",
+ "Continue with this unsupported browser" : "Folytatás ezzel a nem támogatott böngészővel",
"Supported versions" : "Támogatott verziók",
"{name} version {version} and above" : "{name} {version} verziója, és újabb",
"Search {types} …" : "{types} keresése…",
@@ -290,6 +293,7 @@
"The profile does not exist." : "A profil nem létezik.",
"Back to %s" : "Vissza ide %s",
"Page not found" : "Az oldal nem található",
+ "The page could not be found on the server." : "Az oldal nem található a kiszolgálón.",
"Too many requests" : "Túl sok kérés",
"There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Túl sok kérés érkezett a hálózatától. Próbálja újra később, vagy ha ez egy hiba, akkor forduljon a rendszergazdához.",
"Error" : "Hiba",
@@ -400,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Adja meg előfizetésének kulcsát a felhasználói korlát növeléséhez. További információ a Nextcloud Enterprise-ról a weboldalunkon található.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Tábla ellenőrzése: %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Ez a Nextcloud nem támogatott közösségi kiadása. A példány mérete miatt a teljesítménye, megbízhatósága és skálázhatósága nem garantálható. A leküldéses értesítések letiltásra kerültek, hogy ne terheljék túl az ingyenes szolgáltatásunkat. Tudjon meg többet a Nextcloud Enterprise előnyeiről a nextcloud.com/enterprise oldalon.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "A Nextcloud 23 az utolsó olyan kiadás, amely támogatja a PHP 7.3-as verzióját. A Nextcloud 21 legalább PHP 7.4-et igényel.",
"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}." : "Az adatbázis egyes oszlopaiból hiányzik a big int átalakítás. MIvel a nagy táblák oszloptípusainak megváltoztatása eltarthat egy ideig, azok nem lettek automatikusan megváltoztatva. Az „occ db: convert-filecache-bigint” futtatásával ezek a függőben lévő módosítások kézileg is alkalmazhatók. Ezt a műveletet offline állapotban kell végrehajtani. További részletekért olvassa el a {linkstart}erről szóló dokumentációs oldalt ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Más adatbázisba történő áttéréshez használja a parancssori eszközt: „occ db: convert-type”, vagy tekintse meg a {linkstart}dokumentációt ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A(z) „{header}” HTTP-fejléc nem tartalmazza ezt: „{expected}”. Ez egy lehetséges biztonsági és adatvédelmi kockázat, ezért javasolt, hogy módosítsa megfelelően a beállítást.",
@@ -415,6 +420,7 @@
"More apps menu" : "További alkalmazások menü",
"Settings menu" : "Beállítások menü",
"The password is wrong. Try again." : "A megadott jelszó hibás. Próbálja újra.",
- "Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása"
+ "Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Úgy tűnik, hogy a PHP 32 bites változatát futtatja. a Nextcloud 26-os és újabb verziójához 64 bites szükséges. Frissítse az operációs rendszerét és a PHP-ját 64 bitesre. További információkért olvassa el az erről szóló {linkstart}dokumentációs oldalt ↗{linkend}."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/id.js b/core/l10n/id.js
index 92822017254..d539f5f49c4 100644
--- a/core/l10n/id.js
+++ b/core/l10n/id.js
@@ -67,7 +67,6 @@ OC.L10N.register(
"The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Modul PHP \"fileinfo\" tidak ditemukan. Sangat dianjurkan untuk mengaktifkan modul ini, agar mendapatkan hasil deteksi terbaik tipe MIME. ",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Tidak memungkinan untuk eksekusi cron job via CLI. Kesalahan teknis berikut muncul:",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Anda sedang menjalankan PHP {version}. Tingkatkan versi PHP Anda untuk memanfaatkan kinerja {linkstart} dan pembaruan keamanan yang disediakan oleh Grup PHP ↗{linkend} segera setelah distribusi Anda mendukungnya.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 adalah rilis terakhir yang mendukung PHP 7.3. Nextcloud 24 membutuhkan setidaknya PHP 7.4.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Fungsi PHP \"set_time_limit\" tidak tersedia. Hal ini dapat menyebabkan instalasi Anda, akibat eksekusi skrip terhenti ditengah-tengah. Mengaktifkan fungsi ini sangat dianjurkan.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "PHP Anda tidak mendukung FreeType, yang akan menyebabkan gangguan pada foto profil dan pengaturan antarmuka.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Tidak ada index \"{indexName}\" pada tabel \"{tableName}\".",
@@ -345,6 +344,7 @@ OC.L10N.register(
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hubungi administrator sistem anda jika pesan ini terus muncul atau muncul tiba-tiba.",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Rilis komunitas Nextcloud ini tidak didukung dan pemberitahuan instan tidak tersedia.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Mengecek tabel %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 adalah rilis terakhir yang mendukung PHP 7.3. Nextcloud 24 membutuhkan setidaknya PHP 7.4.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP header \"{header}\" tidak memiliki \"{expected}\". Hal ini berpotensi risiko keamanan dan kerahasiaan. Direkomendasikan untuk dapat disesuaikan mengikuti anjuran.",
"Collaboratively edit office documents." : "Berkolaborasi edit dokumen perkantoran.",
"Local document editing back-end used by the Collabora Online app." : "Pengeditan dokumen lokal menggunakan aplikasi Collabora Online sebagai back-end.",
diff --git a/core/l10n/id.json b/core/l10n/id.json
index 1e128fd1009..77eeb498640 100644
--- a/core/l10n/id.json
+++ b/core/l10n/id.json
@@ -65,7 +65,6 @@
"The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Modul PHP \"fileinfo\" tidak ditemukan. Sangat dianjurkan untuk mengaktifkan modul ini, agar mendapatkan hasil deteksi terbaik tipe MIME. ",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Tidak memungkinan untuk eksekusi cron job via CLI. Kesalahan teknis berikut muncul:",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Anda sedang menjalankan PHP {version}. Tingkatkan versi PHP Anda untuk memanfaatkan kinerja {linkstart} dan pembaruan keamanan yang disediakan oleh Grup PHP ↗{linkend} segera setelah distribusi Anda mendukungnya.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 adalah rilis terakhir yang mendukung PHP 7.3. Nextcloud 24 membutuhkan setidaknya PHP 7.4.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Fungsi PHP \"set_time_limit\" tidak tersedia. Hal ini dapat menyebabkan instalasi Anda, akibat eksekusi skrip terhenti ditengah-tengah. Mengaktifkan fungsi ini sangat dianjurkan.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "PHP Anda tidak mendukung FreeType, yang akan menyebabkan gangguan pada foto profil dan pengaturan antarmuka.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Tidak ada index \"{indexName}\" pada tabel \"{tableName}\".",
@@ -343,6 +342,7 @@
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hubungi administrator sistem anda jika pesan ini terus muncul atau muncul tiba-tiba.",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Rilis komunitas Nextcloud ini tidak didukung dan pemberitahuan instan tidak tersedia.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Mengecek tabel %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 adalah rilis terakhir yang mendukung PHP 7.3. Nextcloud 24 membutuhkan setidaknya PHP 7.4.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP header \"{header}\" tidak memiliki \"{expected}\". Hal ini berpotensi risiko keamanan dan kerahasiaan. Direkomendasikan untuk dapat disesuaikan mengikuti anjuran.",
"Collaboratively edit office documents." : "Berkolaborasi edit dokumen perkantoran.",
"Local document editing back-end used by the Collabora Online app." : "Pengeditan dokumen lokal menggunakan aplikasi Collabora Online sebagai back-end.",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index 00a4621b54a..acda0a3fc2a 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -76,7 +76,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ekkert skyndiminni (cache) hefur verið stillt. Til að auka afköst ættirðu að setja upp skyndiminni (með memcache) ef það er tiltækt. Hægt er að finna nánari upplýsingar um þetta í {linkstart}hjálparskjölum ↗{linkend} okkar.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Enginn hentugur gagnagjafi fyrir handahófsreikning fannst fyrir PHP, sem er mjög óráðlegt af öryggisástæðum. Hægt er að finna nánari upplýsingar um þetta í {linkstart}hjálparskjölum ↗{linkend} okkar.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Þú ert að keyra PHP {version}. Við hvetjum þig til að uppfæra PHP útgáfuna til að njóta {linkstart}afkastaaukningar og öryggisuppfærslna frá PHP Group ↗{linkend} um leið og dreifingin þín styður það.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er síðasta útgáfan sem styður PHP 7.3. Nextcloud 24 krefst að minnsta kosti PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Uppsetning gagnstæðs milliþjónshauss (reverse proxy header) er röng, eða að þú ert að tengjast Nextcloud frá treystum milliþjóni. Ef þú ert ekki að tengjast Nextcloud frá treystum milliþjóni, þá er þetta er öryggisvandamál og getur leyft árásaraðilum að dulbúa IP-vistfang þeirra sem sýnilegt í Nextcloud. Nánari upplýsingar má finna í {linkstart}hjálparskjölum ↗{linkend} okkar.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached er sett upp sem dreift skyndiminni, en hinsvegar er ranga PHP-einingin \"memcache\" uppsett. \\OC\\Memcache\\Memcached styður einungis \"memcached\" en ekki \"memcache\". Skoðaðu {linkstart}memcached wiki-síðurnar um báðar einingarnar ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Sumar skrár hafa ekki staðist áreiðanleikaprófun Hægt er að finna nánari upplýsingar um þetta í {linkstart1}hjálparskjölum ↗{linkend} okkar. ({linkstart2}Listi yfir ógildar skrár…{linkend} / {linkstart3}Endurskanna…{linkend})",
@@ -371,6 +370,7 @@ OC.L10N.register(
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hafðu samband við kerfisstjóra ef þessi skilaboð eru viðvarandi eða birtust óvænt.",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Þessi samfélagsútgáfa Nextcloud kemur ekki með neinni opinberri aðstoð og rauntímatilkynningar eru ekki til taks.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Athuga töflu %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er síðasta útgáfan sem styður PHP 7.3. Nextcloud 24 krefst að minnsta kosti PHP 7.4.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Til að yfirfæra í annan gagnagrunn skaltu nota skipanalínutólið: 'occ db:convert-type', eða lesa {linkstart}hjálparskjölin ↗ {linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP-hausinn inniheldur ekki \"{expected}\". Þetta er möguleg áhætta varðandi öryggi og gagnaleynd, við mælum með því að laga þessa stillingu.",
"Collaboratively edit office documents." : "Vinna í hóp með skrifstofuskjöl.",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index 0e40c632d6b..b708427b59a 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -74,7 +74,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ekkert skyndiminni (cache) hefur verið stillt. Til að auka afköst ættirðu að setja upp skyndiminni (með memcache) ef það er tiltækt. Hægt er að finna nánari upplýsingar um þetta í {linkstart}hjálparskjölum ↗{linkend} okkar.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Enginn hentugur gagnagjafi fyrir handahófsreikning fannst fyrir PHP, sem er mjög óráðlegt af öryggisástæðum. Hægt er að finna nánari upplýsingar um þetta í {linkstart}hjálparskjölum ↗{linkend} okkar.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Þú ert að keyra PHP {version}. Við hvetjum þig til að uppfæra PHP útgáfuna til að njóta {linkstart}afkastaaukningar og öryggisuppfærslna frá PHP Group ↗{linkend} um leið og dreifingin þín styður það.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er síðasta útgáfan sem styður PHP 7.3. Nextcloud 24 krefst að minnsta kosti PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Uppsetning gagnstæðs milliþjónshauss (reverse proxy header) er röng, eða að þú ert að tengjast Nextcloud frá treystum milliþjóni. Ef þú ert ekki að tengjast Nextcloud frá treystum milliþjóni, þá er þetta er öryggisvandamál og getur leyft árásaraðilum að dulbúa IP-vistfang þeirra sem sýnilegt í Nextcloud. Nánari upplýsingar má finna í {linkstart}hjálparskjölum ↗{linkend} okkar.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached er sett upp sem dreift skyndiminni, en hinsvegar er ranga PHP-einingin \"memcache\" uppsett. \\OC\\Memcache\\Memcached styður einungis \"memcached\" en ekki \"memcache\". Skoðaðu {linkstart}memcached wiki-síðurnar um báðar einingarnar ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Sumar skrár hafa ekki staðist áreiðanleikaprófun Hægt er að finna nánari upplýsingar um þetta í {linkstart1}hjálparskjölum ↗{linkend} okkar. ({linkstart2}Listi yfir ógildar skrár…{linkend} / {linkstart3}Endurskanna…{linkend})",
@@ -369,6 +368,7 @@
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hafðu samband við kerfisstjóra ef þessi skilaboð eru viðvarandi eða birtust óvænt.",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Þessi samfélagsútgáfa Nextcloud kemur ekki með neinni opinberri aðstoð og rauntímatilkynningar eru ekki til taks.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Athuga töflu %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er síðasta útgáfan sem styður PHP 7.3. Nextcloud 24 krefst að minnsta kosti PHP 7.4.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Til að yfirfæra í annan gagnagrunn skaltu nota skipanalínutólið: 'occ db:convert-type', eða lesa {linkstart}hjálparskjölin ↗ {linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP-hausinn inniheldur ekki \"{expected}\". Þetta er möguleg áhætta varðandi öryggi og gagnaleynd, við mælum með því að laga þessa stillingu.",
"Collaboratively edit office documents." : "Vinna í hóp með skrifstofuskjöl.",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index fe6d112f96f..b3574337282 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -81,7 +81,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra {linkstart}documentazione ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nessuna fonte di casualità trovata da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella {linkstart}documentazione ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Stai eseguendo attualmente PHP {version}. Aggiorna la tua versione di PHP per trarre vantaggio dagli {linkstart}aggiornamenti in termini di prestazioni e sicurezza forniti dal PHP Group ↗{linkend} non appena la tua distribuzione la supporta.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 è l'ultima versione che supporta PHP 7.3. Nextcloud 24 richiede almeno PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a Nextcloud da un proxy affidabile. In caso diverso, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendolo visibile a Nextcloud. Ulteriori informazioni sono disponibili nella {linkstart}documentazione ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached è configurato come cache distribuita, ma è installato il modulo PHP \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il {linkstart}wiki di memcached per informazioni su entrambi i moduli ↗{linkend}..",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra {linkstart1}documentazione ↗{linkend}. ({linkstart2}Elenco dei file non validi… {linkend} / {linkstart3}Nuova scansione…{linkend})",
@@ -386,6 +385,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Digita la tua chiave di sottoscrizione per aumentare il limite di utenti. Per ulteriori informazioni su Nextcloud Enterprise, visita il nostro sito web.",
"[%d / %d]: Checking table %s" : "[%d / %d]: controllo della tabella %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Questa è la build della community di Nextcloud non supportata. Data la dimensione di questa istanza, non possono essere garantite le prestazioni, l'affidabilità e la scalabilità. Le notifiche push sono state disattivate per evitare di sovraccaricare il nostro servizio gratuito. Maggiori informazioni sui vantaggi di Nextcloud Enterprise su nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 è l'ultima versione che supporta PHP 7.3. Nextcloud 24 richiede almeno PHP 7.4.",
"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}." : "Alcune colonne del database non sono state convertite in big int. Poiché la modifica dei tipi di colonna può richiedere del tempo, non sono state modificate automaticamente. Eseguendo \"occ db:convert-filecache-bigint\", le modifiche in corso saranno applicate manualmente. L'operazione deve essere eseguita mentre l'istanza non è in linea. Per ulteriori dettagli, leggi {linkstart}la relativa pagina di documentazione{linkend}.",
"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', o leggi la {linkstart}documentazione ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non contiene \"{expected}\". Questo è un potenziale rischio di sicurezza o di riservatezza, e consigliamo di modificare questa impostazione.",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 3116d601373..80d75652630 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -79,7 +79,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra {linkstart}documentazione ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nessuna fonte di casualità trovata da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella {linkstart}documentazione ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Stai eseguendo attualmente PHP {version}. Aggiorna la tua versione di PHP per trarre vantaggio dagli {linkstart}aggiornamenti in termini di prestazioni e sicurezza forniti dal PHP Group ↗{linkend} non appena la tua distribuzione la supporta.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 è l'ultima versione che supporta PHP 7.3. Nextcloud 24 richiede almeno PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a Nextcloud da un proxy affidabile. In caso diverso, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendolo visibile a Nextcloud. Ulteriori informazioni sono disponibili nella {linkstart}documentazione ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached è configurato come cache distribuita, ma è installato il modulo PHP \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il {linkstart}wiki di memcached per informazioni su entrambi i moduli ↗{linkend}..",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra {linkstart1}documentazione ↗{linkend}. ({linkstart2}Elenco dei file non validi… {linkend} / {linkstart3}Nuova scansione…{linkend})",
@@ -384,6 +383,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Digita la tua chiave di sottoscrizione per aumentare il limite di utenti. Per ulteriori informazioni su Nextcloud Enterprise, visita il nostro sito web.",
"[%d / %d]: Checking table %s" : "[%d / %d]: controllo della tabella %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Questa è la build della community di Nextcloud non supportata. Data la dimensione di questa istanza, non possono essere garantite le prestazioni, l'affidabilità e la scalabilità. Le notifiche push sono state disattivate per evitare di sovraccaricare il nostro servizio gratuito. Maggiori informazioni sui vantaggi di Nextcloud Enterprise su nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 è l'ultima versione che supporta PHP 7.3. Nextcloud 24 richiede almeno PHP 7.4.",
"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}." : "Alcune colonne del database non sono state convertite in big int. Poiché la modifica dei tipi di colonna può richiedere del tempo, non sono state modificate automaticamente. Eseguendo \"occ db:convert-filecache-bigint\", le modifiche in corso saranno applicate manualmente. L'operazione deve essere eseguita mentre l'istanza non è in linea. Per ulteriori dettagli, leggi {linkstart}la relativa pagina di documentazione{linkend}.",
"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', o leggi la {linkstart}documentazione ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non contiene \"{expected}\". Questo è un potenziale rischio di sicurezza o di riservatezza, e consigliamo di modificare questa impostazione.",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index 0e9fc4faa22..9dd4390793a 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -81,7 +81,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "メモリーキャッシュが構成されていません。パフォーマンスを向上させるために、可能な場合はmemcacheを構成してください。詳細については、{linkstart}ドキュメント↗{linkend}をご覧ください。",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHPで利用する乱数に適切なソースがありません。これは、セキュリティ上の理由から全く推奨されていません。詳細については、{linkstart}ドキュメント↗{linkend}をご覧ください。",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "あなたは現在、PHP {version} を使用しています。ディストリビューションでサポートされたら、すぐにPHPのバージョンをアップグレードして、{linkstart}PHPグループ↗の提供するパフォーマンスとセキュリティメリット{linkend}を享受してください。",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23は、PHP7.3をサポートする最後のリリースです。 Nextcloud24には少なくともPHP7.4が必要です。",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "リバースプロキシヘッダーの構成が正しくないか、信頼できるプロキシからNextcloudにアクセスしています。そうでない場合、これはセキュリティに問題があり、攻撃者がNextcloudを表示できるようにIPアドレスを偽装することができます。詳細については、{linkstart}ドキュメント↗{linkend}をご覧ください。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcachedが分散キャッシュとして設定されていますが、間違ったPHPモジュール \"memcache\" がインストールされています。 \\OC\\Memcache\\Memcachedは \"memcached\" のみをサポートし、\"memcache\" はサポートしません。は、{linkstart} 両方のモジュールについてはmemcached wiki↗{linkend}を参照してください。",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "一部のファイルは整合性チェックに合格していません。この問題を解決する方法の詳細については、{linkstart1}ドキュメント↗{linkend}をご覧ください。 ({linkstart2}無効なファイルのリスト…{linkend} / {linkstart3}再スキャン…{linkend})",
@@ -391,6 +390,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "サブスクリプションキーを入力して、ユーザー制限を増やします。 Nextcloud Enterpriseの詳細については、当社のWebサイトを参照してください。",
"[%d / %d]: Checking table %s" : "[%d / %d]: テーブル %s をチェック中",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "このサーバーはNextcloudの未サポートのコミュニティビルドです。このインスタンスのサイズでは、パフォーマンス、信頼性、スケーラビリティは保証されません。サービスに負荷をかけないように、プッシュ通知は無効になっています。Nextcloud Enterpriseのメリットについては、nextcloud.com/enterprise をご覧ください。",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23は、PHP7.3をサポートする最後のリリースです。 Nextcloud24には少なくともPHP7.4が必要です。",
"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}." : "データベースの一部のカラムがbigintへ変換されていません。大きなテーブルのカラムタイプの変更には時間がかかる可能性があるため、自動的には変更されませんでした。 'occ db:convert-filecache-bigint' を実行することにより、これらの保留中の変更を手動で適用できます。この操作は、インスタンスがオフラインのときに実行する必要があります。詳細については、{linkstart}これに関するドキュメントページ↗{linkend}をお読みください。",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "別のデータベースに移行するには、コマンドラインツール 'occ db:convert-type'を使用するか、{linkstart}ドキュメント↗{linkend}を参照してください。",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTPヘッダーに \"{expected}\"が含まれていません。 これらは潜在的なセキュリティまたはプライバシーのリスクになります。この設定を調整することをお勧めします。",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index a9b8e13d509..1e50c1ea731 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -79,7 +79,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "メモリーキャッシュが構成されていません。パフォーマンスを向上させるために、可能な場合はmemcacheを構成してください。詳細については、{linkstart}ドキュメント↗{linkend}をご覧ください。",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHPで利用する乱数に適切なソースがありません。これは、セキュリティ上の理由から全く推奨されていません。詳細については、{linkstart}ドキュメント↗{linkend}をご覧ください。",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "あなたは現在、PHP {version} を使用しています。ディストリビューションでサポートされたら、すぐにPHPのバージョンをアップグレードして、{linkstart}PHPグループ↗の提供するパフォーマンスとセキュリティメリット{linkend}を享受してください。",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23は、PHP7.3をサポートする最後のリリースです。 Nextcloud24には少なくともPHP7.4が必要です。",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "リバースプロキシヘッダーの構成が正しくないか、信頼できるプロキシからNextcloudにアクセスしています。そうでない場合、これはセキュリティに問題があり、攻撃者がNextcloudを表示できるようにIPアドレスを偽装することができます。詳細については、{linkstart}ドキュメント↗{linkend}をご覧ください。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcachedが分散キャッシュとして設定されていますが、間違ったPHPモジュール \"memcache\" がインストールされています。 \\OC\\Memcache\\Memcachedは \"memcached\" のみをサポートし、\"memcache\" はサポートしません。は、{linkstart} 両方のモジュールについてはmemcached wiki↗{linkend}を参照してください。",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "一部のファイルは整合性チェックに合格していません。この問題を解決する方法の詳細については、{linkstart1}ドキュメント↗{linkend}をご覧ください。 ({linkstart2}無効なファイルのリスト…{linkend} / {linkstart3}再スキャン…{linkend})",
@@ -389,6 +388,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "サブスクリプションキーを入力して、ユーザー制限を増やします。 Nextcloud Enterpriseの詳細については、当社のWebサイトを参照してください。",
"[%d / %d]: Checking table %s" : "[%d / %d]: テーブル %s をチェック中",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "このサーバーはNextcloudの未サポートのコミュニティビルドです。このインスタンスのサイズでは、パフォーマンス、信頼性、スケーラビリティは保証されません。サービスに負荷をかけないように、プッシュ通知は無効になっています。Nextcloud Enterpriseのメリットについては、nextcloud.com/enterprise をご覧ください。",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23は、PHP7.3をサポートする最後のリリースです。 Nextcloud24には少なくともPHP7.4が必要です。",
"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}." : "データベースの一部のカラムがbigintへ変換されていません。大きなテーブルのカラムタイプの変更には時間がかかる可能性があるため、自動的には変更されませんでした。 'occ db:convert-filecache-bigint' を実行することにより、これらの保留中の変更を手動で適用できます。この操作は、インスタンスがオフラインのときに実行する必要があります。詳細については、{linkstart}これに関するドキュメントページ↗{linkend}をお読みください。",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "別のデータベースに移行するには、コマンドラインツール 'occ db:convert-type'を使用するか、{linkstart}ドキュメント↗{linkend}を参照してください。",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTPヘッダーに \"{expected}\"が含まれていません。 これらは潜在的なセキュリティまたはプライバシーのリスクになります。この設定を調整することをお勧めします。",
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index fb87c4f7755..47ce466d0ad 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -81,7 +81,6 @@ OC.L10N.register(
"This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "서버가 인터넷에 연결되지 않아 다수의 종단점에 도달할 수 없습니다. 이로 인해 외부 저장소 마운트, 서드파티 앱 업데이트와 설치에 대한 알림 수신 등의 기능을 사용할 수 없을 것입니다. 원격 파일 접근과 알림 이메일 전송 또한 작동하지 않을 것입니다. 서버를 인터넷과 연결하여 모든 기능을 사용하십시오.",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "매모리 캐시가 설정되지 않았습니다. 성능 향상을 위해 가능하면 memcache를 설정하십시오. 더 많은 정보는 {linkstart}문서 ↗{linkend}를 참조하십시오.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "현재 PHP {version}(으)로 실행중입니다. PHP 버전을 업그레이드 하여 지원중인 {linkstart} PHP 그룹의 성능 및 보안 업데이트 ↗{linkend} 혜택을 누리십시오.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23이 PHP 7.3를 지원하는 마지막 릴리즈입니다. Nextcloud 24은 PHP 7.4 이상이 필요합니다.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "역방향 프록시 헤더 설정이 올바르지 않거나 신뢰하는 프록시를 통해 Nextcloud에 접근하고 있을 수 있습니다. 만약 Nextcloud를 신뢰하는 프록시를 통해 접근하고 있지 않다면 이는 보안 문제이며 공격자가 Nextcloud에 보이는 IP 주소를 속이고 있을 수 있습니다. 자세한 내용은 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">문서</a>를 참고하십시오.",
"The PHP OPcache module is not properly configured. See the {linkstart}documentation ↗{linkend} for more information." : "PHP의 OPcache 모듈이 올바르게 설정되지 않았습니다. 추가적인 정보가 필요할 경우 {linkstart}문서 ↗{linkend}를 참조하십시오.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP 함수 \"set_time_limit\"을 사용할 수 없습니다. 스크립트가 실행 중간에 중지되어 설치를 깨트릴 수도 있습니다. 이 함수를 활성화하는 것을 추천합니다.",
@@ -383,6 +382,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "사용자수 제한을 해제하기 위해 구독키를 입력하세요. 기업용 Nextcloud에 대해 자세히 알고 싶다면, 저희 웹사이트를 방문하세요.",
"[%d / %d]: Checking table %s" : "[%d / %d]: 테이블 %s 확인 중",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "이 빌드는 공식적으로 지원하지 않는 Nextcloud 커뮤니티 빌드입니다. 이 인스턴스의 크기를 고려하면, 성능과 신뢰성, 확장성 등을 보장할 수 없습니다. 무료 서비스의 과부하를 방지하기 위해 푸시 알림은 제한됩니다. Nextcloud Enterprise의 혜택에 대해서는 https://nextcloud.com/enterprise를 참조하십시오.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23이 PHP 7.3를 지원하는 마지막 릴리즈입니다. Nextcloud 24은 PHP 7.4 이상이 필요합니다.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "다른 데이터 베이스로 마이그레션하기 위해서 다음 명령을 사용하세요: ''occ db:convert-type', 또는 다음 {linkstart}문서를 참조하세요 ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP 헤더가 \"{expected}\"을(를) 포함하고 있지 않습니다. 잠재적인 정보 유출 및 보안 위협이 될 수 있으므로 설정을 변경하는 것을 추천합니다.",
"Collaboratively edit office documents." : "오피스 문서를 함께 편집하세요.",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index d701fa52155..9ac537fc923 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -79,7 +79,6 @@
"This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "서버가 인터넷에 연결되지 않아 다수의 종단점에 도달할 수 없습니다. 이로 인해 외부 저장소 마운트, 서드파티 앱 업데이트와 설치에 대한 알림 수신 등의 기능을 사용할 수 없을 것입니다. 원격 파일 접근과 알림 이메일 전송 또한 작동하지 않을 것입니다. 서버를 인터넷과 연결하여 모든 기능을 사용하십시오.",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "매모리 캐시가 설정되지 않았습니다. 성능 향상을 위해 가능하면 memcache를 설정하십시오. 더 많은 정보는 {linkstart}문서 ↗{linkend}를 참조하십시오.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "현재 PHP {version}(으)로 실행중입니다. PHP 버전을 업그레이드 하여 지원중인 {linkstart} PHP 그룹의 성능 및 보안 업데이트 ↗{linkend} 혜택을 누리십시오.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23이 PHP 7.3를 지원하는 마지막 릴리즈입니다. Nextcloud 24은 PHP 7.4 이상이 필요합니다.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "역방향 프록시 헤더 설정이 올바르지 않거나 신뢰하는 프록시를 통해 Nextcloud에 접근하고 있을 수 있습니다. 만약 Nextcloud를 신뢰하는 프록시를 통해 접근하고 있지 않다면 이는 보안 문제이며 공격자가 Nextcloud에 보이는 IP 주소를 속이고 있을 수 있습니다. 자세한 내용은 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">문서</a>를 참고하십시오.",
"The PHP OPcache module is not properly configured. See the {linkstart}documentation ↗{linkend} for more information." : "PHP의 OPcache 모듈이 올바르게 설정되지 않았습니다. 추가적인 정보가 필요할 경우 {linkstart}문서 ↗{linkend}를 참조하십시오.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP 함수 \"set_time_limit\"을 사용할 수 없습니다. 스크립트가 실행 중간에 중지되어 설치를 깨트릴 수도 있습니다. 이 함수를 활성화하는 것을 추천합니다.",
@@ -381,6 +380,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "사용자수 제한을 해제하기 위해 구독키를 입력하세요. 기업용 Nextcloud에 대해 자세히 알고 싶다면, 저희 웹사이트를 방문하세요.",
"[%d / %d]: Checking table %s" : "[%d / %d]: 테이블 %s 확인 중",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "이 빌드는 공식적으로 지원하지 않는 Nextcloud 커뮤니티 빌드입니다. 이 인스턴스의 크기를 고려하면, 성능과 신뢰성, 확장성 등을 보장할 수 없습니다. 무료 서비스의 과부하를 방지하기 위해 푸시 알림은 제한됩니다. Nextcloud Enterprise의 혜택에 대해서는 https://nextcloud.com/enterprise를 참조하십시오.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23이 PHP 7.3를 지원하는 마지막 릴리즈입니다. Nextcloud 24은 PHP 7.4 이상이 필요합니다.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "다른 데이터 베이스로 마이그레션하기 위해서 다음 명령을 사용하세요: ''occ db:convert-type', 또는 다음 {linkstart}문서를 참조하세요 ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP 헤더가 \"{expected}\"을(를) 포함하고 있지 않습니다. 잠재적인 정보 유출 및 보안 위협이 될 수 있으므로 설정을 변경하는 것을 추천합니다.",
"Collaboratively edit office documents." : "오피스 문서를 함께 편집하세요.",
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 2cbeb46eb65..2326caaba36 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -147,6 +147,8 @@ OC.L10N.register(
"(all selected)" : "(visus iezīmētos)",
"({count} selected)" : "({count} iezīmēti)",
"Error loading file exists template" : "Kļūda ielādējot eksistējošas datnes veidni",
+ "Show list view" : "Rādīt saraksta skatu",
+ "Show grid view" : "Rādīt režģa skatu",
"Pending" : "Gaida",
"Copy to {folder}" : "Kopēt uz {folder}",
"Move to {folder}" : "Pārvietot uz {folder}",
@@ -252,6 +254,7 @@ OC.L10N.register(
"invisible" : "Neredzams",
"File not found" : "Datne nav atrasta",
"More" : "Vairāk",
+ "Settings menu" : "Iestatījumu izvēlne",
"The password is wrong. Try again." : "Nepareiza parole. Mēģiniet vēlreiz."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index 933a9a36d17..5a0186e6c7f 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -145,6 +145,8 @@
"(all selected)" : "(visus iezīmētos)",
"({count} selected)" : "({count} iezīmēti)",
"Error loading file exists template" : "Kļūda ielādējot eksistējošas datnes veidni",
+ "Show list view" : "Rādīt saraksta skatu",
+ "Show grid view" : "Rādīt režģa skatu",
"Pending" : "Gaida",
"Copy to {folder}" : "Kopēt uz {folder}",
"Move to {folder}" : "Pārvietot uz {folder}",
@@ -250,6 +252,7 @@
"invisible" : "Neredzams",
"File not found" : "Datne nav atrasta",
"More" : "Vairāk",
+ "Settings menu" : "Iestatījumu izvēlne",
"The password is wrong. Try again." : "Nepareiza parole. Mēģiniet vēlreiz."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/core/l10n/mk.js b/core/l10n/mk.js
index 8baf955be8e..f35d4d16d26 100644
--- a/core/l10n/mk.js
+++ b/core/l10n/mk.js
@@ -76,7 +76,6 @@ OC.L10N.register(
"This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Овој опслужувач нема работна Интернет врска. Ова значи дека некои опции како што е монтирање на надворешни складишта, известувања за ажурирање или инсталации на апликации од 3-ти лица нема да работат. Пристапот на датотеки од далечина и праќање на пораки за известувања може исто така да не работат. Ви советуваме да овозможите Интернет врска за овој опслужувач ако сакате да ги имате сите опции. ",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не е конфигурирана мемориjа за кеширање. За да ги подобрите перформансите, конфигурирајте memcache, доколку е можно. Дополнителни информации може да се најдат во {linkstart}документацијата{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Моненталната верзија на PHP е {version}. Ажурирајте ја PHP верзијата да ги искористите предностите од {linkstart}перформанси и безбедносни ажурирања обезбедени од групацијата PHP ↗{linkend} штом вашата дистрибуција го поддржува.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 е последна верзија која поддржува PHP 7.3. За Nextcloud 24 потребна е PHP 7.4",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP функцијата \"set_time_limit\" не е достапна. Ова може да резултира со запирање на скриптите во извршувањето, и грешки во вашата инсталација. Овозможувањето на оваа функција е препорачлива.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Недостасува индексот \"{indexName}\" во табелата \"{tableName}\".",
"The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "Во базата недостасуваат некој индекси. Поради фактот што додавањето индекси во големи бази може да потрае, тие не беа додадени автоматски. Со стартување на командата \"occ db:add-missing-indices\" ќе бидат додадени оние индекси што недостасуваат и инстанцата непречено ќе работи. Еднаш кога ќе бидат додадени индексите, барањата во табелите ќе биде многу побрзо.",
@@ -374,6 +373,7 @@ OC.L10N.register(
"This page will refresh itself when the instance is available again." : "Оваа веб страница ќе се рефрешира кога истанцата ќе биде повторно достапна.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Контактирајте го вашиот систем администратор до колку оваа порака продолжи да се појавува или пак се појавува ненадејно.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверка на табела %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 е последна верзија која поддржува PHP 7.3. За Nextcloud 24 потребна е PHP 7.4",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "За да мигрирате во друга база на податоци, користете ја алатката во командната линија: 'occ db:convert-type', или погледнете во {linkstart}документацијата ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавието \"{header}\" не го содржи \"{expected}\". Ова потенцијално може да ја загрози приватноста и безбедноста, се препорачува соодветно да ја поставите оваа поставка.",
"Collaboratively edit office documents." : "Колаборативно уредување на документи.",
diff --git a/core/l10n/mk.json b/core/l10n/mk.json
index 0c61e19c3fc..4901c5e1302 100644
--- a/core/l10n/mk.json
+++ b/core/l10n/mk.json
@@ -74,7 +74,6 @@
"This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Овој опслужувач нема работна Интернет врска. Ова значи дека некои опции како што е монтирање на надворешни складишта, известувања за ажурирање или инсталации на апликации од 3-ти лица нема да работат. Пристапот на датотеки од далечина и праќање на пораки за известувања може исто така да не работат. Ви советуваме да овозможите Интернет врска за овој опслужувач ако сакате да ги имате сите опции. ",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не е конфигурирана мемориjа за кеширање. За да ги подобрите перформансите, конфигурирајте memcache, доколку е можно. Дополнителни информации може да се најдат во {linkstart}документацијата{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Моненталната верзија на PHP е {version}. Ажурирајте ја PHP верзијата да ги искористите предностите од {linkstart}перформанси и безбедносни ажурирања обезбедени од групацијата PHP ↗{linkend} штом вашата дистрибуција го поддржува.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 е последна верзија која поддржува PHP 7.3. За Nextcloud 24 потребна е PHP 7.4",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP функцијата \"set_time_limit\" не е достапна. Ова може да резултира со запирање на скриптите во извршувањето, и грешки во вашата инсталација. Овозможувањето на оваа функција е препорачлива.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Недостасува индексот \"{indexName}\" во табелата \"{tableName}\".",
"The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "Во базата недостасуваат некој индекси. Поради фактот што додавањето индекси во големи бази може да потрае, тие не беа додадени автоматски. Со стартување на командата \"occ db:add-missing-indices\" ќе бидат додадени оние индекси што недостасуваат и инстанцата непречено ќе работи. Еднаш кога ќе бидат додадени индексите, барањата во табелите ќе биде многу побрзо.",
@@ -372,6 +371,7 @@
"This page will refresh itself when the instance is available again." : "Оваа веб страница ќе се рефрешира кога истанцата ќе биде повторно достапна.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Контактирајте го вашиот систем администратор до колку оваа порака продолжи да се појавува или пак се појавува ненадејно.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверка на табела %s",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 е последна верзија која поддржува PHP 7.3. За Nextcloud 24 потребна е PHP 7.4",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "За да мигрирате во друга база на податоци, користете ја алатката во командната линија: 'occ db:convert-type', или погледнете во {linkstart}документацијата ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавието \"{header}\" не го содржи \"{expected}\". Ова потенцијално може да ја загрози приватноста и безбедноста, се препорачува соодветно да ја поставите оваа поставка.",
"Collaboratively edit office documents." : "Колаборативно уредување на документи.",
diff --git a/core/l10n/nb.js b/core/l10n/nb.js
index e61eaa6c869..50a875e03a5 100644
--- a/core/l10n/nb.js
+++ b/core/l10n/nb.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ingen minnebuffer er konfigurert. For å forbedre ytelsen, vennligst konfigurer en memcache, hvis tilgjengelig. Mer informasjon finner du i {linkstart}dokumentasjonen ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ingen passende kilde for tilfeldighet funnet av PHP, som er sterkt frarådd av sikkerhetsgrunner. Mer informasjon finner du i {linkstart}dokumentasjonen ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du kjører for øyeblikket PHP {version}. Oppgrader PHP-versjonen din for å dra nytte av {linkstart}ytelses- og sikkerhetsoppdateringer fra PHP Group ↗{linkend} så snart distribusjonen din støtter det.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er den siste utgivelsen som støtter PHP 7.3. Nextcloud 24 krever minst PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfigurasjonen av omvendt proxy-header er feil, eller du får tilgang til Nextcloud fra en klarert proxy. Hvis ikke, er dette et sikkerhetsproblem og kan tillate en angriper å forfalske IP-adressen sin som synlig for Nextcloud. Mer informasjon finner du i {linkstart}dokumentasjonen ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached er konfigurert som distribuert cache, men feil PHP-modul \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se den {linkstart}memcachede wikien om begge modulene ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Noen filer har ikke bestått integritetskontrollen. Mer informasjon om hvordan du løser dette problemet finner du i {linkstart1}dokumentasjonen ↗{linkend}. ({linkstart2}Liste over ugyldige filer...{linkend} / {linkstart3}Skann på nytt...{linkend})",
@@ -395,6 +394,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Angi din abonnementsnøkkel for å øke brukergrensen. For mer informasjon om Nextcloud Enterprise kan du besøke hjemmesiden vår.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Sjekker tabell %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dette er en ikke understøttet community-utgave av NextCloud. På grunn an størrelsen på denne installasjonen, kan ytelse, pålitelighet og skalerbarhet ikke garanteres for. Push-varsler har blitt deaktivert for å unngå overbelastning av vår gratis-tjeneste. Lær mer om fordelene med NextCloud Enterprise på nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er den siste utgivelsen som støtter PHP 7.3. Nextcloud 24 krever minst PHP 7.4.",
"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}." : "Noen kolonner i databasen mangler en konvertering til big int. På grunn av det faktum at endring av kolonnetyper på store tabeller kunne ta litt tid ble de ikke endret automatisk. Ved å kjøre 'occ db:convert-filecache-bigint' kan de ventende endringene brukes manuelt. Denne operasjonen må utføres mens forekomsten er frakoblet. For ytterligere detaljer, les {linkstart}dokumentasjonssiden om dette ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "For å migrere til en annen database, bruk kommandolinjeverktøyet: 'occ db:convert-type', eller se {linkstart}dokumentasjonen ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP hode mangler \"{expected}\". Dette er en sikkerhetsrisiko eller personverntrussel. Det er anbefalt å korrigere oppsett.",
diff --git a/core/l10n/nb.json b/core/l10n/nb.json
index 58911aeb1b1..24806880947 100644
--- a/core/l10n/nb.json
+++ b/core/l10n/nb.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ingen minnebuffer er konfigurert. For å forbedre ytelsen, vennligst konfigurer en memcache, hvis tilgjengelig. Mer informasjon finner du i {linkstart}dokumentasjonen ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ingen passende kilde for tilfeldighet funnet av PHP, som er sterkt frarådd av sikkerhetsgrunner. Mer informasjon finner du i {linkstart}dokumentasjonen ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du kjører for øyeblikket PHP {version}. Oppgrader PHP-versjonen din for å dra nytte av {linkstart}ytelses- og sikkerhetsoppdateringer fra PHP Group ↗{linkend} så snart distribusjonen din støtter det.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er den siste utgivelsen som støtter PHP 7.3. Nextcloud 24 krever minst PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfigurasjonen av omvendt proxy-header er feil, eller du får tilgang til Nextcloud fra en klarert proxy. Hvis ikke, er dette et sikkerhetsproblem og kan tillate en angriper å forfalske IP-adressen sin som synlig for Nextcloud. Mer informasjon finner du i {linkstart}dokumentasjonen ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached er konfigurert som distribuert cache, men feil PHP-modul \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se den {linkstart}memcachede wikien om begge modulene ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Noen filer har ikke bestått integritetskontrollen. Mer informasjon om hvordan du løser dette problemet finner du i {linkstart1}dokumentasjonen ↗{linkend}. ({linkstart2}Liste over ugyldige filer...{linkend} / {linkstart3}Skann på nytt...{linkend})",
@@ -393,6 +392,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Angi din abonnementsnøkkel for å øke brukergrensen. For mer informasjon om Nextcloud Enterprise kan du besøke hjemmesiden vår.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Sjekker tabell %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dette er en ikke understøttet community-utgave av NextCloud. På grunn an størrelsen på denne installasjonen, kan ytelse, pålitelighet og skalerbarhet ikke garanteres for. Push-varsler har blitt deaktivert for å unngå overbelastning av vår gratis-tjeneste. Lær mer om fordelene med NextCloud Enterprise på nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 er den siste utgivelsen som støtter PHP 7.3. Nextcloud 24 krever minst PHP 7.4.",
"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}." : "Noen kolonner i databasen mangler en konvertering til big int. På grunn av det faktum at endring av kolonnetyper på store tabeller kunne ta litt tid ble de ikke endret automatisk. Ved å kjøre 'occ db:convert-filecache-bigint' kan de ventende endringene brukes manuelt. Denne operasjonen må utføres mens forekomsten er frakoblet. For ytterligere detaljer, les {linkstart}dokumentasjonssiden om dette ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "For å migrere til en annen database, bruk kommandolinjeverktøyet: 'occ db:convert-type', eller se {linkstart}dokumentasjonen ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP hode mangler \"{expected}\". Dette er en sikkerhetsrisiko eller personverntrussel. Det er anbefalt å korrigere oppsett.",
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index a252e82dc1d..3bdbbc933e2 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -81,7 +81,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Er is geen geheugencache geconfigureerd. Om de prestaties te verhogen kun je de memcache configureren als die beschikbaar is. Meer informatie vind je in onze {linkstart}documentatie ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Geen bruikbare bron voor willekeurige waarden gevonden door PHP, hetgeen sterk wordt aanbevolen om beveiligingsredenen. Meer informatie in de {linkstart}documentatie↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Je draait momenteel PHP {version}. We adviseren je om, zo gauw je distributie dat biedt, je PHP versie bij te werken voor betere {linkstart}prestaties en beveiliging geleverd door de PHP Group↗{linkend}.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 is de laatste release die PHP 7.3 ondersteund. Nextcloud 24 vereist minstens PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "De reverse proxy headerconfiguratie is onjuist, of je hebt toegang tot Nextcloud via een vertrouwde proxy. Als je Nextcloud niet via een vertrouwde proxy benadert, dan levert dat een beveiligingsrisico op, waardoor een aanvaller het IP-adres dat Nextcloud ziet kan vervalsen. Meer informatie is te vinden in onze {linkstart}documentatie ↗{linkend}..",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached is geconfigureerd als gedistribueerde cache, maar de verkeerde PHP-module \"memcache\" is geïnstalleerd. \\OC\\Memcache\\Memcached ondersteunt alleen \"memcached\" en niet \"memcache\". Zie de {linkstart}memcached wiki over beide modules ↗ {linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Sommige bestanden hebben de integriteitscontrole niet doorstaan. Meer informatie over het oplossen van dit probleem is te vinden in de {linkstart1} documentatie ↗ {linkend}. ({linkstart2} Lijst met ongeldige bestanden… {linkend} / {linkstart3} Opnieuw scannen… {linkend})",
@@ -389,6 +388,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Voer je abonnementssleutel in om de gebruikerslimiet te verhogen. Zie onze website voor meer informatie over Nextcloud Enterprise.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Tabel controleren %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dit is de niet-ondersteunde community build van Nextcloud. Gegeven de grootte van deze instantie kunnen prestaties, betrouwbaarheid en schaalbaarheid niet worden gegarandeerd. Push meldingen zijn uitgeschakeld om te voorkomen dat onze gratis service wordt overbelast. Lees meer over de voordelen van Nextcloud Enterprise op nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 is de laatste release die PHP 7.3 ondersteund. Nextcloud 24 vereist minstens PHP 7.4.",
"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}." : "Sommige kolommen in de database zijn niet geconverteerd naar 'big int'. Doordat het wijzigen van kolomtype op grote databases veel tijd kost, zijn ze niet automatisch gewijzigd. Door het uitvoeren van 'occ db:convert-filecache-bigint' worden de veranderingen alsnog uitgevoerd. Dat moet gebeuren als de server off-line staat. Voor meer informatie verwijzen we naar {linkstart}de documentatie hierover ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Om te migreren naar een andere database moet u de commandoregel tool gebruiken: 'occ db:convert-type', of lees de {linkstart} documentatie ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header bevat niet \"{expected}\". Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.",
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index 96af6d9da4e..7094cf94a61 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -79,7 +79,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Er is geen geheugencache geconfigureerd. Om de prestaties te verhogen kun je de memcache configureren als die beschikbaar is. Meer informatie vind je in onze {linkstart}documentatie ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Geen bruikbare bron voor willekeurige waarden gevonden door PHP, hetgeen sterk wordt aanbevolen om beveiligingsredenen. Meer informatie in de {linkstart}documentatie↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Je draait momenteel PHP {version}. We adviseren je om, zo gauw je distributie dat biedt, je PHP versie bij te werken voor betere {linkstart}prestaties en beveiliging geleverd door de PHP Group↗{linkend}.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 is de laatste release die PHP 7.3 ondersteund. Nextcloud 24 vereist minstens PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "De reverse proxy headerconfiguratie is onjuist, of je hebt toegang tot Nextcloud via een vertrouwde proxy. Als je Nextcloud niet via een vertrouwde proxy benadert, dan levert dat een beveiligingsrisico op, waardoor een aanvaller het IP-adres dat Nextcloud ziet kan vervalsen. Meer informatie is te vinden in onze {linkstart}documentatie ↗{linkend}..",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached is geconfigureerd als gedistribueerde cache, maar de verkeerde PHP-module \"memcache\" is geïnstalleerd. \\OC\\Memcache\\Memcached ondersteunt alleen \"memcached\" en niet \"memcache\". Zie de {linkstart}memcached wiki over beide modules ↗ {linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Sommige bestanden hebben de integriteitscontrole niet doorstaan. Meer informatie over het oplossen van dit probleem is te vinden in de {linkstart1} documentatie ↗ {linkend}. ({linkstart2} Lijst met ongeldige bestanden… {linkend} / {linkstart3} Opnieuw scannen… {linkend})",
@@ -387,6 +386,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Voer je abonnementssleutel in om de gebruikerslimiet te verhogen. Zie onze website voor meer informatie over Nextcloud Enterprise.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Tabel controleren %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Dit is de niet-ondersteunde community build van Nextcloud. Gegeven de grootte van deze instantie kunnen prestaties, betrouwbaarheid en schaalbaarheid niet worden gegarandeerd. Push meldingen zijn uitgeschakeld om te voorkomen dat onze gratis service wordt overbelast. Lees meer over de voordelen van Nextcloud Enterprise op nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 is de laatste release die PHP 7.3 ondersteund. Nextcloud 24 vereist minstens PHP 7.4.",
"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}." : "Sommige kolommen in de database zijn niet geconverteerd naar 'big int'. Doordat het wijzigen van kolomtype op grote databases veel tijd kost, zijn ze niet automatisch gewijzigd. Door het uitvoeren van 'occ db:convert-filecache-bigint' worden de veranderingen alsnog uitgevoerd. Dat moet gebeuren als de server off-line staat. Voor meer informatie verwijzen we naar {linkstart}de documentatie hierover ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Om te migreren naar een andere database moet u de commandoregel tool gebruiken: 'occ db:convert-type', of lees de {linkstart} documentatie ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header bevat niet \"{expected}\". Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index a14b7f60d72..a0441216df7 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nie skonfigurowano pamięci podręcznej. Aby zwiększyć wydajność, skonfiguruj memcache, jeśli jest dostępne. Więcej informacji można znaleźć w {linkstart}dokumentacji ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nie znaleziono odpowiedniego źródła przypadkowości przez PHP. Jest to bardzo niezalecane w związku z bezpieczeństwem. Więcej informacji można znaleźć w {linkstart}dokumentacji ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Aktualnie używasz PHP {version}. Zaktualizuj swoją wersję PHP korzystając z {linkstart}aktualizacji wydajności i bezpieczeństwa zapewniane przez grupę PHP ↗{linkend}, gdy tylko dystrybucja zacznie je obsługiwać.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 to ostatnie wydanie obsługujące PHP 7.3. Nextcloud 24 wymaga co najmniej PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfiguracja nagłówka reverse proxy jest niepoprawna lub uzyskujesz dostęp do Nextcloud z zaufanego serwera proxy. Jeśli tak nie jest, to jest to problem bezpieczeństwa i może pozwolić atakującemu na sfałszowanie adresu IP jako widocznego dla Nextcloud. Więcej informacji można znaleźć w {linkstart}dokumentacji ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached jest skonfigurowany jako rozproszona pamięć podręczna, ale moduł PHP \"memcache\" jest zainstalowany niewłaściwy. \\OC\\Memcache\\Memcached obsługuje tylko \"memcached\", a nie \"memcache\". Zobacz {linkstart}memcached wiki o obu modułach ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Niektóre pliki nie przeszły sprawdzenia integralności. Więcej informacji na temat rozwiązania tego problemu można znaleźć w {linkstart1}dokumentacji ↗{linkend}. ({linkstart2}Lista niepoprawnych plików…{linkend}/{linkstart3}Skanuj ponownie…{linkend})",
@@ -100,6 +99,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "W tej instancji brakuje niektórych zalecanych modułów PHP. W celu zwiększenia wydajności i lepszej kompatybilności zaleca się ich instalację.",
"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." : "Moduł PHP \"imagick\" nie jest włączony, pomimo że aplikacja motywu jest. Aby generowanie favicon działało poprawnie, musisz zainstalować i włączyć ten moduł.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Moduły PHP \"gmp\" i/lub \"bcmath\" nie są włączone. Jeśli używasz uwierzytelniania WebAuthn bez hasła, te moduły są wymagane.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Wygląda na to, że korzystasz z 32-bitowej wersji PHP. Nextcloud 26 i nowsze wymagają wersji 64-bitowej. Zaktualizuj swój system operacyjny i PHP do wersji 64-bitowej! Aby uzyskać więcej informacji, przeczytaj {linkstart}stronę dokumentacji ↗{linkend} na ten temat.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Moduł php-imagick w tej instancji nie obsługuje formatu SVG. Aby uzyskać lepszą kompatybilność, zaleca się jego zainstalowanie.",
"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}." : "Niektóre kolumny w bazie danych nie zawierają konwersji do big integers. Ze względu na to, że zmiana typów kolumn w dużych tabelach może zająć dużo czasu, nie zostały one zmienione automatycznie. Oczekujące zmiany można wykonać ręcznie, uruchamiając \"occ db:convert-filecache-bigint\". Ta operacja musi zostać wykonana, gdy instancja jest w trybie offline. Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite jest aktualnie używany jako baza danych. Dla większych instalacji zalecamy przełączenie na inną bazę danych.",
@@ -406,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Wprowadź klucz subskrypcji, aby zwiększyć limit użytkowników. Więcej informacji o Nextcloud dla firm można znaleźć na naszej stronie internetowej.",
"[%d / %d]: Checking table %s" : "[%d/%d]: Sprawdzanie tabeli %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "To jest nieobsługiwana przez społeczność kompilacja Nextcloud. Biorąc pod uwagę rozmiar tego wystąpienia, nie można zagwarantować wydajności, niezawodności i skalowalności. Powiadomienia Push zostały wyłączone, aby uniknąć przeciążenia naszej bezpłatnej usługi. Dowiedz się więcej o zaletach usługi Nextcloud dla firm na stronie nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 to ostatnie wydanie obsługujące PHP 7.3. Nextcloud 24 wymaga co najmniej PHP 7.4.",
"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}." : "Niektóre kolumny w bazie danych nie zawierają konwersji do big integers. Ze względu na to, że zmiana typów kolumn w dużych tabelach może zająć dużo czasu, nie zostały one zmienione automatycznie. Oczekujące zmiany można wykonać ręcznie, uruchamiając 'occ db:convert-filecache-bigint'. Ta operacja musi zostać wykonana, gdy instancja jest w trybie offline. Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Aby przeprowadzić migrację do innej bazy danych, użyj narzędzia wiersza poleceń: 'occ db:convert-type' lub zapoznaj się z {linkstart}dokumentacją ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Nagłówek HTTP \"{header}\" nie zawiera \"{expected}\". Jest to potencjalne zagrożenie dla bezpieczeństwa lub prywatności. Dlatego zaleca się odpowiednie dostosowanie tego ustawienia.",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index 0a6d299fde6..75e4aa891bf 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nie skonfigurowano pamięci podręcznej. Aby zwiększyć wydajność, skonfiguruj memcache, jeśli jest dostępne. Więcej informacji można znaleźć w {linkstart}dokumentacji ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nie znaleziono odpowiedniego źródła przypadkowości przez PHP. Jest to bardzo niezalecane w związku z bezpieczeństwem. Więcej informacji można znaleźć w {linkstart}dokumentacji ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Aktualnie używasz PHP {version}. Zaktualizuj swoją wersję PHP korzystając z {linkstart}aktualizacji wydajności i bezpieczeństwa zapewniane przez grupę PHP ↗{linkend}, gdy tylko dystrybucja zacznie je obsługiwać.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 to ostatnie wydanie obsługujące PHP 7.3. Nextcloud 24 wymaga co najmniej PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfiguracja nagłówka reverse proxy jest niepoprawna lub uzyskujesz dostęp do Nextcloud z zaufanego serwera proxy. Jeśli tak nie jest, to jest to problem bezpieczeństwa i może pozwolić atakującemu na sfałszowanie adresu IP jako widocznego dla Nextcloud. Więcej informacji można znaleźć w {linkstart}dokumentacji ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached jest skonfigurowany jako rozproszona pamięć podręczna, ale moduł PHP \"memcache\" jest zainstalowany niewłaściwy. \\OC\\Memcache\\Memcached obsługuje tylko \"memcached\", a nie \"memcache\". Zobacz {linkstart}memcached wiki o obu modułach ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Niektóre pliki nie przeszły sprawdzenia integralności. Więcej informacji na temat rozwiązania tego problemu można znaleźć w {linkstart1}dokumentacji ↗{linkend}. ({linkstart2}Lista niepoprawnych plików…{linkend}/{linkstart3}Skanuj ponownie…{linkend})",
@@ -98,6 +97,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "W tej instancji brakuje niektórych zalecanych modułów PHP. W celu zwiększenia wydajności i lepszej kompatybilności zaleca się ich instalację.",
"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." : "Moduł PHP \"imagick\" nie jest włączony, pomimo że aplikacja motywu jest. Aby generowanie favicon działało poprawnie, musisz zainstalować i włączyć ten moduł.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Moduły PHP \"gmp\" i/lub \"bcmath\" nie są włączone. Jeśli używasz uwierzytelniania WebAuthn bez hasła, te moduły są wymagane.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Wygląda na to, że korzystasz z 32-bitowej wersji PHP. Nextcloud 26 i nowsze wymagają wersji 64-bitowej. Zaktualizuj swój system operacyjny i PHP do wersji 64-bitowej! Aby uzyskać więcej informacji, przeczytaj {linkstart}stronę dokumentacji ↗{linkend} na ten temat.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Moduł php-imagick w tej instancji nie obsługuje formatu SVG. Aby uzyskać lepszą kompatybilność, zaleca się jego zainstalowanie.",
"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}." : "Niektóre kolumny w bazie danych nie zawierają konwersji do big integers. Ze względu na to, że zmiana typów kolumn w dużych tabelach może zająć dużo czasu, nie zostały one zmienione automatycznie. Oczekujące zmiany można wykonać ręcznie, uruchamiając \"occ db:convert-filecache-bigint\". Ta operacja musi zostać wykonana, gdy instancja jest w trybie offline. Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite jest aktualnie używany jako baza danych. Dla większych instalacji zalecamy przełączenie na inną bazę danych.",
@@ -404,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Wprowadź klucz subskrypcji, aby zwiększyć limit użytkowników. Więcej informacji o Nextcloud dla firm można znaleźć na naszej stronie internetowej.",
"[%d / %d]: Checking table %s" : "[%d/%d]: Sprawdzanie tabeli %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "To jest nieobsługiwana przez społeczność kompilacja Nextcloud. Biorąc pod uwagę rozmiar tego wystąpienia, nie można zagwarantować wydajności, niezawodności i skalowalności. Powiadomienia Push zostały wyłączone, aby uniknąć przeciążenia naszej bezpłatnej usługi. Dowiedz się więcej o zaletach usługi Nextcloud dla firm na stronie nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 to ostatnie wydanie obsługujące PHP 7.3. Nextcloud 24 wymaga co najmniej PHP 7.4.",
"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}." : "Niektóre kolumny w bazie danych nie zawierają konwersji do big integers. Ze względu na to, że zmiana typów kolumn w dużych tabelach może zająć dużo czasu, nie zostały one zmienione automatycznie. Oczekujące zmiany można wykonać ręcznie, uruchamiając 'occ db:convert-filecache-bigint'. Ta operacja musi zostać wykonana, gdy instancja jest w trybie offline. Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Aby przeprowadzić migrację do innej bazy danych, użyj narzędzia wiersza poleceń: 'occ db:convert-type' lub zapoznaj się z {linkstart}dokumentacją ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Nagłówek HTTP \"{header}\" nie zawiera \"{expected}\". Jest to potencjalne zagrożenie dla bezpieczeństwa lub prywatności. Dlatego zaleca się odpowiednie dostosowanie tego ustawienia.",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 268a06d790f..f931d231bb5 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nenhum cache de memória foi configurado. Para melhorar o desempenho, configure um memcache, se disponível. Mais informações podem ser encontradas na {linkstart}documentação ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nenhuma fonte adequada para aleatoriedade encontrada pelo PHP, o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas na {linkstart}documentação ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Você está executando o PHP {version}. Atualize sua versão do PHP para aproveitar as vantagens de {linkstart}desempenho e atualizações de segurança fornecidas pelo Grupo PHP ↗{linkend} assim que sua distribuição oferecer suporte.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 é a última versão compatível com PHP 7.3. Nextcloud 24 requer pelo menos PHP 7.4. ",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "A configuração do cabeçalho do proxy reverso está incorreta ou você está acessando o Nextcloud de um proxy confiável. Caso contrário, este é um problema de segurança e pode permitir que um invasor falsifique seu endereço IP como visível para o Nextcloud. Mais informações podem ser encontradas na {linkstart}documentação ↗{linkend}. ",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached está configurado como cache distribuído, mas a extensão PHP incorreta \"memcache\" está instalada. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja o {linkstart}memcached wiki sobre ambas as extensões ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver esse problema podem ser encontradas na {linkstart1}documentação ↗{linkend}. ({linkstart2}Lista de arquivos inválidos…{linkend} / {linkstart3}Verificar novamente…{linkend})",
@@ -406,6 +405,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Digite sua chave de assinatura para aumentar o limite de usuários. Para obter mais informações sobre o Nextcloud Enterprise, consulte nosso website.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Verificando tabela %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Este é a construção de uma comunidade sem suporte do Nextcloud. Dado o tamanho desta instância, desempenho, confiabilidade e escalabilidade não podem ser garantidos. As notificações push foram desativadas para evitar sobrecarregar nosso serviço gratuito. Saiba mais sobre os benefícios do Nextcloud Enterprise em nextcloud.com/enterprise. ",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 é a última versão compatível com PHP 7.3. Nextcloud 24 requer pelo menos PHP 7.4. ",
"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}." : "Algumas colunas do banco de dados estão sem uma conversão para big int. Devido ao fato de que alterar os tipos de coluna em tabelas grandes pode levar algum tempo, elas não foram alteradas automaticamente. Executando 'occ db: convert-filecache-bigint' essas alterações pendentes podem ser aplicadas manualmente. Esta operação precisa ser feita enquanto a instância está offline. Para obter mais detalhes, leia {linkstart} a página de documentação sobre isso ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Para migrar para outro banco de dados, use a ferramenta de linha de comando: 'occ db:convert-type', ou consulte a {linkstart}documentação do ↗{linkend}. ",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não contém \"{expected}\". Esse é um risco potencial de segurança ou privacidade. É recomendável ajustar essa configuração de acordo.",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 92a7b11d148..8a41c82d8dd 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nenhum cache de memória foi configurado. Para melhorar o desempenho, configure um memcache, se disponível. Mais informações podem ser encontradas na {linkstart}documentação ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nenhuma fonte adequada para aleatoriedade encontrada pelo PHP, o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas na {linkstart}documentação ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Você está executando o PHP {version}. Atualize sua versão do PHP para aproveitar as vantagens de {linkstart}desempenho e atualizações de segurança fornecidas pelo Grupo PHP ↗{linkend} assim que sua distribuição oferecer suporte.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 é a última versão compatível com PHP 7.3. Nextcloud 24 requer pelo menos PHP 7.4. ",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "A configuração do cabeçalho do proxy reverso está incorreta ou você está acessando o Nextcloud de um proxy confiável. Caso contrário, este é um problema de segurança e pode permitir que um invasor falsifique seu endereço IP como visível para o Nextcloud. Mais informações podem ser encontradas na {linkstart}documentação ↗{linkend}. ",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached está configurado como cache distribuído, mas a extensão PHP incorreta \"memcache\" está instalada. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja o {linkstart}memcached wiki sobre ambas as extensões ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver esse problema podem ser encontradas na {linkstart1}documentação ↗{linkend}. ({linkstart2}Lista de arquivos inválidos…{linkend} / {linkstart3}Verificar novamente…{linkend})",
@@ -404,6 +403,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Digite sua chave de assinatura para aumentar o limite de usuários. Para obter mais informações sobre o Nextcloud Enterprise, consulte nosso website.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Verificando tabela %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Este é a construção de uma comunidade sem suporte do Nextcloud. Dado o tamanho desta instância, desempenho, confiabilidade e escalabilidade não podem ser garantidos. As notificações push foram desativadas para evitar sobrecarregar nosso serviço gratuito. Saiba mais sobre os benefícios do Nextcloud Enterprise em nextcloud.com/enterprise. ",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 é a última versão compatível com PHP 7.3. Nextcloud 24 requer pelo menos PHP 7.4. ",
"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}." : "Algumas colunas do banco de dados estão sem uma conversão para big int. Devido ao fato de que alterar os tipos de coluna em tabelas grandes pode levar algum tempo, elas não foram alteradas automaticamente. Executando 'occ db: convert-filecache-bigint' essas alterações pendentes podem ser aplicadas manualmente. Esta operação precisa ser feita enquanto a instância está offline. Para obter mais detalhes, leia {linkstart} a página de documentação sobre isso ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Para migrar para outro banco de dados, use a ferramenta de linha de comando: 'occ db:convert-type', ou consulte a {linkstart}documentação do ↗{linkend}. ",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não contém \"{expected}\". Esse é um risco potencial de segurança ou privacidade. É recomendável ajustar essa configuração de acordo.",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index 424df9a6678..e5078d5b74c 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -83,7 +83,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Дополнительная информация представлена в {linkstart}документации ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не найден подходящий источник случайных значений для PHP, что сильно влияет на уровень безопасности. Дополнительная информация представлена в {linkstart}документации ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Используется PHP {version}. Рекомендуется обновить PHP, чтобы воспользоваться {linkstart}улучшениями производительности и безопасности, внедрёнными PHP Group ↗{linkend}, как только новая версия будет доступна в вашем дистрибутиве. ",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 - это последний релиз, поддерживающий PHP 7.3. Для Nextcloud 24 необходимо иметь минимальную версию PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Заголовки обратного прокси настроены неправильно, либо подключение к серверу Nextcloud осуществляется через доверенный прокси. Если Nextcloud открыт не через доверенный прокси, то это проблема безопасности, которая может позволить атакующему подделать IP-адрес, определяемый сервером Nextcloud. Дополнительная информация представлена в {linkstart}документации ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached настроен на распределенный кеш, но установлен не поддерживаемый модуль PHP \"memcache\". \\OC\\Memcache\\Memcached поддерживает только модуль \"memcached\", но не \"memcache\". См. {linkstart}вики-страницу memcached об обоих модулях ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Некоторые файлы не прошли проверку целостности. Дополнительная информация о том, как устранить данную проблему, представлена в {linkstart1}документации ↗{linkend}. ({linkstart2}Список проблемных файлов…{linkend} / {linkstart3}Сканировать ещё раз…{linkend})",
@@ -399,6 +398,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Введите ключ подписки, чтобы увеличить лимит пользователей. Для получения дополнительной информации о Nextcloud Enterprise посетите наш веб-сайт.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверка таблицы %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Это неподдерживаемая сборка сообщества Nextcloud. Размер этого развёртывания не позволяет, гарантировать производительность, надежность и масштабируемость. Push-уведомления отключены, чтобы не перегружать бесплатный сервис разработчиков Nextcloud. Узнайте больше о преимуществах корпоративной версии Nextcloud на сайте nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 - это последний релиз, поддерживающий PHP 7.3. Для Nextcloud 24 необходимо иметь минимальную версию PHP 7.4.",
"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}." : "Некоторые индексы базы данных не были преобразованы в тип big int. Так как преобразование таких индексов может занять продолжительное время, оно должно быть запущенно вручную. Чтобы выполнить преобразование, необходимо включить режим обслуживания и запустить в терминале команду «occ db:convert-filecache-bigint». Дополнительные сведения приведены {linkstart}на соответствующей странице документации ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Для миграции на другую базу данных используйте команду 'occ db:convert-type' или обратитесь к {linkstart}документации ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не содержит параметр «{expected}». Это может привести к проблемам безопасности. Рекомендуется задать этот параметр.",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index b3f13526ca6..9cfd10746b2 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -81,7 +81,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Дополнительная информация представлена в {linkstart}документации ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Не найден подходящий источник случайных значений для PHP, что сильно влияет на уровень безопасности. Дополнительная информация представлена в {linkstart}документации ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Используется PHP {version}. Рекомендуется обновить PHP, чтобы воспользоваться {linkstart}улучшениями производительности и безопасности, внедрёнными PHP Group ↗{linkend}, как только новая версия будет доступна в вашем дистрибутиве. ",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 - это последний релиз, поддерживающий PHP 7.3. Для Nextcloud 24 необходимо иметь минимальную версию PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Заголовки обратного прокси настроены неправильно, либо подключение к серверу Nextcloud осуществляется через доверенный прокси. Если Nextcloud открыт не через доверенный прокси, то это проблема безопасности, которая может позволить атакующему подделать IP-адрес, определяемый сервером Nextcloud. Дополнительная информация представлена в {linkstart}документации ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached настроен на распределенный кеш, но установлен не поддерживаемый модуль PHP \"memcache\". \\OC\\Memcache\\Memcached поддерживает только модуль \"memcached\", но не \"memcache\". См. {linkstart}вики-страницу memcached об обоих модулях ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Некоторые файлы не прошли проверку целостности. Дополнительная информация о том, как устранить данную проблему, представлена в {linkstart1}документации ↗{linkend}. ({linkstart2}Список проблемных файлов…{linkend} / {linkstart3}Сканировать ещё раз…{linkend})",
@@ -397,6 +396,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Введите ключ подписки, чтобы увеличить лимит пользователей. Для получения дополнительной информации о Nextcloud Enterprise посетите наш веб-сайт.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверка таблицы %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Это неподдерживаемая сборка сообщества Nextcloud. Размер этого развёртывания не позволяет, гарантировать производительность, надежность и масштабируемость. Push-уведомления отключены, чтобы не перегружать бесплатный сервис разработчиков Nextcloud. Узнайте больше о преимуществах корпоративной версии Nextcloud на сайте nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 - это последний релиз, поддерживающий PHP 7.3. Для Nextcloud 24 необходимо иметь минимальную версию PHP 7.4.",
"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}." : "Некоторые индексы базы данных не были преобразованы в тип big int. Так как преобразование таких индексов может занять продолжительное время, оно должно быть запущенно вручную. Чтобы выполнить преобразование, необходимо включить режим обслуживания и запустить в терминале команду «occ db:convert-filecache-bigint». Дополнительные сведения приведены {linkstart}на соответствующей странице документации ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Для миграции на другую базу данных используйте команду 'occ db:convert-type' или обратитесь к {linkstart}документации ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не содержит параметр «{expected}». Это может привести к проблемам безопасности. Рекомендуется задать этот параметр.",
diff --git a/core/l10n/sk.js b/core/l10n/sk.js
index 6b23b412ffc..97fd2e853bd 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nie je nakonfigurovaná vyrovnávacia pamäť. Ak chcete zvýšiť výkon, nakonfigurujte prosím memcache ak je to možné. Viac informácií nájdete v {linkstart}dokumentácii ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Použiteľný zdroj náhodnosti pre PHP nebol nájdený, čo nie je odporúčané z bezpečnostných dôvodov. Viac informácií nájdete v {linkstart}dokumentácii ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Aktuálne používate PHP {version}. Dôrazne odporúčame prechod na vyššiu verziu ihneď, ako to vaša distribúcia dovolí, aby ste využili {linkstart}všetky výkonnostné a bezpečnostné možnosti novej verzie od PHP Group ↗{linkend}.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 je posledné vydanie podporujúce PHP 7.3. Nextcloud 24 vyžaduje aspoň PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfigurácia hlavičiek reverse proxy nie je správna alebo pristupujete k NextCloud z dôveryhodného proxy servera. Ak k NextCloud nepristupujete z dôveryhodného proxy servera, vzniká bezpečnostné riziko - IP adresa potenciálneho útočníka, ktorú vidí NextCloud, môže byť falošná. Viac informácií nájdete v našej {linkstart}dokumentácii ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached je nakonfigurovaný ako distribuovaná vyrovnávacia pamäť, ale v PHP je nainštalovaný nesprávny modul - \"memcache\". \\OC\\Memcache\\Memcached podporuje len modul \"memcached\", \"memcache\" nie je podporovaný. Viac informácií nájdete na {linkstart}memcached wiki stránke o oboch moduloch ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Niektoré súbory neprešli kontrolou integrity. Ďalšie informácie o tom, ako vyriešiť tento problém, nájdete v dokumentácii {linkstart1} ↗{linkend}. ({linkstart2}Zoznam neplatných súborov ... {linkend} / {linkstart3} Znova prehľadať ...{linkend})",
@@ -406,6 +405,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Zadaním kľúča na prihlásenie zvýšite limit pre počet užívateľov. Viac informácií o Nextcloud Enterprise nájdete na našom webe.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Kontrola tabuľky %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Toto je nepodporovaná komunitná verzia Nextcloud. Vzhľadom na veľkosť tejto inštancie nemožno zaručiť výkon, spoľahlivosť a škálovateľnosť. Push notifikácie boli deaktivované, aby sa predišlo preťaženiu našej bezplatnej služby. Získajte viac informácií o výhodách Nextcloud Enterprise na nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 je posledné vydanie podporujúce PHP 7.3. Nextcloud 24 vyžaduje aspoň PHP 7.4.",
"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}." : "Niektorým stĺpcom v databáze chýba konverzia na big int. Vzhľadom na to, že zmena typov stĺpcov na veľkých tabuľkách by mohla chvíľu trvať, neboli zmenené automaticky. Spustením príkazu „occ db:convert-filecache-bigint“ budú zmeny aplikované manuálne. Túto operáciu je potrebné vykonať v čase, keď je inštancia offline. Ďalšie informácie nájdete na {linkstart} dokumentačnej stránke o tomto ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Na migráciu do inej databázy použite nástroj príkazového riadku: 'occ db:convert-type' alebo si pozrite dokumentáciu {linkstart} ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" neobsahuje \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.",
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index 9b55e408b82..65ff27fd2dd 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nie je nakonfigurovaná vyrovnávacia pamäť. Ak chcete zvýšiť výkon, nakonfigurujte prosím memcache ak je to možné. Viac informácií nájdete v {linkstart}dokumentácii ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Použiteľný zdroj náhodnosti pre PHP nebol nájdený, čo nie je odporúčané z bezpečnostných dôvodov. Viac informácií nájdete v {linkstart}dokumentácii ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Aktuálne používate PHP {version}. Dôrazne odporúčame prechod na vyššiu verziu ihneď, ako to vaša distribúcia dovolí, aby ste využili {linkstart}všetky výkonnostné a bezpečnostné možnosti novej verzie od PHP Group ↗{linkend}.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 je posledné vydanie podporujúce PHP 7.3. Nextcloud 24 vyžaduje aspoň PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfigurácia hlavičiek reverse proxy nie je správna alebo pristupujete k NextCloud z dôveryhodného proxy servera. Ak k NextCloud nepristupujete z dôveryhodného proxy servera, vzniká bezpečnostné riziko - IP adresa potenciálneho útočníka, ktorú vidí NextCloud, môže byť falošná. Viac informácií nájdete v našej {linkstart}dokumentácii ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached je nakonfigurovaný ako distribuovaná vyrovnávacia pamäť, ale v PHP je nainštalovaný nesprávny modul - \"memcache\". \\OC\\Memcache\\Memcached podporuje len modul \"memcached\", \"memcache\" nie je podporovaný. Viac informácií nájdete na {linkstart}memcached wiki stránke o oboch moduloch ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Niektoré súbory neprešli kontrolou integrity. Ďalšie informácie o tom, ako vyriešiť tento problém, nájdete v dokumentácii {linkstart1} ↗{linkend}. ({linkstart2}Zoznam neplatných súborov ... {linkend} / {linkstart3} Znova prehľadať ...{linkend})",
@@ -404,6 +403,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Zadaním kľúča na prihlásenie zvýšite limit pre počet užívateľov. Viac informácií o Nextcloud Enterprise nájdete na našom webe.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Kontrola tabuľky %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Toto je nepodporovaná komunitná verzia Nextcloud. Vzhľadom na veľkosť tejto inštancie nemožno zaručiť výkon, spoľahlivosť a škálovateľnosť. Push notifikácie boli deaktivované, aby sa predišlo preťaženiu našej bezplatnej služby. Získajte viac informácií o výhodách Nextcloud Enterprise na nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 je posledné vydanie podporujúce PHP 7.3. Nextcloud 24 vyžaduje aspoň PHP 7.4.",
"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}." : "Niektorým stĺpcom v databáze chýba konverzia na big int. Vzhľadom na to, že zmena typov stĺpcov na veľkých tabuľkách by mohla chvíľu trvať, neboli zmenené automaticky. Spustením príkazu „occ db:convert-filecache-bigint“ budú zmeny aplikované manuálne. Túto operáciu je potrebné vykonať v čase, keď je inštancia offline. Ďalšie informácie nájdete na {linkstart} dokumentačnej stránke o tomto ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Na migráciu do inej databázy použite nástroj príkazového riadku: 'occ db:convert-type' alebo si pozrite dokumentáciu {linkstart} ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" neobsahuje \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index 73837e6b7df..051fb1a7f64 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -80,7 +80,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Inget minnescache har konfigurerats. För att förbättra prestandan, vänligen konfigurera en memcache, om tillgänglig. Mer information finns i {linkstart}dokumentationen ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ingen lämplig källa för slumpmässighet hittas av PHP, Detta avråder vi från starkt på grund av säkerhetsskäl. Mer information finns i {linkstart}dokumentationen ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du kör för nuvarande PHP {version}. Uppgradera din PHP version för att dra nytta av {linkstart}prestanda och säkerhetsuppdateringar tillhandahållna av PHP Group ↗{linkend} så snart din servermiljö stödjer det.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 är den sista versionen som stödjer PHP 7.3. Nextcloud 24 kräver minst PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfigurationen av den omvända proxyhuvudet är felaktig, eller så använder du Nextcloud från en betrodd proxy. Om inte, är detta ett säkerhetsproblem och kan tillåta en angripare att förfalska sin IP-adress som synlig för Nextcloud. Mer information finns i {linkstart}dokumentationen ↗{linkend}.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP-funktionen \"set_time_limit\" är inte tillgänglig. Detta kan leda till att skript stoppas i mitten av utförandet och bryter din installation. Aktivering av denna funktion rekommenderas starkt.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Din PHP har inte FreeType-stöd, vilket resulterar i brott i profilbilder och inställningsgränssnittet.",
@@ -382,6 +381,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Ange din subscription-nyckel för att öka användarbegränsningen. Se våran hemsida för mer information om Nextcloud Enterprise.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Kontrollerar tabell %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Detta är Nextclouds communitybygge som inte supporteras. Med tanke på storleken på denna instans kan prestanda, tillförlitlighet och skalbarhet inte garanteras. Push-meddelanden har inaktiverats för att undvika överbelastning av vår gratistjänst. Lär dig mer om fördelarna med Nextcloud Enterprise på nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 är den sista versionen som stödjer PHP 7.3. Nextcloud 24 kräver minst PHP 7.4.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-rubriken \"{header}\" innehåller inte \"{expected}\". Det innebär en potentiell säkerhetsrisk. Det är rekommenderat att ändra inställningen.",
"Collaboratively edit office documents." : "Redigera dokument tillsammans.",
"Local document editing back-end used by the Collabora Online app." : "Lokal dokumentredigering back-end som används av Collabora Online-appen.",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index ecfac69d7ee..2e01ebe9aca 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -78,7 +78,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Inget minnescache har konfigurerats. För att förbättra prestandan, vänligen konfigurera en memcache, om tillgänglig. Mer information finns i {linkstart}dokumentationen ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ingen lämplig källa för slumpmässighet hittas av PHP, Detta avråder vi från starkt på grund av säkerhetsskäl. Mer information finns i {linkstart}dokumentationen ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du kör för nuvarande PHP {version}. Uppgradera din PHP version för att dra nytta av {linkstart}prestanda och säkerhetsuppdateringar tillhandahållna av PHP Group ↗{linkend} så snart din servermiljö stödjer det.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 är den sista versionen som stödjer PHP 7.3. Nextcloud 24 kräver minst PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Konfigurationen av den omvända proxyhuvudet är felaktig, eller så använder du Nextcloud från en betrodd proxy. Om inte, är detta ett säkerhetsproblem och kan tillåta en angripare att förfalska sin IP-adress som synlig för Nextcloud. Mer information finns i {linkstart}dokumentationen ↗{linkend}.",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP-funktionen \"set_time_limit\" är inte tillgänglig. Detta kan leda till att skript stoppas i mitten av utförandet och bryter din installation. Aktivering av denna funktion rekommenderas starkt.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Din PHP har inte FreeType-stöd, vilket resulterar i brott i profilbilder och inställningsgränssnittet.",
@@ -380,6 +379,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Ange din subscription-nyckel för att öka användarbegränsningen. Se våran hemsida för mer information om Nextcloud Enterprise.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Kontrollerar tabell %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Detta är Nextclouds communitybygge som inte supporteras. Med tanke på storleken på denna instans kan prestanda, tillförlitlighet och skalbarhet inte garanteras. Push-meddelanden har inaktiverats för att undvika överbelastning av vår gratistjänst. Lär dig mer om fördelarna med Nextcloud Enterprise på nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 är den sista versionen som stödjer PHP 7.3. Nextcloud 24 kräver minst PHP 7.4.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-rubriken \"{header}\" innehåller inte \"{expected}\". Det innebär en potentiell säkerhetsrisk. Det är rekommenderat att ändra inställningen.",
"Collaboratively edit office documents." : "Redigera dokument tillsammans.",
"Local document editing back-end used by the Collabora Online app." : "Lokal dokumentredigering back-end som används av Collabora Online-appen.",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index b5119dd884b..81a8299f051 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Henüz bir ön bellek yapılandırılmamış. Olabiliyorsa başarımı arttırmak için memcache ön bellek ayarlarını yapın. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Güvenlik nedeniyle kullanılması önemle önerilen rastgelelik kaynağı PHP tarafından bulunamıyor. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Şu anda PHP {version} sürümünü kullanıyorsunuz. Kullandığınız dağıtım desteklediği zaman PHP sürümünüzü güncelleyerek {linkstart}PHP grubu tarafından sağlanan başarım ve güvenlik geliştirmelerinden ↗{linkend} faydalanın.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 PHP 7.3 sürümünü destekleyen son sürümdür. Nextcloud 24 sürümü için en az PHP 7.4 gereklidir.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ters vekil sunucu üst bilgi yapılandırmanız doğru değil ya da Nextcloud üzerine güvenilen bir vekil sunucudan erişiyorsunuz. Böyle değil ise bu bir güvenlik sorunudur ve bir saldırganın IP adresini Nextcolud sunucusuna farklı göstermesine izin verebilir. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached dağıtık bellek olarak yapılandırılmış ancak kurulmuş PHP \"memcache\" modülü yanlış. \\OC\\Memcache\\Memcached yalnızca \"memcache\" modülünü değil \"memcached\" mdoülünü destekler. İki modül hakkında ayrıntılı bilgi almak için {linkstart}Memcached Wiki sayfasına ↗{linkend} bakabilirsiniz.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Bazı dosyalar bütünlük denetiminden geçemedi. Bu sorunun çözümü ile ilgili bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz. ({linkstart}Geçersiz dosyaların listesi…{linkend} / {linkstart}Yeniden Tara…{linkend})",
@@ -100,6 +99,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Bu kopyada önerilen bazı PHP modülleri eksik. Daha iyi başarım ve uyumluluk için bu modüllerin kurulması önemle önerilir.",
"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." : "Tema uygulamasında olmasına rağmen \"imagick\" PHP modülü etkinleştirilmemiş. Favicon oluşturma işleminin doğru çalışması için bu modülü kurmanız ve etkinleştirmeniz gerekir.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "\"gmp\" ve/veya \"bcmath\" PHP modülleri etkinleştirilmemiş. WebAuthn parolasız kimlik doğrulaması kullanıyorsanız, bu modüller gereklidir.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "32 bit bir PHP sürümü çalıştırıyorsunuz gibi görünüyor. Nextcloud 26 sürümü ve üzerinin iyi çalışması için 64 bit kullanılmalıdır. Lütfen işletim sisteminizi ve PHP sürümünüzü 64 bit olacak şekilde yükseltin! Ayrıntılı bilgi almak için {linkstart}ilgili belgeler sayfasına↗{linkend} bakabilirsiniz.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Bu kopyadaki php-imagick modülünde SVG desteği yok. Daha iyi başarım ve uyumluluk için bu modülün kurulması önemle önerilir.",
"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}." : "Veritabanında büyük tamsayıya dönüştürülecek bazı sütunlar eksik. Sütun türlerini büyük tablolara dönüştürme işlemi uzun sürebileceğinden bu işlem otomatik olarak yapılmaz. Sunucunuz normal çalışırken bekleyen değişiklikleri el ile uygulamak için \"occ db:convert-filecache-bigint\" komutunu yürütün. Bu işlem yapılırken Nextcloud kopyası çevrimdışı olur. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Şu anda veritabanı olarak SQLite kullanılıyor. Daha büyük kurulumlar için farklı bir veritabanı arka ucuna geçmenizi öneriyoruz.",
@@ -406,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Kullanıcı sayısı sınırını arttırmak için abonelik anatarınızı yazın. Nextcloud Enterprise sürümü hakkında ayrıntılı bilgi almak için web sitemize bakabilirsiniz.",
"[%d / %d]: Checking table %s" : "[%d / %d]: %s tablosu denetleniyor",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Bu Nextcloud topluluk sürümü desteklenmiyor. Bu kopyanın boyutu göz önüne alındığında, başarım, güvenilirlik ve ölçeklenebilirlik garanti edilemez. Ücretsiz hizmetimizi aşırı yüklememek için anında bildirimler devre dışı bırakıldı. nextcloud.com/enterprise adresinden Nextcloud Enterprise sürümünün avantajları hakkında ayrıntılı bilgi alabilirsiniz.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 PHP 7.3 sürümünü destekleyen son sürümdür. Nextcloud 24 sürümü için en az PHP 7.4 gereklidir.",
"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}." : "Veritabanında büyük tamsayıya dönüştürülecek bazı sütunlar eksik. Sütun türlerini büyük tablolara dönüştürme işlemi uzun sürebileceğinden bu işlem otomatik olarak yapılmaz. Sunucunuz normal çalışırken bekleyen değişiklikleri el ile uygulamak için \"occ db:convert-filecache-bigint\" komutunu yürütün. Bu işlem yapılırken Nextcloud kopyası çevrimdışı olur. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Başka bir veritabanına geçmek için komut satırı aracını kullanın: 'occ db:convert-type' ya da {linkstart}belgeler ↗{linkend} bölümüne bakın.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisinde \"{expected}\" bulunmuyor. Bu durum olası bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarın uygun şekilde yapılması önerilir.",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 9c94ea07c15..25c6b63f3e7 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Henüz bir ön bellek yapılandırılmamış. Olabiliyorsa başarımı arttırmak için memcache ön bellek ayarlarını yapın. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Güvenlik nedeniyle kullanılması önemle önerilen rastgelelik kaynağı PHP tarafından bulunamıyor. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Şu anda PHP {version} sürümünü kullanıyorsunuz. Kullandığınız dağıtım desteklediği zaman PHP sürümünüzü güncelleyerek {linkstart}PHP grubu tarafından sağlanan başarım ve güvenlik geliştirmelerinden ↗{linkend} faydalanın.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 PHP 7.3 sürümünü destekleyen son sürümdür. Nextcloud 24 sürümü için en az PHP 7.4 gereklidir.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ters vekil sunucu üst bilgi yapılandırmanız doğru değil ya da Nextcloud üzerine güvenilen bir vekil sunucudan erişiyorsunuz. Böyle değil ise bu bir güvenlik sorunudur ve bir saldırganın IP adresini Nextcolud sunucusuna farklı göstermesine izin verebilir. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached dağıtık bellek olarak yapılandırılmış ancak kurulmuş PHP \"memcache\" modülü yanlış. \\OC\\Memcache\\Memcached yalnızca \"memcache\" modülünü değil \"memcached\" mdoülünü destekler. İki modül hakkında ayrıntılı bilgi almak için {linkstart}Memcached Wiki sayfasına ↗{linkend} bakabilirsiniz.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Bazı dosyalar bütünlük denetiminden geçemedi. Bu sorunun çözümü ile ilgili bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz. ({linkstart}Geçersiz dosyaların listesi…{linkend} / {linkstart}Yeniden Tara…{linkend})",
@@ -98,6 +97,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Bu kopyada önerilen bazı PHP modülleri eksik. Daha iyi başarım ve uyumluluk için bu modüllerin kurulması önemle önerilir.",
"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." : "Tema uygulamasında olmasına rağmen \"imagick\" PHP modülü etkinleştirilmemiş. Favicon oluşturma işleminin doğru çalışması için bu modülü kurmanız ve etkinleştirmeniz gerekir.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "\"gmp\" ve/veya \"bcmath\" PHP modülleri etkinleştirilmemiş. WebAuthn parolasız kimlik doğrulaması kullanıyorsanız, bu modüller gereklidir.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "32 bit bir PHP sürümü çalıştırıyorsunuz gibi görünüyor. Nextcloud 26 sürümü ve üzerinin iyi çalışması için 64 bit kullanılmalıdır. Lütfen işletim sisteminizi ve PHP sürümünüzü 64 bit olacak şekilde yükseltin! Ayrıntılı bilgi almak için {linkstart}ilgili belgeler sayfasına↗{linkend} bakabilirsiniz.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Bu kopyadaki php-imagick modülünde SVG desteği yok. Daha iyi başarım ve uyumluluk için bu modülün kurulması önemle önerilir.",
"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}." : "Veritabanında büyük tamsayıya dönüştürülecek bazı sütunlar eksik. Sütun türlerini büyük tablolara dönüştürme işlemi uzun sürebileceğinden bu işlem otomatik olarak yapılmaz. Sunucunuz normal çalışırken bekleyen değişiklikleri el ile uygulamak için \"occ db:convert-filecache-bigint\" komutunu yürütün. Bu işlem yapılırken Nextcloud kopyası çevrimdışı olur. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Şu anda veritabanı olarak SQLite kullanılıyor. Daha büyük kurulumlar için farklı bir veritabanı arka ucuna geçmenizi öneriyoruz.",
@@ -404,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Kullanıcı sayısı sınırını arttırmak için abonelik anatarınızı yazın. Nextcloud Enterprise sürümü hakkında ayrıntılı bilgi almak için web sitemize bakabilirsiniz.",
"[%d / %d]: Checking table %s" : "[%d / %d]: %s tablosu denetleniyor",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Bu Nextcloud topluluk sürümü desteklenmiyor. Bu kopyanın boyutu göz önüne alındığında, başarım, güvenilirlik ve ölçeklenebilirlik garanti edilemez. Ücretsiz hizmetimizi aşırı yüklememek için anında bildirimler devre dışı bırakıldı. nextcloud.com/enterprise adresinden Nextcloud Enterprise sürümünün avantajları hakkında ayrıntılı bilgi alabilirsiniz.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 PHP 7.3 sürümünü destekleyen son sürümdür. Nextcloud 24 sürümü için en az PHP 7.4 gereklidir.",
"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}." : "Veritabanında büyük tamsayıya dönüştürülecek bazı sütunlar eksik. Sütun türlerini büyük tablolara dönüştürme işlemi uzun sürebileceğinden bu işlem otomatik olarak yapılmaz. Sunucunuz normal çalışırken bekleyen değişiklikleri el ile uygulamak için \"occ db:convert-filecache-bigint\" komutunu yürütün. Bu işlem yapılırken Nextcloud kopyası çevrimdışı olur. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Başka bir veritabanına geçmek için komut satırı aracını kullanın: 'occ db:convert-type' ya da {linkstart}belgeler ↗{linkend} bölümüne bakın.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisinde \"{expected}\" bulunmuyor. Bu durum olası bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarın uygun şekilde yapılması önerilir.",
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index a3ba12a3da9..9946f1bc346 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -83,7 +83,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Кеш-пам'ять не налаштовано. Щоб підвищити продуктивність, налаштуйте кеш пам’яті, якщо він доступний. Додаткову інформацію можна знайти в {linkstart}документації ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP не знайшов відповідного джерела для випадковості, що вкрай не рекомендується з міркувань безпеки. Додаткову інформацію можна знайти в {linkstart}документації ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Зараз ви використовуєте PHP {version}. Оновіть свою версію PHP, щоб скористатися {linkstart}оновленнями продуктивності та безпеки, наданими PHP Group ↗{linkend}, щойно ваш дистрибутив це підтримуватиме.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 є останнім випуском, що підтримує PHP 7.3. Nextcloud 24 вимагає принаймні PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Конфігурація зворотного заголовка проксі-сервера неправильна, або ви отримуєте доступ до Nextcloud із надійного проксі-сервера. Якщо ні, це проблема безпеки та може дозволити зловмиснику підробити свою IP-адресу як видиму для Nextcloud. Додаткову інформацію можна знайти в {linkstart}документації ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached налаштовано як розподілений кеш, але встановлено неправильний модуль PHP \"memcache\". \\OC\\Memcache\\Memcached підтримує лише «memcached», а не «memcache». Перегляньте {linkstart}memcached wiki про обидва модулі ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Деякі файли не пройшли перевірку цілісності. Додаткову інформацію про те, як вирішити цю проблему, можна знайти в {linkstart1}документації ↗{linkend}. ({linkstart2}Список недійсних файлів…{linkend} / {linkstart3}Пересканувати…{linkend})",
@@ -403,6 +402,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Введіть ключ підписки, щоб збільшити ліміт користувачів. Для отримання додаткової інформації про Nextcloud Enterprise відвідайте наш веб-сайт.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Перевірка таблиці %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Це непідтримувана збірка спільноти Nextcloud. Враховуючи розмір цього екземпляра, не можна гарантувати продуктивність, надійність і масштабованість. Push-сповіщення вимкнено, щоб уникнути перевантаження нашого безкоштовного сервісу. Дізнайтеся більше про переваги Nextcloud Enterprise на nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 є останнім випуском, що підтримує PHP 7.3. Nextcloud 24 вимагає принаймні PHP 7.4.",
"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}." : "У деяких стовпцях бази даних відсутнє перетворення на big int. Через те, що зміна типів стовпців у великих таблицях могла зайняти деякий час, їх не було змінено автоматично. Для застосування змін, будь ласка, виконайте команду \"occ db:convert-filecache-bigint\". Цю операцію потрібно виконати, коли примірник перебуває в автономному режимі. Для отримання додаткової інформації прочитайте {linkstart}сторінку документації про це ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Щоб перейти до іншої бази даних, скористайтеся інструментом командного рядка: 'occ db:convert-type' або перегляньте {linkstart}документацію ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-заголовок \"{header}\" не містить \"{expected}\". Це потенційний ризик для безпеки або конфіденційності, тому рекомендується відповідним чином налаштувати цей параметр.",
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index aec13cde6da..6f4468cfa82 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -81,7 +81,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Кеш-пам'ять не налаштовано. Щоб підвищити продуктивність, налаштуйте кеш пам’яті, якщо він доступний. Додаткову інформацію можна знайти в {linkstart}документації ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP не знайшов відповідного джерела для випадковості, що вкрай не рекомендується з міркувань безпеки. Додаткову інформацію можна знайти в {linkstart}документації ↗{linkend}.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Зараз ви використовуєте PHP {version}. Оновіть свою версію PHP, щоб скористатися {linkstart}оновленнями продуктивності та безпеки, наданими PHP Group ↗{linkend}, щойно ваш дистрибутив це підтримуватиме.",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 є останнім випуском, що підтримує PHP 7.3. Nextcloud 24 вимагає принаймні PHP 7.4.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Конфігурація зворотного заголовка проксі-сервера неправильна, або ви отримуєте доступ до Nextcloud із надійного проксі-сервера. Якщо ні, це проблема безпеки та може дозволити зловмиснику підробити свою IP-адресу як видиму для Nextcloud. Додаткову інформацію можна знайти в {linkstart}документації ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached налаштовано як розподілений кеш, але встановлено неправильний модуль PHP \"memcache\". \\OC\\Memcache\\Memcached підтримує лише «memcached», а не «memcache». Перегляньте {linkstart}memcached wiki про обидва модулі ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Деякі файли не пройшли перевірку цілісності. Додаткову інформацію про те, як вирішити цю проблему, можна знайти в {linkstart1}документації ↗{linkend}. ({linkstart2}Список недійсних файлів…{linkend} / {linkstart3}Пересканувати…{linkend})",
@@ -401,6 +400,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Введіть ключ підписки, щоб збільшити ліміт користувачів. Для отримання додаткової інформації про Nextcloud Enterprise відвідайте наш веб-сайт.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Перевірка таблиці %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Це непідтримувана збірка спільноти Nextcloud. Враховуючи розмір цього екземпляра, не можна гарантувати продуктивність, надійність і масштабованість. Push-сповіщення вимкнено, щоб уникнути перевантаження нашого безкоштовного сервісу. Дізнайтеся більше про переваги Nextcloud Enterprise на nextcloud.com/enterprise.",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 є останнім випуском, що підтримує PHP 7.3. Nextcloud 24 вимагає принаймні PHP 7.4.",
"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}." : "У деяких стовпцях бази даних відсутнє перетворення на big int. Через те, що зміна типів стовпців у великих таблицях могла зайняти деякий час, їх не було змінено автоматично. Для застосування змін, будь ласка, виконайте команду \"occ db:convert-filecache-bigint\". Цю операцію потрібно виконати, коли примірник перебуває в автономному режимі. Для отримання додаткової інформації прочитайте {linkstart}сторінку документації про це ↗{linkend}.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "Щоб перейти до іншої бази даних, скористайтеся інструментом командного рядка: 'occ db:convert-type' або перегляньте {linkstart}документацію ↗{linkend}.",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-заголовок \"{header}\" не містить \"{expected}\". Це потенційний ризик для безпеки або конфіденційності, тому рекомендується відповідним чином налаштувати цей параметр.",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index 2b01b8906fa..3513e23b0a8 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -83,7 +83,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "内存缓存未配置。为了提升性能,请尽量配置内存缓存。更多信息请参见{linkstart}文档↗{linkend}。",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP找不到合适的随机性来源,出于安全原因,这是强烈不推荐的。 更多信息可以在{linkstart}文档↗{linkend}中找到。",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "您当前正在运行 PHP 版本 {version}。我们建议您在您的操作系统发行版支持PHP新版本的时候进行升级,以获得{linkstart}来自 PHP 官方的性能和安全更新↗{linkend}。",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 是支持 PHP 7.3 的最后一个版本。Nextcloud 24 需要至少 PHP 7.4。",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "反向代理头部配置错误,或者您正在通过可信的代理访问 Nextcloud。如果您不是通过可信代理访问 Nextcloud,那这是一个安全问题,它可能允许攻击者通过伪装其IP地址以访问 Nextcloud。更多信息请查看{linkstart}文档↗{linkend}。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached 被配置为分布式缓存,但安装了错误的 PHP 模块 \"memcache\"。\\OC\\Memcache\\Memcached 只支持 \"memcached\" 不支持 \"memcache\"。见 {linkstart} 有关两者的 memcached 维基 ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "一些文件未通过完整性检查。有关如何解决这一问题的进一步信息可在 {linkstart1}文档↗{linkend}中找到。({linkstart2}无效文件列表…{linkend} / {linkstart3}重新扫描…{linkend})",
@@ -405,6 +404,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "输入订阅密钥以增加用户限制。欲了解更多关于Nextcloud企业版的信息,请访问我们的网站。",
"[%d / %d]: Checking table %s" : "[%d / %d]:检查数据表 %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "这是 Nextcloud 不受支持的社区构建。鉴于此实例的大小,无法保证性能、可靠性和可伸缩性。推送通知已被禁用,以避免超量使用我们的免费服务。访问 nextcloud.com/enterprise 了解更多关于企业版的优势。",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 是支持 PHP 7.3 的最后一个版本。Nextcloud 24 需要至少 PHP 7.4。",
"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}." : "数据库中的一些列缺少到 big int 的转换。由于更改大表上的列类型可能需要一些时间,所以它们不会被自动更改。通过运行 'occ db:convert-filecache-bigint',这些挂起的更改可以手动应用。需要在实例离线时执行此操作。进一步的细节,可以阅读 {linkstart} 关于此问题的文档页面 ↗{linkend}",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "要迁移到另一个数据库,使用命令行工具 'occ db:convert-type'或见 {linkstart}文档↗{linkend}",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP 头 \"{header}\" 未包含 \"{expected}\"。这是一种潜在的安全或隐私风险,因此推荐调整此项设置。",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 41c4b0661fe..2781c732280 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -81,7 +81,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "内存缓存未配置。为了提升性能,请尽量配置内存缓存。更多信息请参见{linkstart}文档↗{linkend}。",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP找不到合适的随机性来源,出于安全原因,这是强烈不推荐的。 更多信息可以在{linkstart}文档↗{linkend}中找到。",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "您当前正在运行 PHP 版本 {version}。我们建议您在您的操作系统发行版支持PHP新版本的时候进行升级,以获得{linkstart}来自 PHP 官方的性能和安全更新↗{linkend}。",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 是支持 PHP 7.3 的最后一个版本。Nextcloud 24 需要至少 PHP 7.4。",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "反向代理头部配置错误,或者您正在通过可信的代理访问 Nextcloud。如果您不是通过可信代理访问 Nextcloud,那这是一个安全问题,它可能允许攻击者通过伪装其IP地址以访问 Nextcloud。更多信息请查看{linkstart}文档↗{linkend}。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached 被配置为分布式缓存,但安装了错误的 PHP 模块 \"memcache\"。\\OC\\Memcache\\Memcached 只支持 \"memcached\" 不支持 \"memcache\"。见 {linkstart} 有关两者的 memcached 维基 ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "一些文件未通过完整性检查。有关如何解决这一问题的进一步信息可在 {linkstart1}文档↗{linkend}中找到。({linkstart2}无效文件列表…{linkend} / {linkstart3}重新扫描…{linkend})",
@@ -403,6 +402,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "输入订阅密钥以增加用户限制。欲了解更多关于Nextcloud企业版的信息,请访问我们的网站。",
"[%d / %d]: Checking table %s" : "[%d / %d]:检查数据表 %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "这是 Nextcloud 不受支持的社区构建。鉴于此实例的大小,无法保证性能、可靠性和可伸缩性。推送通知已被禁用,以避免超量使用我们的免费服务。访问 nextcloud.com/enterprise 了解更多关于企业版的优势。",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 是支持 PHP 7.3 的最后一个版本。Nextcloud 24 需要至少 PHP 7.4。",
"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}." : "数据库中的一些列缺少到 big int 的转换。由于更改大表上的列类型可能需要一些时间,所以它们不会被自动更改。通过运行 'occ db:convert-filecache-bigint',这些挂起的更改可以手动应用。需要在实例离线时执行此操作。进一步的细节,可以阅读 {linkstart} 关于此问题的文档页面 ↗{linkend}",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "要迁移到另一个数据库,使用命令行工具 'occ db:convert-type'或见 {linkstart}文档↗{linkend}",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP 头 \"{header}\" 未包含 \"{expected}\"。这是一种潜在的安全或隐私风险,因此推荐调整此项设置。",
diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js
index 3faaa167b03..9a0268960d3 100644
--- a/core/l10n/zh_HK.js
+++ b/core/l10n/zh_HK.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "尚未配置內存緩存。為了提高性能,請配置內存緩存(如有)。可以在 {linkstart}說明書↗{linkend} 中找到更多資訊。",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "由於安全原因,強烈建議不要使用PHP找到適合隨機性的來源。可以在{linkstart}文檔↗{linkend}中找到更多信息。",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "您當前正在運行PHP {version}。只要您的發行版支持,請升級PHP版本以利用 {linkstart}PHP Group↗提供的性能和安全更新{linkend}。",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 是支援 PHP 7.3 的最後版本,Nextcloud 24 僅支援 PHP 7.4 以上的版本。",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "反向代理標頭(reverse proxy header)配置不正確,或者您正在從受信任的代理(trusted proxy)存取 Nextcloud。如果不是這樣,則這是一個安全問題,並且可以使攻擊者欺騙其對 Nextcloud 可見的IP地址。可以在{linkstart}文檔↗{linkend}中找到更多資訊。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached 配置為分布式緩存,但是安裝了錯誤的PHP模塊 “memcache”。\\OC\\Memcache\\Memcached 僅支持 “memcached”,不支持 “memcache”。有關這兩個模塊的信息,請參見{linkstart}內存緩存wiki {linkend}。",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "某些檔案未通過完整性檢查。有關如何解決此問題的更多信息,請參見{linkstart1}文檔↗{linkend}。({linkstart2}無效檔案清單…{linkend} / {linkstart3}重新掃描…{linkend})",
@@ -100,6 +99,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "您的 Nextcloud 缺少了某些建議的 PHP 模組。為了提升效能與相容性,強烈建議您安裝這些 PHP 模組。",
"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." : "雖然已啟用佈景主題應用程式,但並未啟用 PHP 模組「imagick」。為了讓 favicon 產生流程正常運作,您必須安裝並啟用此模組。",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "未啟用 PHP 模組「gmp」與「bcmath」。若您要使用 WebAuthn 免密碼驗證,這些模組就是必要的。",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 26 或更新版本需要使用 64 位元的版本。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀{linkstart}關於此問題的文件 ↗{linkend}。",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "本系統安裝的 php-imagick 不支援 SVG,為了更好的相容性,建議安裝它。",
"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}." : "數據庫中的某些列缺少對 big int 的轉換。由於更改大表上的列類型可能需要一些時間,因此無法自動更改它們。通過運行 “occ db:convert-filecache-bigint”,可以手動應用這些未決的更改。實例處於脫機狀態時需要執行此操作。有關更多詳細信息,請{linklink}關於此↗{linkend}的文檔頁面。",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "目前您的後端數據庫使用 SQLite,在大型服務當中,我們建議您使用其他的數據庫後端。",
@@ -406,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "請輸入你獲得的訂閱代碼以解開用戶數量限制。有關Nextcloud企業版的詳細信息請參見我們的網站。",
"[%d / %d]: Checking table %s" : "[%d / %d]: 檢查數據表 %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "這是不受支援的 Nextcloud 社群版建置。鑑於此站台的大小,無法保證效能、可靠程度與延展性。推播通知已被停用,以避免我們的免費服務負載過重。請至 nextcloud.com/enterprise 取得更多關於 Nextcloud 企業版的資訊。",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 是支援 PHP 7.3 的最後版本,Nextcloud 24 僅支援 PHP 7.4 以上的版本。",
"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}." : "數據庫中的某些列缺少對 big int 的轉換。由於更改大表上的列類型可能需要一些時間,因此無法自動更改它們。通過運行 “occ db:convert-filecache-bigint”,可以手動應用這些未決的更改。實例處於脫機狀態時需要執行此操作。有關更多詳細信息,請{linklink}關於此↗{linkend}的文檔頁面。",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "要遷移到另一個數據庫,請使用指令工具:“ occ db:convert-type”,或參閱 {linkstart} 說明書↗{linkend}。",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "目前 HTTP 的 {header} 標頭設定並不包防 \"{expected}\" ,這是一個潛在的安全性和隱私風險,建議調整此項設定。",
diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json
index df4b85916df..81e1cf2b5ec 100644
--- a/core/l10n/zh_HK.json
+++ b/core/l10n/zh_HK.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "尚未配置內存緩存。為了提高性能,請配置內存緩存(如有)。可以在 {linkstart}說明書↗{linkend} 中找到更多資訊。",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "由於安全原因,強烈建議不要使用PHP找到適合隨機性的來源。可以在{linkstart}文檔↗{linkend}中找到更多信息。",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "您當前正在運行PHP {version}。只要您的發行版支持,請升級PHP版本以利用 {linkstart}PHP Group↗提供的性能和安全更新{linkend}。",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 是支援 PHP 7.3 的最後版本,Nextcloud 24 僅支援 PHP 7.4 以上的版本。",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "反向代理標頭(reverse proxy header)配置不正確,或者您正在從受信任的代理(trusted proxy)存取 Nextcloud。如果不是這樣,則這是一個安全問題,並且可以使攻擊者欺騙其對 Nextcloud 可見的IP地址。可以在{linkstart}文檔↗{linkend}中找到更多資訊。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached 配置為分布式緩存,但是安裝了錯誤的PHP模塊 “memcache”。\\OC\\Memcache\\Memcached 僅支持 “memcached”,不支持 “memcache”。有關這兩個模塊的信息,請參見{linkstart}內存緩存wiki {linkend}。",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "某些檔案未通過完整性檢查。有關如何解決此問題的更多信息,請參見{linkstart1}文檔↗{linkend}。({linkstart2}無效檔案清單…{linkend} / {linkstart3}重新掃描…{linkend})",
@@ -98,6 +97,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "您的 Nextcloud 缺少了某些建議的 PHP 模組。為了提升效能與相容性,強烈建議您安裝這些 PHP 模組。",
"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." : "雖然已啟用佈景主題應用程式,但並未啟用 PHP 模組「imagick」。為了讓 favicon 產生流程正常運作,您必須安裝並啟用此模組。",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "未啟用 PHP 模組「gmp」與「bcmath」。若您要使用 WebAuthn 免密碼驗證,這些模組就是必要的。",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 26 或更新版本需要使用 64 位元的版本。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀{linkstart}關於此問題的文件 ↗{linkend}。",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "本系統安裝的 php-imagick 不支援 SVG,為了更好的相容性,建議安裝它。",
"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}." : "數據庫中的某些列缺少對 big int 的轉換。由於更改大表上的列類型可能需要一些時間,因此無法自動更改它們。通過運行 “occ db:convert-filecache-bigint”,可以手動應用這些未決的更改。實例處於脫機狀態時需要執行此操作。有關更多詳細信息,請{linklink}關於此↗{linkend}的文檔頁面。",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "目前您的後端數據庫使用 SQLite,在大型服務當中,我們建議您使用其他的數據庫後端。",
@@ -404,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "請輸入你獲得的訂閱代碼以解開用戶數量限制。有關Nextcloud企業版的詳細信息請參見我們的網站。",
"[%d / %d]: Checking table %s" : "[%d / %d]: 檢查數據表 %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "這是不受支援的 Nextcloud 社群版建置。鑑於此站台的大小,無法保證效能、可靠程度與延展性。推播通知已被停用,以避免我們的免費服務負載過重。請至 nextcloud.com/enterprise 取得更多關於 Nextcloud 企業版的資訊。",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 是支援 PHP 7.3 的最後版本,Nextcloud 24 僅支援 PHP 7.4 以上的版本。",
"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}." : "數據庫中的某些列缺少對 big int 的轉換。由於更改大表上的列類型可能需要一些時間,因此無法自動更改它們。通過運行 “occ db:convert-filecache-bigint”,可以手動應用這些未決的更改。實例處於脫機狀態時需要執行此操作。有關更多詳細信息,請{linklink}關於此↗{linkend}的文檔頁面。",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "要遷移到另一個數據庫,請使用指令工具:“ occ db:convert-type”,或參閱 {linkstart} 說明書↗{linkend}。",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "目前 HTTP 的 {header} 標頭設定並不包防 \"{expected}\" ,這是一個潛在的安全性和隱私風險,建議調整此項設定。",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index 42852d69958..d1b2bd2382e 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -84,7 +84,6 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "您沒有設定記憶體快取,如果可以,請設定 memcache 來提升效能。更多資訊請查閱{linkstart}文件 ↗{linkend}。",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP 無法取得合適的亂數產生源。為了安全性考量,不建議如此做。更多資訊參考{linkstart}文件 ↗{linkend}。",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "您目前正執行 PHP {version} ,我們建議您升級 PHP 到您的散佈版所支援的最新版本,以取得 {linkstart}PHP 開發團隊提供的效能與安全性更新 ↗{linkend}。",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 將是支援 PHP 7.3 的最後一個版本,Nextcloud 24 僅支援 PHP 7.4 以上的 PHP。",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "偵測到您的反向代理標頭設定不正確,但也有可能是因為您目前正透過信任的代理伺服器存取 Nextcloud。若您目前不是透過信任的代理伺服器存取 Nextcloud,這就是一個安全性問題,允許攻擊者對 Nextcloud 假冒 IP 位址。更多資訊請查閱{linkstart}文件 ↗{linkend}。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached是用於分散式緩存的設置,但是目前安裝了錯誤的PHP模組為「memcache」。\\OC\\Memcache\\Memcached僅支援「memcached」而不是「memcache」。請參閱 {linkstart}memcached wiki了解兩種模組資訊 ↗{linkend}。",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "部份檔案未通過完整性檢查。更多關於如何解決此問題的資訊可在{linkstart1}文件 ↗{linkend}中找到。({linkstart2}無效檔案列表……{linkend} / {linkstart3}重新掃描……{linkend})",
@@ -407,6 +406,7 @@ OC.L10N.register(
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "輸入您的訂閱金鑰以增加使用者限制。要取得更多關於 Nextcloud 企業版的資訊,請見我們的網站。",
"[%d / %d]: Checking table %s" : "[%d / %d]: 檢查資料表 %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "這是不受支援的 Nextcloud 社群版建置。鑑於此站台的大小,無法保證效能、可靠程度與延展性。推播通知已被停用,以避免我們的免費服務負載過重。請至 nextcloud.com/enterprise 取得更多關於 Nextcloud 企業版的資訊。",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 將是支援 PHP 7.3 的最後一個版本,Nextcloud 24 僅支援 PHP 7.4 以上的 PHP。",
"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}." : "資料庫的有些欄位缺少 big int 格式轉換。因為攔位格式轉換需要一些時間,所以沒有自動轉換。你可以執行 \"occ db:convert-filecache-bigin\" 手動完成轉換,轉換時 Nextcloud 服務必須處於離線狀態。詳情請參閱{linkstart}關於這個問題的文件頁面 ↗{linkend}。",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "若要遷移至另一個資料庫,請使用命令列工具: 'occ db:convert-type' ,或是查閱{linkstart}文件 ↗{linkend}。",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "目前 HTTP 的 \"{header}\" 標頭設定並不包含 \"{expected}\" ,這是一個潛在的安全性和隱私風險,我們建議調整此項設定。",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index 7e7071252ca..e7fdd4ba891 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -82,7 +82,6 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "您沒有設定記憶體快取,如果可以,請設定 memcache 來提升效能。更多資訊請查閱{linkstart}文件 ↗{linkend}。",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "PHP 無法取得合適的亂數產生源。為了安全性考量,不建議如此做。更多資訊參考{linkstart}文件 ↗{linkend}。",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "您目前正執行 PHP {version} ,我們建議您升級 PHP 到您的散佈版所支援的最新版本,以取得 {linkstart}PHP 開發團隊提供的效能與安全性更新 ↗{linkend}。",
- "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 將是支援 PHP 7.3 的最後一個版本,Nextcloud 24 僅支援 PHP 7.4 以上的 PHP。",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "偵測到您的反向代理標頭設定不正確,但也有可能是因為您目前正透過信任的代理伺服器存取 Nextcloud。若您目前不是透過信任的代理伺服器存取 Nextcloud,這就是一個安全性問題,允許攻擊者對 Nextcloud 假冒 IP 位址。更多資訊請查閱{linkstart}文件 ↗{linkend}。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached是用於分散式緩存的設置,但是目前安裝了錯誤的PHP模組為「memcache」。\\OC\\Memcache\\Memcached僅支援「memcached」而不是「memcache」。請參閱 {linkstart}memcached wiki了解兩種模組資訊 ↗{linkend}。",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "部份檔案未通過完整性檢查。更多關於如何解決此問題的資訊可在{linkstart1}文件 ↗{linkend}中找到。({linkstart2}無效檔案列表……{linkend} / {linkstart3}重新掃描……{linkend})",
@@ -405,6 +404,7 @@
"Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "輸入您的訂閱金鑰以增加使用者限制。要取得更多關於 Nextcloud 企業版的資訊,請見我們的網站。",
"[%d / %d]: Checking table %s" : "[%d / %d]: 檢查資料表 %s",
"This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "這是不受支援的 Nextcloud 社群版建置。鑑於此站台的大小,無法保證效能、可靠程度與延展性。推播通知已被停用,以避免我們的免費服務負載過重。請至 nextcloud.com/enterprise 取得更多關於 Nextcloud 企業版的資訊。",
+ "Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4." : "Nextcloud 23 將是支援 PHP 7.3 的最後一個版本,Nextcloud 24 僅支援 PHP 7.4 以上的 PHP。",
"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}." : "資料庫的有些欄位缺少 big int 格式轉換。因為攔位格式轉換需要一些時間,所以沒有自動轉換。你可以執行 \"occ db:convert-filecache-bigin\" 手動完成轉換,轉換時 Nextcloud 服務必須處於離線狀態。詳情請參閱{linkstart}關於這個問題的文件頁面 ↗{linkend}。",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the {linkstart}documentation ↗{linkend}." : "若要遷移至另一個資料庫,請使用命令列工具: 'occ db:convert-type' ,或是查閱{linkstart}文件 ↗{linkend}。",
"The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "目前 HTTP 的 \"{header}\" 標頭設定並不包含 \"{expected}\" ,這是一個潛在的安全性和隱私風險,我們建議調整此項設定。",
diff --git a/core/src/components/login/LoginForm.vue b/core/src/components/login/LoginForm.vue
index c1fd1e23461..23d37cfcb9e 100644
--- a/core/src/components/login/LoginForm.vue
+++ b/core/src/components/login/LoginForm.vue
@@ -52,7 +52,7 @@
<!-- the following div ensures that the spinner is always inside the #message div -->
<div style="clear: both;" />
</div>
- <h2 class="login-form__headline">{{ t('core', 'Log in to {productName}', { productName: OC.theme.name }) }}</h2>
+ <h2 class="login-form__headline" v-html="headline" />
<NcTextField id="user"
ref="user"
:label="t('core', 'Account name or email')"
@@ -159,6 +159,7 @@ export default {
loading: false,
timezone: jstz.determine().name(),
timezoneOffset: (-new Date().getTimezoneOffset() / 60),
+ headline: t('core', 'Log in to {productName}', { productName: OC.theme.name }),
user: '',
password: '',
}
diff --git a/core/src/services/UnifiedSearchService.js b/core/src/services/UnifiedSearchService.js
index f365a378e0c..3c673479771 100644
--- a/core/src/services/UnifiedSearchService.js
+++ b/core/src/services/UnifiedSearchService.js
@@ -28,7 +28,7 @@ import { loadState } from '@nextcloud/initial-state'
import axios from '@nextcloud/axios'
export const defaultLimit = loadState('unified-search', 'limit-default')
-export const minSearchLength = loadState('unified-search', 'min-search-length', 2)
+export const minSearchLength = loadState('unified-search', 'min-search-length', 1)
export const enableLiveSearch = loadState('unified-search', 'live-search', true)
export const regexFilterIn = /(^|\s)in:([a-z_-]+)/ig
diff --git a/dist/core-login.js b/dist/core-login.js
index 86df6d9511e..efd2c7fbfb8 100644
--- a/dist/core-login.js
+++ b/dist/core-login.js
@@ -1,3 +1,3 @@
/*! For license information please see core-login.js.LICENSE.txt */
-!function(){var e,o={61886:function(e,o,i){"use strict";var r=i(20144),a=i(74854),s=i(19755),l=i.n(s),c=i(79753),u={},d=[],f=i(18181),p=i(26932),h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){f.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:p.Rl;var n=(0,p.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:p.Rl;var n=(0,p.PV)(function(t){return t.toString().split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;").split("'").join("&#039;")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,p.PV)(t,{timeout:p.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||p.TN;var n=(0,p.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},m=f.ZP.throttle((function(){h.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),g={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function v(t,e,n){"post"!==t&&"delete"!==t||!Rt.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Rt.PasswordConfirmation.requirePasswordConfirmation(_.bind(v,this,t,e,n))}var y=window.oc_appconfig||{},w={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},v("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},v("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){v("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){v("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){v("delete","/"+t+"/"+e,void 0)}(t,e)}},b=void 0!==window._oc_appswebroots&&window._oc_appswebroots,P=i(72316),C=i.n(P),A=i(87240),k={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function x(t,e){if(f.ZP.isArray(t))return f.ZP.map(t,(function(t){return x(t,e)}));var n={href:t.href};return f.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var i=o;o in e&&(i=e[o]),n[i]=t.properties[o]}})),n.id||(n.id=O(n.href)),n}function O(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function T(t){return t>=200&&t<=299}function E(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var i=e[n],r=t[n];i||(console.warn('No matching DAV property for property "'+n),i=n),(f.ZP.isBoolean(r)||f.ZP.isNumber(r))&&(r=""+r),o[i]=r}return o}(n.changed,e.davProperties),o).then((function(t){T(t.status)?f.ZP.isFunction(e.success)&&e.success(n.toJSON()):f.ZP.isFunction(e.error)&&e.error(t)}))}var j=C().noConflict();Object.assign(j,{davCall:function(t,e){var n=new A.dav.Client({baseUrl:t.url,xmlNamespaces:f.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=f.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,f.ZP.values(e.davProperties)||[],e.depth,o).then((function(t){if(T(t.status)){if(f.ZP.isFunction(e.success)){var n=f.ZP.invert(e.davProperties),o=x(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else f.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?E(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(i){T(i.status)?E(t,e,n,o):f.ZP.isFunction(e.error)&&e.error(i)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(T(t.status)){if(f.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(o.id=O(i)),void e.success(o)}if(207===t.status){var r=f.ZP.invert(e.davProperties);e.success(x(t.body,r))}else e.success(t.body)}}else f.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var i={type:k[e]||e},r=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),o.url||(i.url=f.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(f.ZP.isFunction(a)?i.davProperties=a.call(n):i.davProperties=a),i.davProperties=f.ZP.extend(i.davProperties||{},o.davProperties),f.ZP.isUndefined(o.depth)&&(o.depth=r?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(f.ZP.extend(i,o),n);return n.trigger("request",n,l,o),l}}(j)});var S=j,L=i(65358),N=window._oc_config||{},$=P.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),I=P.Collection.extend({model:$}),U=P.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new F({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),F=P.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:i(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),R=P.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:i(95386),error:i(20421),menu:i(66115),list:i(34083)},_onSearch:f.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(f.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(f.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(f.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new U({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Rt.generateUrl("/apps/contacts"),canInstallApp:Rt.isUserAdmin(),contactsAppMgmtURL:Rt.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),M=function(t){this.initialize(t)};M.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=t.el,this._$trigger=t.trigger,this._view=new R({el:this.$el}),this._view.on("search",(function(t){this._loadContacts(t)}),this),Rt.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(t){return t?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(t){var e=Rt.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),f.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new I(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),console.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var z=M,B=document.getElementsByTagName("head")[0].getAttribute("data-user"),D=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Z=void 0!==B&&B;function q(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Y(t,e,n){return e&&q(t.prototype,e),n&&q(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var H={Search:Y((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},K=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key};function V(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}function G(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var r=t.apply(e,n);function a(t){V(r,o,i,a,s,"next",t)}function s(t){V(r,o,i,a,s,"throw",t)}a(void 0)}))}}function J(t){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(t)}var W,Q,X,tt,et={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",et.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",et.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",et.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,i){return this.message(t,e,"none",n,o,void 0===i||i)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",et.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,i,r,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+et.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),p=l()("<input/>");p.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",r);var h=l()("<label/>").attr("for",c+"-input").text(r+": ");d.append(h),d.append(p),void 0===i&&(i=!1),l()("body").append(d),void 0!==o&&(o=f.ZP.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,p.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,p.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:i,buttons:m,close:function(){void 0!==o&&o(!1,p.val())}}),p.focus(),et.dialogsCounter++}))},filepicker:function(e,n,o,i,r,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=H.Sharing&&H.Sharing.PublicApp&&H.Sharing.PublicApp.fileList?H.Sharing.PublicApp.fileList.filesClient:Rt.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(p){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==i&&(i=[]),"string"==typeof i&&(i=[i]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",i).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===r&&(r=!1),void 0===o&&(o=!1),l()("body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){K(t)&&u._onGridviewChange()})),u._getGridSettings();var h=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),h.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),h.click()}))})),h.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Rt.registerMenu(h,u.$filePicker.find(".menu"),(function(){g.tooltip("hide"),g.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=g.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),g.selectRange(0,e)}));var m=u.$filePicker.find(".filenameform"),g=m.find("input[type='text']"),v=m.find("input[type='submit']");g.on("keydown",(function(t){K(t)&&(t.stopImmediatePropagation(),t.preventDefault(),m.submit())})),v.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.submit()}));m.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=g.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Rt.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){g.attr("title",t),g.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),g.tooltip("_fixTitle"),g.tooltip("show"),g.addClass("error")}return!1}()){var n=g.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Rt.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),g.val(f)}})),g.on("input",(function(t){g.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){K(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){K(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(K(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e)}})),u._fillFilePicker(s)}));var y=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var i=u.$filelist.find("tr.filepicker_element_selected").data("entryname");i&&(e+="/"+i)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];a===et.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){y(et.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===et.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){w.push({text:t.text,click:function(){y(t.type)},defaultButton:t.defaultButton})})):(a!==et.FILEPICKER_TYPE_COPY&&a!==et.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){y(et.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==et.FILEPICKER_TYPE_MOVE&&a!==et.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){y(et.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:r,buttons:w,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var b=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?b.prop("disabled",!1):b.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,i,r,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+et.dialogsCounter+"-content",d="#"+u,f=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(f);var p=[];switch(i){case et.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case et.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==r&&r()},defaultButton:!0};break;default:"object"===J(i)&&i.type===et.YES_NO_BUTTONS&&(p=[{text:i.cancel||t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:i.confirm||t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:i.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){r&&r(!1)},modal:a,buttons:p}),et.dialogsCounter++})).fail((function(o,i){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:i}))}))},_fileexistsshown:!1,fileexists:function(e,o,i,r){var a=this,s=new(l().Deferred),c=function(t,e,n,o,i){o=Math.round(o),i=Math.round(i);for(var r=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,i),s=r.data,l=a.data,c=e/o,u=n/i,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<i;p++)for(var h=0;h<o;h++){for(var m=4*(h+p*o),g=0,v=0,y=0,w=0,b=0,_=0,P=0,C=(p+.5)*u,A=Math.floor(p*u);A<(p+1)*u;A++)for(var k=Math.abs(C-(A+.5))/f,x=(h+.5)*c,O=k*k,T=Math.floor(h*c);T<(h+1)*c;T++){var E=Math.abs(x-(T+.5))/d,j=Math.sqrt(O+E*E);j>=-1&&j<=1&&(g=2*j*j*j-3*j*j+1)>0&&(P+=g*s[3+(E=4*(T+A*e))],y+=g,s[E+3]<255&&(g=g*s[E+3]/250),w+=g*s[E],b+=g*s[E+1],_+=g*s[E+2],v+=g)}l[m]=w/v,l[m+1]=b/v,l[m+2]=_/v,l[m+3]=P/y}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,i)),t.width=o,t.height=i,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,i){var r=n.find(".template").clone().removeClass("template").addClass("conflict"),a=r.find(".original"),s=r.find(".replacement");r.data("data",e),r.find(".filename").text(o.name),a.find(".size").text(Rt.Util.humanFileSize(o.size)),a.find(".mtime").text(Rt.Util.formatDate(o.mtime)),i.size&&i.lastModified&&(s.find(".size").text(Rt.Util.humanFileSize(i.size)),s.find(".mtime").text(Rt.Util.formatDate(i.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},f=Files.generatePreviewUrl(d);f=f.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+f+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),i=new Image;i.src=o,i.onload=function(){var t,n,o,r,a,s,l,u=(t=i,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),r=Math.min(s,l),a.width=r,a.height=r,a.getContext("2d").drawImage(t,n,o,r,r,0,0,r,r),c(a,r,r,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Rt.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(r),i.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),i.size&&i.size>o.size?s.find(".size").css("font-weight","bold"):i.size&&i.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",f="#"+d;if(this._fileexistsshown){var p=l()(f+" .conflicts");u(p,o,i);var h=l()(f+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(f).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(p),o&&i){var h=p.find(".conflicts");u(h,o,i)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==r.onCancel&&r.onCancel(e),l()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==r.onContinue&&r.onContinue(l()(f+" .conflict")),l()(f).ocdialog("close")}}];l()(f).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(f).css("height","auto");var g=p.closest(".oc-dialog").find("button.continue");function v(){var t=p.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(f).find(".allnewfiles").on("click",(function(){l()(f).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".allexistingfiles").on("click",(function(){l()(f).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(f).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(f).on("click",".replacement,.allnewfiles",(function(){var e=l()(f).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allnewfiles").prop("checked",!0),l()(f).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text("")),v()})),l()(f).on("click",".original,.allexistingfiles",(function(){var e=l()(f).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allexistingfiles").prop("checked",!0),l()(f).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;l().get(Rt.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),l()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Rt.currentUser&&l().post(Rt.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),l()(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Rt.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Rt.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Rt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_getFileList:function(t,e){return"string"==typeof e&&(e=[e]),l().getJSON(Rt.filePath("files","ajax","list.php"),{dir:t,mimetypes:JSON.stringify(e)})},_fillFilePicker:(W=G(regeneratorRuntime.mark((function e(n){var o,i,r,a,s,c,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=this,this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",n),i=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter"),"string"==typeof i&&(i=[i]),o.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===o.filepicker.sortOrder?o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),a=function(){var t=G(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.filepicker.filesClient.getFolderContents(e).then((function(t,e){return e})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.prev=12,e.next=15,a(n);case 15:s=e.sent,e.next=25;break;case 18:return e.prev=18,e.t0=e.catch(12),console.error("Requested path does not exists, falling back to root"),e.next=23,a("/");case 23:s=e.sent,this.$filePicker.data("path","/");case 25:o.filelist=s,i&&i.length>0&&-1===i.indexOf("*")&&(s=s.filter((function(t){return"dir"===t.type||-1!==i.indexOf(t.mimetype)}))),r&&(s=s.filter(r)),null===(c=document.getElementById("showHiddenFiles"))||"1"===c.value||(s=s.filter((function(t){return!t.name.startsWith(".")}))),d=(u={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Rt.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}})[o.filepicker.sortField]||u.name,s=s.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(Rt.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===o.filepicker.sortOrder?d(t,e):-d(t,e)})),o._fillSlug(),0===s.length?(o.$filePicker.find(".emptycontent").show(),o.$fileListHeader.hide()):(o.$filePicker.find(".emptycontent").hide(),o.$fileListHeader.show()),o.$filelist.empty(),l().each(s,(function(e,i){var r,a;if(i.isEncrypted&&"httpd/unix-directory"===i.mimetype?i.icon=Rt.MimeType.getIconUrl("dir-encrypted"):i.icon=Rt.MimeType.getIconUrl(i.mimetype),void 0!==i.size&&i.size>=0?(r=Rt.Util.humanFileSize(parseInt(i.size,10),!0),a=Math.round(160-Math.pow(i.size/1048576,2))):(r=t("files","Pending"),a=80),i.name.length>=10)var s=Math.min(Math.floor(i.name.length/2),10),c=i.name.substr(0,i.name.length-s),u=i.name.substr(i.name.length-s);else c=i.name,u="";var d=o.$listTmpl.octemplate({type:i.type,dir:n,filename:i.name,filename1:c,filename2:u,date:Rt.Util.relativeModifiedDate(i.mtime),size:r,sizeColor:a,icon:i.icon});if("file"===i.type){var f={file:n+"/"+i.name,x:100,y:100},p=new Image,h=Rt.generateUrl("/core/preview.png?")+l().param(f);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}o.$filelist.append(d)})),o.$filelistContainer.removeClass("icon-loading");case 39:case"end":return e.stop()}}),e,this,[[12,18]])}))),function(t){return W.apply(this,arguments)}),_fillSlug:function(){var t=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var e=this;e.$dirTree.append(t);var n=this.$filePicker.data("path"),o=l()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(n){var i=n.split("/");l().each(i,(function(t,n){if(""===(n=i.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:i.join("/")+"/"+n,name:n}))}))}o.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o);var i=t.target.closest(".oc-dialog"),r=l()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?r.prop("disabled",!1):r.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname")),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),r=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:r.text(o);break;case this.FILEPICKER_TYPE_MOVE:r.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:r.eq(0).text(o),r.eq(1).text(i)}}},nt=et,ot=(Q=document,X=a.j8,tt=Q.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return tt},setToken:function(t){X("csrf-token-update",{token:tt=t})}}).getToken,it=function t(e,n){var o,i,r="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)r+=o+"="+encodeURIComponent(n[o])+"&";if(r+="requesttoken="+encodeURIComponent(ot()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),i="&",-1===e.indexOf("?")&&(i="?"),this.iframe.attr("src",e+i+"fallback=true&fallback_id="+t.iframeCount+"&"+r),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else i="&",-1===e.indexOf("?")&&(i="?"),this.source=new EventSource(e+i+r),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};it.fallBackSources=[],it.iframeCount=0,it.fallBackCallBack=function(t,e,n){it.fallBackSources[t].fallBackCallBack(e,n)},it.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var rt=it,at=i(42515),st=null,lt=null,ct=function(t){if(st){var e=st;st.trigger(new(l().Event)("beforeHide")),st.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),lt&&lt.attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),st=null,lt=null},ut=!!window._oc_isadmin,dt=i(27856),ft=i.n(dt),pt=i(86834),ht=i.n(pt),mt=i(46488),gt=i.n(mt),vt=i(95573),yt=i.n(vt);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var wt=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},bt=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function _t(t){return _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_t(t)}var Pt={load:function(t,e){if(wt(t)||"en"===Rt.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var i=this,r=(0,c.generateFilePath)(t,"l10n",Rt.getLocale()+".json");return l().get(r).then((function(e){e.translations&&i.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,i;n=t,o=e,i=this._getPlural,wt(n)?function(t,e,n){window._oc_l10n_registry_translations[t]=Object.assign(window._oc_l10n_registry_translations[t],e),window._oc_l10n_registry_plural_functions[t]=n}(n,o,i):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,i)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,i){var r=i||{};f.ZP.defaults(r,{escape:!0,sanitize:!0});var a=r.sanitize?ft().sanitize:gt(),s=r.escape?yt():gt(),l=e,c=bt(t).translations[e];return void 0!==c&&(l=c),"object"===_t(n)||void 0!==o?a(function(t,e,n){return t.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return a("string"==typeof o||"number"==typeof o?s(o):t)}))}(l,n,o)):a(l)},translatePlural:function(t,e,n,o,i,r){var a="_"+e+"_::_"+n+"_",s=bt(t),c=s.translations[a];if(void 0!==c){var u=c;if(l().isArray(u)){var d=s.pluralFunction(o);return this.translate(t,u[d],i,o,r)}}return 1===o?this.translate(t,e,i,o,r):this.translate(t,n,i,o,r)},_getPlural:function(t){var e=Rt.getLanguage();if("pt-BR"===e&&(e="xbr"),void 0===e||""===e)return 1===t?0:1;switch(e.length>3&&(e=e.substring(0,e.lastIndexOf("-"))),e){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===t?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===t||1===t?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return 1===t?0:t>=2&&t<=4?1:2;case"ga":return 1===t?0:2===t?1:2;case"lt":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":return t%10==1?0:1;case"mt":return 1===t?0:0===t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":return 0===t?0:t%10==1&&t%100!=11?1:2;case"pl":return 1===t?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":return 1===t?0:2===t?1:8===t||11===t?2:3;case"ro":return 1===t?0:0===t||t%100>0&&t%100<20?1:2;case"ar":return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5}}},Ct=Pt;ht().registerHelper("t",(function(t,e){return Pt.translate(t,e)}));var At=i(9944),kt={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},xt=i(30381),Ot=i.n(xt),Tt={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",f.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Ot().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Ot().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},r=f.ZP.extend(i,n),a=this;this.requiresPasswordConfirmation()&&Rt.dialogs.prompt(r.text,r.title,(function(t,e){t&&""!==e?a._confirmPassword(e,r):f.ZP.isFunction(o)&&o()}),!0,r.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==r.error){var e=l()("<p></p>").addClass("msg warning").text(r.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(r.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,f.ZP.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Rt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Et=window._theme||{},jt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Rt.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var i,r=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=r.length;a<s;a++)(i=r[a]).style.fill=i.style.fill,i.style.stroke=i.style.stroke,i.removeAttribute("filter"),i.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Rt.parseQueryString(this._decodeQuery(e))),(t=f.ZP.extend(t||{},Rt.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,f.ZP.isString(e)?e=Rt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function St(t){for(var e,n=[],o=0,i=-1,r=0;o<t.length;){e=t.charAt(o);var a=!r&&"."===e||e>="0"&&e<="9";a!==r&&(n[++i]="",r=a),n[i]+=e,o++}return n}var Lt={History:jt,humanFileSize:i(3378).s,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Ot()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Ot()().diff(Ot()(e));return n>=0&&n<45e3?t("core","seconds ago"):Ot()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=St(t),i=St(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){var r=Number(o[n]),a=Number(i[n]);return r==o[n]&&a==i[n]?r-a:o[n].localeCompare(i[n],Rt.getLanguage())}return o.length-i.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var i=n[o].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},Nt=window._oc_debug,$t=window._oc_webroot;if(void 0===$t){var It=($t=location.pathname).indexOf("/index.php/");$t=-1!==It?$t.substr(0,It):$t.substr(0,$t.lastIndexOf("/"))}var Ut,Ft=$t,Rt={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(N.blacklist_files_regex)},addScript:function(t,e,n){var o;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var i=(0,c.generateFilePath)(t,"js",e+".js");return u[i]?n&&n():(o=l().Deferred(),l().getScript(i,(function(){return o.resolve()})),u[i]=o),u[i]},addStyle:function(t,e){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===d.indexOf(n)&&(d.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:g,AppConfig:w,appConfig:y,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=l()("#appsettings_popup");if(0===i.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(i=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{var r=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){i.html(e).ready((function(){if(i.prepend('<span class="arrow '+r+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:b,Backbone:S,ContactsMenu:z,config:N,currentUser:Z,dialogs:nt,EventSource:rt,getCurrentUser:function(){return{uid:Z,displayName:D}},isUserAdmin:function(){return ut},L10N:Ct,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Rt._reloadCalled)&&(f.ZP.contains([302,303,307,401],t.status)&&Rt.currentUser?setTimeout((function(){if(!Rt._userIsNavigatingAway&&!Rt._reloadCalled){var t=0,e=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Rt.reload()),t++}),1e3);Rt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Rt._userIsNavigatingAway||Rt._reloadCalled||Rt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,at.getCapabilities)()},hideMenus:ct,registerMenu:function(t,e,n,o){e.addClass("menu");var i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(st)?ct():(st&&ct(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),st=e,lt=t))}))},showMenu:function(t,e,n){e.is(st)||(ct(),st=e,lt=t,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),f.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(st)&&ct(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:L.EZ,encodePath:L.Ec,dirname:L.XX,isSamePath:L.Mg,joinPaths:L.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:At.getCanonicalLocale,getLocale:function(){var t;return null!==(t=l()("html").data("locale"))&&void 0!==t?t:"en"},getLanguage:function(){return l()("html").prop("lang")},addTranslations:Ct.load,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,i={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var r=t.replace(/\+/g,"%20").split("&"),a=0;a<r.length;a++){var s=r[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(i[o]=n.length>1?decodeURIComponent(n[1]):null)}return i},msg:kt,Notification:h,PasswordConfirmation:Tt,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].attach&&o[i].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].detach&&o[i].detach(e,n)}},theme:Et,Util:Lt,debug:Nt,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Ut=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Ut=Ut[e[o]]))return!1;return Ut[n]}),set:function(t){return function(e,n){for(var o=e.split("."),i=o.pop(),r=0;r<o.length;r++)t[o[r]]||(t[o[r]]={}),t=t[o[r]];return t[i]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:ot(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Ft};(0,a.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var Mt=i(16453),zt=i(17563),Bt=i(55586),Dt=i.n(Bt),Zt=i(22660),qt=i.n(Zt),Yt=i(10204),Ht=i.n(Yt),Kt=i(57290),Vt=i.n(Kt),Gt=i(10861),Jt=i.n(Gt),Wt={name:"LoginButton",components:{ArrowRight:i(45947).default,NcButton:Jt()},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Qt=i(93379),Xt=i.n(Qt),te=i(7795),ee=i.n(te),ne=i(90569),oe=i.n(ne),ie=i(3565),re=i.n(ie),ae=i(19216),se=i.n(ae),le=i(44589),ce=i.n(le),ue=i(10786),de={};de.styleTagTransform=ce(),de.setAttributes=re(),de.insert=oe().bind(null,"head"),de.domAPI=ee(),de.insertStyleElement=se(),Xt()(ue.Z,de),ue.Z&&ue.Z.locals&&ue.Z.locals;var fe=i(51900),pe=(0,fe.Z)(Wt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?n("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):n("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"756414a8",null).exports,he={name:"LoginForm",components:{LoginButton:pe,NcPasswordField:qt(),NcTextField:Ht(),NcNoteCard:Vt()},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){return{loading:!1,timezone:Dt().determine().name(),timezoneOffset:-(new Date).getTimezoneOffset()/60,user:"",password:""}},computed:{isError:function(){return this.invalidPassword||this.userDisabled||this.throttleDelay&&this.throttleDelay>5e3},errorLabel:function(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):this.throttleDelay&&this.throttleDelay>5e3?t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")}},mounted:function(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},me=i(85660),ge={};ge.styleTagTransform=ce(),ge.setAttributes=re(),ge.insert=oe().bind(null,"head"),ge.domAPI=ee(),ge.insertStyleElement=se(),Xt()(me.Z,ge),me.Z&&me.Z.locals&&me.Z.locals;var ve=(0,fe.Z)(he,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[n("fieldset",{staticClass:"login-form__fieldset"},[t.apacheAuthFailed?n("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?n("NcNoteCard",t._l(t.messages,(function(e,o){return n("div",{key:o},[t._v("\n\t\t\t\t"+t._s(e)),n("br")])})),0):t._e(),t._v(" "),t.internalException?n("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("div",{staticClass:"hidden",attrs:{id:"message"}},[n("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),n("span",{attrs:{id:"messageText"}}),t._v(" "),n("div",{staticStyle:{clear:"both"}})]),t._v(" "),n("h2",{staticClass:"login-form__headline"},[t._v(t._s(t.t("core","Log in to {productName}",{productName:t.OC.theme.name})))]),t._v(" "),n("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.t("core","Account name or email"),"label-visible":!0,name:"user",value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),n("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password","label-visible":!0,value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),n("LoginButton",{attrs:{loading:t.loading}}),t._v(" "),t.redirectUrl?n("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?n("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"44def1dd",null).exports,ye=i(4820),we=i(2645),be=i(98283);function _e(t){return _e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_e(t)}function Pe(t){return function(t){if(Array.isArray(t))return Ce(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ce(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ce(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function Ae(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function ke(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Ae(Object(n),!0).forEach((function(e){xe(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function xe(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Oe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Te(t,e){if(e&&("object"===_e(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Ee(t){var e="function"==typeof Map?new Map:void 0;return Ee=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return je(t,arguments,Ne(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Le(o,t)},Ee(t)}function je(t,e,n){return je=Se()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var i=new(Function.bind.apply(t,o));return n&&Le(i,n.prototype),i},je.apply(null,arguments)}function Se(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Le(t,e){return Le=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},Le(t,e)}function Ne(t){return Ne=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},Ne(t)}var $e=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Le(t,e)}(r,t);var e,n,o,i=(e=r,n=Se(),function(){var t,o=Ne(e);if(n){var i=Ne(this).constructor;t=Reflect.construct(o,arguments,i)}else t=o.apply(this,arguments);return Te(this,t)});function r(){return Oe(this,r),i.apply(this,arguments)}return o=r,Object.defineProperty(o,"prototype",{writable:!1}),o}(Ee(Error)),Ie={name:"PasswordLessLoginForm",components:{LoginButton:pe,InformationIcon:we.Z,LockOpenIcon:be.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;console.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return console.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof $e?t.validCredentials=!1:console.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),ye.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(console.debug("Obtained PublicKeyCredentialRequestOptions"),console.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw console.debug("No credentials found."),new $e;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return ke(ke({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),console.debug("Converted PublicKeyCredentialRequestOptions"),console.debug(t),t})).catch((function(t){throw console.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,Pe(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return console.debug(t),console.debug(new Uint8Array(t.rawId)),console.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,Pe(n))):null}};var n})).then((function(t){return console.debug(t),t})).catch((function(t){console.debug("GOT AN ERROR!"),console.debug(t)}))},completeAuthentication:function(t){console.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),ye.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){console.debug("Logged in redirecting"),window.location.href=o})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},Ue=i(2340),Fe={};Fe.styleTagTransform=ce(),Fe.setAttributes=re(),Fe.insert=oe().bind(null,"head"),Fe.domAPI=ee(),Fe.insertStyleElement=se(),Xt()(Ue.Z,Fe),Ue.Z&&Ue.Z.locals&&Ue.Z.locals;var Re=(0,fe.Z)(Ie,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?n("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",{staticClass:"grouptop groupbottom"},[n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():n("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?n("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():n("div",{staticClass:"body-login-container update"},[n("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):n("div",{staticClass:"body-login-container update"},[n("InformationIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"adf4afc4",null),Me=Re.exports,ze={name:"ResetPassword",components:{LoginButton:pe,NcNoteCard:Vt(),NcTextField:Ht()},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return ye.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){console.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},Be=i(31952),De={};De.styleTagTransform=ce(),De.setAttributes=re(),De.insert=oe().bind(null,"head"),De.domAPI=ee(),De.insertStyleElement=se(),Xt()(Be.Z,De),Be.Z&&Be.Z.locals&&Be.Z.locals;var Ze=(0,fe.Z)(ze,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",{staticClass:"login-form__fieldset"},[n("NcTextField",{attrs:{id:"user",value:t.user,name:"user",autocapitalize:"off",label:t.t("core","Account name or email"),"label-visible":!0,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),n("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?n("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","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."))+"\n\t\t\t"),n("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?n("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?n("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"41e59406",null),qe=Ze.exports;function Ye(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}var He={name:"UpdatePassword",components:{LoginButton:pe},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,ye.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(i=o.data)||"success"!==i.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!i||!i.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!i||!i.msg){e.next=22;break}throw new Error(i.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,i){var r=e.apply(t,n);function a(t){Ye(r,o,i,a,s,"next",t)}function s(t){Ye(r,o,i,a,s,"throw",t)}a(void 0)}))})()}}},Ke=He,Ve=i(52033),Ge={};Ge.styleTagTransform=ce(),Ge.setAttributes=re(),Ge.insert=oe().bind(null,"head"),Ge.domAPI=ee(),Ge.insertStyleElement=se(),Xt()(Ve.Z,Ge),Ve.Z&&Ve.Z.locals&&Ve.Z.locals;var Je=(0,fe.Z)(Ke,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?n("div",{staticClass:"update"},[n("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,i=!!o.checked;if(Array.isArray(n)){var r=t._i(n,null);o.checked?r<0&&(t.proceed=n.concat([null])):r>-1&&(t.proceed=n.slice(0,r).concat(n.slice(r+1)))}else t.proceed=i}}}),t._v(" "),n("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),n("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?n("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null),We=Je.exports,Qe=zt.parse(location.search);if("1"===Qe.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),console.debug("Browser storage cleared")}catch(t){console.error("Could not clear browser storage",t)}var Xe={name:"Login",components:{LoginForm:ve,PasswordLessLoginForm:Me,ResetPassword:qe,UpdatePassword:We,NcButton:Jt(),NcNoteCard:Vt()},data:function(){return{loading:!1,user:(0,Mt.loadState)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,Mt.loadState)("core","loginErrors",[]),messages:(0,Mt.loadState)("core","loginMessages",[]),redirectUrl:(0,Mt.loadState)("core","loginRedirectUrl",!1),throttleDelay:(0,Mt.loadState)("core","loginThrottleDelay",0),canResetPassword:(0,Mt.loadState)("core","loginCanResetPassword",!1),resetPasswordLink:(0,Mt.loadState)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,Mt.loadState)("core","loginAutocomplete",!0),resetPasswordTarget:(0,Mt.loadState)("core","resetPasswordTarget",""),resetPasswordUser:(0,Mt.loadState)("core","resetPasswordUser",""),directLogin:"1"===Qe.direct,hasPasswordless:(0,Mt.loadState)("core","webauthn-available",!1),countAlternativeLogins:(0,Mt.loadState)("core","countAlternativeLogins",!1),alternativeLogins:(0,Mt.loadState)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,Mt.loadState)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0},goTo:function(t){window.location.href=t}}},tn=i(58820),en={};en.styleTagTransform=ce(),en.setAttributes=re(),en.insert=oe().bind(null,"head"),en.domAPI=ee(),en.insertStyleElement=se(),Xt()(tn.Z,en),tn.Z&&tn.Z.locals&&tn.Z.locals;var nn=(0,fe.Z)(Xe,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?n("div",{key:"reset",staticClass:"login-additional"},[n("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),n("a",{staticClass:"login-box__link",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?n("div",{key:"reset",staticClass:"login-additional"},[n("div",{staticClass:"lost-password-container"},[t.resetPassword?n("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?n("div",[n("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():n("div",[n("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?n("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?n("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?n("div",{staticClass:"alternative-logins"},[t.hasPasswordless?n("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])],1):n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[n("NcNoteCard",{attrs:{type:"warning",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])],1)],1),t._v(" "),n("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(e,o){return n("NcButton",{key:o,class:[e.class],attrs:{type:"secondary",wide:!0,role:"link",href:e.href},on:{click:function(n){return t.goTo(e.href)}}},[t._v("\n\t\t\t"+t._s(e.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,on={data:function(){return{OC:Rt}},methods:{t:Ct.translate.bind(Ct),n:Ct.translatePlural.bind(Ct)}};r.ZP.mixin(on),(new(r.ZP.extend(nn))).$mount("#login")},10786:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".button-vue[data-v-756414a8]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AAkEA,6BACC,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.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]),e.Z=a},85660:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-44def1dd]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-44def1dd]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-44def1dd]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AAiOA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",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.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},2340:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,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.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},31952:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-41e59406]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-41e59406]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-41e59406]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AAqIA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",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.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},58820:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AAkMA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA",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\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},52033:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 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<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?r:""},2:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?r:""},3:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.program(11,i,0),data:i,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?r:""},8:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(9,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?r:""},9:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,i){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(14,i,0),inverse:t.noop,data:i,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"topAction"):r,{name:"if",hash:{},fn:t.program(16,i,0),inverse:t.noop,data:i,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?r:"")},14:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"topAction"):r,{name:"if",hash:{},fn:t.program(19,i,0),inverse:t.program(21,i,0),data:i,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?r:""},19:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n \t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t</a>\n'},21:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n</a>\n'},25:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(r=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"actions"):r,{name:"each",hash:{},fn:t.program(26,i,0),inverse:t.noop,data:i,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?r:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(r=null!=(r=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?r:s)===l?r.call(a,{name:"hyperlink",hash:{},data:i,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):r)+'">\n\t\t\t\t\t<img src="'+c(typeof(r=null!=(r=u(n,"icon")||(null!=e?u(e,"icon"):e))?r:s)===l?r.call(a,{name:"icon",hash:{},data:i,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):r)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(r=null!=(r=u(n,"title")||(null!=e?u(e,"title"):e))?r:s)===l?r.call(a,{name:"title",hash:{},data:i,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):r)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"avatar"):r,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(7,i,0),data:i,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(18,i,0),data:i,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasTwoActions"):r,{name:"if",hash:{},fn:t.program(23,i,0),inverse:t.noop,data:i,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasManyActions"):r,{name:"if",hash:{},fn:t.program(25,i,0),inverse:t.noop,data:i,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?r:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):r)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:i,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):r)+"</h2>\n</div>\n"},3:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?r:s)===l?r.call(a,{name:"contactsAppURL",hash:{},data:i,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?r:s)===l?r.call(a,{name:"showAllContactsText",hash:{},data:i,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):r)+"</a></div>\n"},5:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?r:""},6:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtURL",hash:{},data:i,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtText",hash:{},data:i,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):r)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"unless").call(a,null!=(r=null!=e?s(e,"contacts"):e)?s(r,"length"):r,{name:"unless",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?r:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(r=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?r:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):r)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):r)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):r)+'" value="'+c(typeof(r=null!=(r=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?r:s)===l?r.call(a,{name:"searchTerm",hash:{},data:i,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):r)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=r(t);return n(e)}function r(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}i.keys=function(){return Object.keys(o)},i.resolve=r,t.exports=i,i.id=46700}},i={};function r(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=o,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,i){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],i=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||a>=i)&&Object.keys(r.O).every((function(t){return r.O[t](n[l])}))?n.splice(l--,1):(s=!1,i<a&&(a=i));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r.j=4577,function(){r.b=document.baseURI||self.location.href;var t={4577:0};r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,i,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(l)var u=l(r)}for(e&&e(n);c<a.length;c++)i=a[c],r.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return r.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(61886)}));a=r.O(a)}();
-//# sourceMappingURL=core-login.js.map?v=9025660c44b7977b24ae \ No newline at end of file
+!function(){var e,o={26442:function(e,o,i){"use strict";var r=i(20144),a=i(74854),s=i(19755),l=i.n(s),c=i(79753),u={},d=[],f=i(18181),p=i(26932),h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){f.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:p.Rl;var n=(0,p.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:p.Rl;var n=(0,p.PV)(function(t){return t.toString().split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;").split("'").join("&#039;")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,p.PV)(t,{timeout:p.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||p.TN;var n=(0,p.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},m=f.ZP.throttle((function(){h.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),g={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function v(t,e,n){"post"!==t&&"delete"!==t||!Rt.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Rt.PasswordConfirmation.requirePasswordConfirmation(_.bind(v,this,t,e,n))}var y=window.oc_appconfig||{},w={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},v("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},v("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){v("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){v("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){v("delete","/"+t+"/"+e,void 0)}(t,e)}},b=void 0!==window._oc_appswebroots&&window._oc_appswebroots,P=i(72316),C=i.n(P),k=i(87240),A={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function x(t,e){if(f.ZP.isArray(t))return f.ZP.map(t,(function(t){return x(t,e)}));var n={href:t.href};return f.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var i=o;o in e&&(i=e[o]),n[i]=t.properties[o]}})),n.id||(n.id=O(n.href)),n}function O(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function T(t){return t>=200&&t<=299}function E(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var i=e[n],r=t[n];i||(console.warn('No matching DAV property for property "'+n),i=n),(f.ZP.isBoolean(r)||f.ZP.isNumber(r))&&(r=""+r),o[i]=r}return o}(n.changed,e.davProperties),o).then((function(t){T(t.status)?f.ZP.isFunction(e.success)&&e.success(n.toJSON()):f.ZP.isFunction(e.error)&&e.error(t)}))}var j=C().noConflict();Object.assign(j,{davCall:function(t,e){var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:f.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=f.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,f.ZP.values(e.davProperties)||[],e.depth,o).then((function(t){if(T(t.status)){if(f.ZP.isFunction(e.success)){var n=f.ZP.invert(e.davProperties),o=x(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else f.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?E(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(i){T(i.status)?E(t,e,n,o):f.ZP.isFunction(e.error)&&e.error(i)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(T(t.status)){if(f.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(o.id=O(i)),void e.success(o)}if(207===t.status){var r=f.ZP.invert(e.davProperties);e.success(x(t.body,r))}else e.success(t.body)}}else f.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var i={type:A[e]||e},r=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),o.url||(i.url=f.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(f.ZP.isFunction(a)?i.davProperties=a.call(n):i.davProperties=a),i.davProperties=f.ZP.extend(i.davProperties||{},o.davProperties),f.ZP.isUndefined(o.depth)&&(o.depth=r?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(f.ZP.extend(i,o),n);return n.trigger("request",n,l,o),l}}(j)});var S=j,L=i(65358),N=window._oc_config||{},$=P.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),I=P.Collection.extend({model:$}),U=P.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new F({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),F=P.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:i(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),R=P.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:i(95386),error:i(20421),menu:i(66115),list:i(34083)},_onSearch:f.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(f.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(f.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(f.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new U({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Rt.generateUrl("/apps/contacts"),canInstallApp:Rt.isUserAdmin(),contactsAppMgmtURL:Rt.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),M=function(t){this.initialize(t)};M.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=t.el,this._$trigger=t.trigger,this._view=new R({el:this.$el}),this._view.on("search",(function(t){this._loadContacts(t)}),this),Rt.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(t){return t?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(t){var e=Rt.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),f.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new I(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),console.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var z=M,B=document.getElementsByTagName("head")[0].getAttribute("data-user"),D=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Z=void 0!==B&&B;function q(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function H(t,e,n){return e&&q(t.prototype,e),n&&q(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var Y={Search:H((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},K=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key};function V(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}function G(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var r=t.apply(e,n);function a(t){V(r,o,i,a,s,"next",t)}function s(t){V(r,o,i,a,s,"throw",t)}a(void 0)}))}}function J(t){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(t)}var W,Q,X,tt,et={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",et.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",et.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",et.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,i){return this.message(t,e,"none",n,o,void 0===i||i)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",et.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,i,r,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+et.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),p=l()("<input/>");p.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",r);var h=l()("<label/>").attr("for",c+"-input").text(r+": ");d.append(h),d.append(p),void 0===i&&(i=!1),l()("body").append(d),void 0!==o&&(o=f.ZP.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,p.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,p.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:i,buttons:m,close:function(){void 0!==o&&o(!1,p.val())}}),p.focus(),et.dialogsCounter++}))},filepicker:function(e,n,o,i,r,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=Y.Sharing&&Y.Sharing.PublicApp&&Y.Sharing.PublicApp.fileList?Y.Sharing.PublicApp.fileList.filesClient:Rt.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(p){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==i&&(i=[]),"string"==typeof i&&(i=[i]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",i).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===r&&(r=!1),void 0===o&&(o=!1),l()("body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){K(t)&&u._onGridviewChange()})),u._getGridSettings();var h=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),h.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),h.click()}))})),h.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Rt.registerMenu(h,u.$filePicker.find(".menu"),(function(){g.tooltip("hide"),g.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=g.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),g.selectRange(0,e)}));var m=u.$filePicker.find(".filenameform"),g=m.find("input[type='text']"),v=m.find("input[type='submit']");g.on("keydown",(function(t){K(t)&&(t.stopImmediatePropagation(),t.preventDefault(),m.submit())})),v.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.submit()}));m.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=g.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Rt.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){g.attr("title",t),g.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),g.tooltip("_fixTitle"),g.tooltip("show"),g.addClass("error")}return!1}()){var n=g.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Rt.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),g.val(f)}})),g.on("input",(function(t){g.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){K(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){K(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(K(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e)}})),u._fillFilePicker(s)}));var y=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var i=u.$filelist.find("tr.filepicker_element_selected").data("entryname");i&&(e+="/"+i)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];a===et.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){y(et.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===et.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){w.push({text:t.text,click:function(){y(t.type)},defaultButton:t.defaultButton})})):(a!==et.FILEPICKER_TYPE_COPY&&a!==et.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){y(et.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==et.FILEPICKER_TYPE_MOVE&&a!==et.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){y(et.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:r,buttons:w,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var b=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?b.prop("disabled",!1):b.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,i,r,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+et.dialogsCounter+"-content",d="#"+u,f=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(f);var p=[];switch(i){case et.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case et.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==r&&r()},defaultButton:!0};break;default:"object"===J(i)&&i.type===et.YES_NO_BUTTONS&&(p=[{text:i.cancel||t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:i.confirm||t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:i.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){r&&r(!1)},modal:a,buttons:p}),et.dialogsCounter++})).fail((function(o,i){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:i}))}))},_fileexistsshown:!1,fileexists:function(e,o,i,r){var a=this,s=new(l().Deferred),c=function(t,e,n,o,i){o=Math.round(o),i=Math.round(i);for(var r=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,i),s=r.data,l=a.data,c=e/o,u=n/i,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<i;p++)for(var h=0;h<o;h++){for(var m=4*(h+p*o),g=0,v=0,y=0,w=0,b=0,_=0,P=0,C=(p+.5)*u,k=Math.floor(p*u);k<(p+1)*u;k++)for(var A=Math.abs(C-(k+.5))/f,x=(h+.5)*c,O=A*A,T=Math.floor(h*c);T<(h+1)*c;T++){var E=Math.abs(x-(T+.5))/d,j=Math.sqrt(O+E*E);j>=-1&&j<=1&&(g=2*j*j*j-3*j*j+1)>0&&(P+=g*s[3+(E=4*(T+k*e))],y+=g,s[E+3]<255&&(g=g*s[E+3]/250),w+=g*s[E],b+=g*s[E+1],_+=g*s[E+2],v+=g)}l[m]=w/v,l[m+1]=b/v,l[m+2]=_/v,l[m+3]=P/y}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,i)),t.width=o,t.height=i,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,i){var r=n.find(".template").clone().removeClass("template").addClass("conflict"),a=r.find(".original"),s=r.find(".replacement");r.data("data",e),r.find(".filename").text(o.name),a.find(".size").text(Rt.Util.humanFileSize(o.size)),a.find(".mtime").text(Rt.Util.formatDate(o.mtime)),i.size&&i.lastModified&&(s.find(".size").text(Rt.Util.humanFileSize(i.size)),s.find(".mtime").text(Rt.Util.formatDate(i.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},f=Files.generatePreviewUrl(d);f=f.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+f+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),i=new Image;i.src=o,i.onload=function(){var t,n,o,r,a,s,l,u=(t=i,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),r=Math.min(s,l),a.width=r,a.height=r,a.getContext("2d").drawImage(t,n,o,r,r,0,0,r,r),c(a,r,r,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Rt.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(r),i.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),i.size&&i.size>o.size?s.find(".size").css("font-weight","bold"):i.size&&i.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",f="#"+d;if(this._fileexistsshown){var p=l()(f+" .conflicts");u(p,o,i);var h=l()(f+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(f).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(p),o&&i){var h=p.find(".conflicts");u(h,o,i)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==r.onCancel&&r.onCancel(e),l()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==r.onContinue&&r.onContinue(l()(f+" .conflict")),l()(f).ocdialog("close")}}];l()(f).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(f).css("height","auto");var g=p.closest(".oc-dialog").find("button.continue");function v(){var t=p.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(f).find(".allnewfiles").on("click",(function(){l()(f).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".allexistingfiles").on("click",(function(){l()(f).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(f).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(f).on("click",".replacement,.allnewfiles",(function(){var e=l()(f).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allnewfiles").prop("checked",!0),l()(f).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text("")),v()})),l()(f).on("click",".original,.allexistingfiles",(function(){var e=l()(f).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allexistingfiles").prop("checked",!0),l()(f).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;l().get(Rt.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),l()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Rt.currentUser&&l().post(Rt.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),l()(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Rt.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Rt.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Rt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_getFileList:function(t,e){return"string"==typeof e&&(e=[e]),l().getJSON(Rt.filePath("files","ajax","list.php"),{dir:t,mimetypes:JSON.stringify(e)})},_fillFilePicker:(W=G(regeneratorRuntime.mark((function e(n){var o,i,r,a,s,c,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=this,this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",n),i=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter"),"string"==typeof i&&(i=[i]),o.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===o.filepicker.sortOrder?o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),a=function(){var t=G(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.filepicker.filesClient.getFolderContents(e).then((function(t,e){return e})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.prev=12,e.next=15,a(n);case 15:s=e.sent,e.next=25;break;case 18:return e.prev=18,e.t0=e.catch(12),console.error("Requested path does not exists, falling back to root"),e.next=23,a("/");case 23:s=e.sent,this.$filePicker.data("path","/");case 25:o.filelist=s,i&&i.length>0&&-1===i.indexOf("*")&&(s=s.filter((function(t){return"dir"===t.type||-1!==i.indexOf(t.mimetype)}))),r&&(s=s.filter(r)),null===(c=document.getElementById("showHiddenFiles"))||"1"===c.value||(s=s.filter((function(t){return!t.name.startsWith(".")}))),d=(u={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Rt.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}})[o.filepicker.sortField]||u.name,s=s.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(Rt.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===o.filepicker.sortOrder?d(t,e):-d(t,e)})),o._fillSlug(),0===s.length?(o.$filePicker.find(".emptycontent").show(),o.$fileListHeader.hide()):(o.$filePicker.find(".emptycontent").hide(),o.$fileListHeader.show()),o.$filelist.empty(),l().each(s,(function(e,i){var r,a;if(i.isEncrypted&&"httpd/unix-directory"===i.mimetype?i.icon=Rt.MimeType.getIconUrl("dir-encrypted"):i.icon=Rt.MimeType.getIconUrl(i.mimetype),void 0!==i.size&&i.size>=0?(r=Rt.Util.humanFileSize(parseInt(i.size,10),!0),a=Math.round(160-Math.pow(i.size/1048576,2))):(r=t("files","Pending"),a=80),i.name.length>=10)var s=Math.min(Math.floor(i.name.length/2),10),c=i.name.substr(0,i.name.length-s),u=i.name.substr(i.name.length-s);else c=i.name,u="";var d=o.$listTmpl.octemplate({type:i.type,dir:n,filename:i.name,filename1:c,filename2:u,date:Rt.Util.relativeModifiedDate(i.mtime),size:r,sizeColor:a,icon:i.icon});if("file"===i.type){var f={file:n+"/"+i.name,x:100,y:100},p=new Image,h=Rt.generateUrl("/core/preview.png?")+l().param(f);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}o.$filelist.append(d)})),o.$filelistContainer.removeClass("icon-loading");case 39:case"end":return e.stop()}}),e,this,[[12,18]])}))),function(t){return W.apply(this,arguments)}),_fillSlug:function(){var t=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var e=this;e.$dirTree.append(t);var n=this.$filePicker.data("path"),o=l()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(n){var i=n.split("/");l().each(i,(function(t,n){if(""===(n=i.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:i.join("/")+"/"+n,name:n}))}))}o.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o);var i=t.target.closest(".oc-dialog"),r=l()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?r.prop("disabled",!1):r.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname")),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),r=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:r.text(o);break;case this.FILEPICKER_TYPE_MOVE:r.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:r.eq(0).text(o),r.eq(1).text(i)}}},nt=et,ot=(Q=document,X=a.j8,tt=Q.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return tt},setToken:function(t){X("csrf-token-update",{token:tt=t})}}).getToken,it=function t(e,n){var o,i,r="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)r+=o+"="+encodeURIComponent(n[o])+"&";if(r+="requesttoken="+encodeURIComponent(ot()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),i="&",-1===e.indexOf("?")&&(i="?"),this.iframe.attr("src",e+i+"fallback=true&fallback_id="+t.iframeCount+"&"+r),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else i="&",-1===e.indexOf("?")&&(i="?"),this.source=new EventSource(e+i+r),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};it.fallBackSources=[],it.iframeCount=0,it.fallBackCallBack=function(t,e,n){it.fallBackSources[t].fallBackCallBack(e,n)},it.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var rt=it,at=i(42515),st=null,lt=null,ct=function(t){if(st){var e=st;st.trigger(new(l().Event)("beforeHide")),st.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),lt&&lt.attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),st=null,lt=null},ut=!!window._oc_isadmin,dt=i(27856),ft=i.n(dt),pt=i(86834),ht=i.n(pt),mt=i(46488),gt=i.n(mt),vt=i(95573),yt=i.n(vt);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var wt=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},bt=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function _t(t){return _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_t(t)}var Pt={load:function(t,e){if(wt(t)||"en"===Rt.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var i=this,r=(0,c.generateFilePath)(t,"l10n",Rt.getLocale()+".json");return l().get(r).then((function(e){e.translations&&i.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,i;n=t,o=e,i=this._getPlural,wt(n)?function(t,e,n){window._oc_l10n_registry_translations[t]=Object.assign(window._oc_l10n_registry_translations[t],e),window._oc_l10n_registry_plural_functions[t]=n}(n,o,i):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,i)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,i){var r=i||{};f.ZP.defaults(r,{escape:!0,sanitize:!0});var a=r.sanitize?ft().sanitize:gt(),s=r.escape?yt():gt(),l=e,c=bt(t).translations[e];return void 0!==c&&(l=c),"object"===_t(n)||void 0!==o?a(function(t,e,n){return t.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return a("string"==typeof o||"number"==typeof o?s(o):t)}))}(l,n,o)):a(l)},translatePlural:function(t,e,n,o,i,r){var a="_"+e+"_::_"+n+"_",s=bt(t),c=s.translations[a];if(void 0!==c){var u=c;if(l().isArray(u)){var d=s.pluralFunction(o);return this.translate(t,u[d],i,o,r)}}return 1===o?this.translate(t,e,i,o,r):this.translate(t,n,i,o,r)},_getPlural:function(t){var e=Rt.getLanguage();if("pt-BR"===e&&(e="xbr"),void 0===e||""===e)return 1===t?0:1;switch(e.length>3&&(e=e.substring(0,e.lastIndexOf("-"))),e){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===t?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===t||1===t?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return 1===t?0:t>=2&&t<=4?1:2;case"ga":return 1===t?0:2===t?1:2;case"lt":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":return t%10==1?0:1;case"mt":return 1===t?0:0===t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":return 0===t?0:t%10==1&&t%100!=11?1:2;case"pl":return 1===t?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":return 1===t?0:2===t?1:8===t||11===t?2:3;case"ro":return 1===t?0:0===t||t%100>0&&t%100<20?1:2;case"ar":return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5}}},Ct=Pt;ht().registerHelper("t",(function(t,e){return Pt.translate(t,e)}));var kt=i(9944),At={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},xt=i(30381),Ot=i.n(xt),Tt={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",f.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Ot().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Ot().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},r=f.ZP.extend(i,n),a=this;this.requiresPasswordConfirmation()&&Rt.dialogs.prompt(r.text,r.title,(function(t,e){t&&""!==e?a._confirmPassword(e,r):f.ZP.isFunction(o)&&o()}),!0,r.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==r.error){var e=l()("<p></p>").addClass("msg warning").text(r.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(r.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,f.ZP.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Rt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Et=window._theme||{},jt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Rt.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var i,r=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=r.length;a<s;a++)(i=r[a]).style.fill=i.style.fill,i.style.stroke=i.style.stroke,i.removeAttribute("filter"),i.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Rt.parseQueryString(this._decodeQuery(e))),(t=f.ZP.extend(t||{},Rt.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,f.ZP.isString(e)?e=Rt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function St(t){for(var e,n=[],o=0,i=-1,r=0;o<t.length;){e=t.charAt(o);var a=!r&&"."===e||e>="0"&&e<="9";a!==r&&(n[++i]="",r=a),n[i]+=e,o++}return n}var Lt={History:jt,humanFileSize:i(3378).s,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Ot()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Ot()().diff(Ot()(e));return n>=0&&n<45e3?t("core","seconds ago"):Ot()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=St(t),i=St(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){var r=Number(o[n]),a=Number(i[n]);return r==o[n]&&a==i[n]?r-a:o[n].localeCompare(i[n],Rt.getLanguage())}return o.length-i.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var i=n[o].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},Nt=window._oc_debug,$t=window._oc_webroot;if(void 0===$t){var It=($t=location.pathname).indexOf("/index.php/");$t=-1!==It?$t.substr(0,It):$t.substr(0,$t.lastIndexOf("/"))}var Ut,Ft=$t,Rt={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(N.blacklist_files_regex)},addScript:function(t,e,n){var o;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var i=(0,c.generateFilePath)(t,"js",e+".js");return u[i]?n&&n():(o=l().Deferred(),l().getScript(i,(function(){return o.resolve()})),u[i]=o),u[i]},addStyle:function(t,e){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===d.indexOf(n)&&(d.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:g,AppConfig:w,appConfig:y,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=l()("#appsettings_popup");if(0===i.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(i=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{var r=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){i.html(e).ready((function(){if(i.prepend('<span class="arrow '+r+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:b,Backbone:S,ContactsMenu:z,config:N,currentUser:Z,dialogs:nt,EventSource:rt,getCurrentUser:function(){return{uid:Z,displayName:D}},isUserAdmin:function(){return ut},L10N:Ct,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Rt._reloadCalled)&&(f.ZP.contains([302,303,307,401],t.status)&&Rt.currentUser?setTimeout((function(){if(!Rt._userIsNavigatingAway&&!Rt._reloadCalled){var t=0,e=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Rt.reload()),t++}),1e3);Rt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Rt._userIsNavigatingAway||Rt._reloadCalled||Rt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,at.getCapabilities)()},hideMenus:ct,registerMenu:function(t,e,n,o){e.addClass("menu");var i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(st)?ct():(st&&ct(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),st=e,lt=t))}))},showMenu:function(t,e,n){e.is(st)||(ct(),st=e,lt=t,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),f.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(st)&&ct(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:L.EZ,encodePath:L.Ec,dirname:L.XX,isSamePath:L.Mg,joinPaths:L.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:kt.getCanonicalLocale,getLocale:function(){var t;return null!==(t=l()("html").data("locale"))&&void 0!==t?t:"en"},getLanguage:function(){return l()("html").prop("lang")},addTranslations:Ct.load,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,i={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var r=t.replace(/\+/g,"%20").split("&"),a=0;a<r.length;a++){var s=r[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(i[o]=n.length>1?decodeURIComponent(n[1]):null)}return i},msg:At,Notification:h,PasswordConfirmation:Tt,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].attach&&o[i].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].detach&&o[i].detach(e,n)}},theme:Et,Util:Lt,debug:Nt,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Ut=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Ut=Ut[e[o]]))return!1;return Ut[n]}),set:function(t){return function(e,n){for(var o=e.split("."),i=o.pop(),r=0;r<o.length;r++)t[o[r]]||(t[o[r]]={}),t=t[o[r]];return t[i]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:ot(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Ft};(0,a.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var Mt=i(16453),zt=i(17563),Bt=i(55586),Dt=i.n(Bt),Zt=i(22660),qt=i.n(Zt),Ht=i(10204),Yt=i.n(Ht),Kt=i(57290),Vt=i.n(Kt),Gt=i(10861),Jt=i.n(Gt),Wt={name:"LoginButton",components:{ArrowRight:i(45947).default,NcButton:Jt()},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Qt=i(93379),Xt=i.n(Qt),te=i(7795),ee=i.n(te),ne=i(90569),oe=i.n(ne),ie=i(3565),re=i.n(ie),ae=i(19216),se=i.n(ae),le=i(44589),ce=i.n(le),ue=i(10786),de={};de.styleTagTransform=ce(),de.setAttributes=re(),de.insert=oe().bind(null,"head"),de.domAPI=ee(),de.insertStyleElement=se(),Xt()(ue.Z,de),ue.Z&&ue.Z.locals&&ue.Z.locals;var fe=i(51900),pe=(0,fe.Z)(Wt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?n("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):n("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"756414a8",null).exports,he={name:"LoginForm",components:{LoginButton:pe,NcPasswordField:qt(),NcTextField:Yt(),NcNoteCard:Vt()},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){return{loading:!1,timezone:Dt().determine().name(),timezoneOffset:-(new Date).getTimezoneOffset()/60,headline:t("core","Log in to {productName}",{productName:OC.theme.name}),user:"",password:""}},computed:{isError:function(){return this.invalidPassword||this.userDisabled||this.throttleDelay&&this.throttleDelay>5e3},errorLabel:function(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):this.throttleDelay&&this.throttleDelay>5e3?t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")}},mounted:function(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},me=i(8164),ge={};ge.styleTagTransform=ce(),ge.setAttributes=re(),ge.insert=oe().bind(null,"head"),ge.domAPI=ee(),ge.insertStyleElement=se(),Xt()(me.Z,ge),me.Z&&me.Z.locals&&me.Z.locals;var ve=(0,fe.Z)(he,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[n("fieldset",{staticClass:"login-form__fieldset"},[t.apacheAuthFailed?n("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?n("NcNoteCard",t._l(t.messages,(function(e,o){return n("div",{key:o},[t._v("\n\t\t\t\t"+t._s(e)),n("br")])})),0):t._e(),t._v(" "),t.internalException?n("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("div",{staticClass:"hidden",attrs:{id:"message"}},[n("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),n("span",{attrs:{id:"messageText"}}),t._v(" "),n("div",{staticStyle:{clear:"both"}})]),t._v(" "),n("h2",{staticClass:"login-form__headline",domProps:{innerHTML:t._s(t.headline)}}),t._v(" "),n("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.t("core","Account name or email"),"label-visible":!0,name:"user",value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),n("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password","label-visible":!0,value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),n("LoginButton",{attrs:{loading:t.loading}}),t._v(" "),t.redirectUrl?n("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?n("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"6e9b41c5",null).exports,ye=i(4820),we=i(2645),be=i(98283);function _e(t){return _e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_e(t)}function Pe(t){return function(t){if(Array.isArray(t))return Ce(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ce(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ce(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function ke(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function Ae(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ke(Object(n),!0).forEach((function(e){xe(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function xe(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Oe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Te(t,e){if(e&&("object"===_e(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Ee(t){var e="function"==typeof Map?new Map:void 0;return Ee=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return je(t,arguments,Ne(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Le(o,t)},Ee(t)}function je(t,e,n){return je=Se()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var i=new(Function.bind.apply(t,o));return n&&Le(i,n.prototype),i},je.apply(null,arguments)}function Se(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Le(t,e){return Le=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},Le(t,e)}function Ne(t){return Ne=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},Ne(t)}var $e=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Le(t,e)}(r,t);var e,n,o,i=(e=r,n=Se(),function(){var t,o=Ne(e);if(n){var i=Ne(this).constructor;t=Reflect.construct(o,arguments,i)}else t=o.apply(this,arguments);return Te(this,t)});function r(){return Oe(this,r),i.apply(this,arguments)}return o=r,Object.defineProperty(o,"prototype",{writable:!1}),o}(Ee(Error)),Ie={name:"PasswordLessLoginForm",components:{LoginButton:pe,InformationIcon:we.Z,LockOpenIcon:be.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;console.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return console.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof $e?t.validCredentials=!1:console.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),ye.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(console.debug("Obtained PublicKeyCredentialRequestOptions"),console.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw console.debug("No credentials found."),new $e;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return Ae(Ae({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),console.debug("Converted PublicKeyCredentialRequestOptions"),console.debug(t),t})).catch((function(t){throw console.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,Pe(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return console.debug(t),console.debug(new Uint8Array(t.rawId)),console.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,Pe(n))):null}};var n})).then((function(t){return console.debug(t),t})).catch((function(t){console.debug("GOT AN ERROR!"),console.debug(t)}))},completeAuthentication:function(t){console.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),ye.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){console.debug("Logged in redirecting"),window.location.href=o})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},Ue=i(2340),Fe={};Fe.styleTagTransform=ce(),Fe.setAttributes=re(),Fe.insert=oe().bind(null,"head"),Fe.domAPI=ee(),Fe.insertStyleElement=se(),Xt()(Ue.Z,Fe),Ue.Z&&Ue.Z.locals&&Ue.Z.locals;var Re=(0,fe.Z)(Ie,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?n("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",{staticClass:"grouptop groupbottom"},[n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():n("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?n("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():n("div",{staticClass:"body-login-container update"},[n("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):n("div",{staticClass:"body-login-container update"},[n("InformationIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"adf4afc4",null),Me=Re.exports,ze={name:"ResetPassword",components:{LoginButton:pe,NcNoteCard:Vt(),NcTextField:Yt()},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return ye.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){console.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},Be=i(31952),De={};De.styleTagTransform=ce(),De.setAttributes=re(),De.insert=oe().bind(null,"head"),De.domAPI=ee(),De.insertStyleElement=se(),Xt()(Be.Z,De),Be.Z&&Be.Z.locals&&Be.Z.locals;var Ze=(0,fe.Z)(ze,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",{staticClass:"login-form__fieldset"},[n("NcTextField",{attrs:{id:"user",value:t.user,name:"user",autocapitalize:"off",label:t.t("core","Account name or email"),"label-visible":!0,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),n("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?n("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","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."))+"\n\t\t\t"),n("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?n("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?n("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"41e59406",null),qe=Ze.exports;function He(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}var Ye={name:"UpdatePassword",components:{LoginButton:pe},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,ye.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(i=o.data)||"success"!==i.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!i||!i.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!i||!i.msg){e.next=22;break}throw new Error(i.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,i){var r=e.apply(t,n);function a(t){He(r,o,i,a,s,"next",t)}function s(t){He(r,o,i,a,s,"throw",t)}a(void 0)}))})()}}},Ke=Ye,Ve=i(52033),Ge={};Ge.styleTagTransform=ce(),Ge.setAttributes=re(),Ge.insert=oe().bind(null,"head"),Ge.domAPI=ee(),Ge.insertStyleElement=se(),Xt()(Ve.Z,Ge),Ve.Z&&Ve.Z.locals&&Ve.Z.locals;var Je=(0,fe.Z)(Ke,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?n("div",{staticClass:"update"},[n("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,i=!!o.checked;if(Array.isArray(n)){var r=t._i(n,null);o.checked?r<0&&(t.proceed=n.concat([null])):r>-1&&(t.proceed=n.slice(0,r).concat(n.slice(r+1)))}else t.proceed=i}}}),t._v(" "),n("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),n("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?n("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null),We=Je.exports,Qe=zt.parse(location.search);if("1"===Qe.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),console.debug("Browser storage cleared")}catch(t){console.error("Could not clear browser storage",t)}var Xe={name:"Login",components:{LoginForm:ve,PasswordLessLoginForm:Me,ResetPassword:qe,UpdatePassword:We,NcButton:Jt(),NcNoteCard:Vt()},data:function(){return{loading:!1,user:(0,Mt.loadState)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,Mt.loadState)("core","loginErrors",[]),messages:(0,Mt.loadState)("core","loginMessages",[]),redirectUrl:(0,Mt.loadState)("core","loginRedirectUrl",!1),throttleDelay:(0,Mt.loadState)("core","loginThrottleDelay",0),canResetPassword:(0,Mt.loadState)("core","loginCanResetPassword",!1),resetPasswordLink:(0,Mt.loadState)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,Mt.loadState)("core","loginAutocomplete",!0),resetPasswordTarget:(0,Mt.loadState)("core","resetPasswordTarget",""),resetPasswordUser:(0,Mt.loadState)("core","resetPasswordUser",""),directLogin:"1"===Qe.direct,hasPasswordless:(0,Mt.loadState)("core","webauthn-available",!1),countAlternativeLogins:(0,Mt.loadState)("core","countAlternativeLogins",!1),alternativeLogins:(0,Mt.loadState)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,Mt.loadState)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0},goTo:function(t){window.location.href=t}}},tn=i(58820),en={};en.styleTagTransform=ce(),en.setAttributes=re(),en.insert=oe().bind(null,"head"),en.domAPI=ee(),en.insertStyleElement=se(),Xt()(tn.Z,en),tn.Z&&tn.Z.locals&&tn.Z.locals;var nn=(0,fe.Z)(Xe,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?n("div",{key:"reset",staticClass:"login-additional"},[n("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),n("a",{staticClass:"login-box__link",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?n("div",{key:"reset",staticClass:"login-additional"},[n("div",{staticClass:"lost-password-container"},[t.resetPassword?n("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?n("div",[n("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():n("div",[n("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?n("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?n("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?n("div",{staticClass:"alternative-logins"},[t.hasPasswordless?n("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])],1):n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[n("NcNoteCard",{attrs:{type:"warning",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])],1)],1),t._v(" "),n("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(e,o){return n("NcButton",{key:o,class:[e.class],attrs:{type:"secondary",wide:!0,role:"link",href:e.href},on:{click:function(n){return t.goTo(e.href)}}},[t._v("\n\t\t\t"+t._s(e.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,on={data:function(){return{OC:Rt}},methods:{t:Ct.translate.bind(Ct),n:Ct.translatePlural.bind(Ct)}};r.ZP.mixin(on),(new(r.ZP.extend(nn))).$mount("#login")},10786:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".button-vue[data-v-756414a8]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AAkEA,6BACC,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.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]),e.Z=a},8164:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-6e9b41c5]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-6e9b41c5]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-6e9b41c5]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AAkOA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",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.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},2340:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,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.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},31952:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-41e59406]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-41e59406]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-41e59406]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AAqIA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",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.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},58820:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AAkMA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA",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\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},52033:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 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<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?r:""},2:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?r:""},3:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.program(11,i,0),data:i,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?r:""},8:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(9,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?r:""},9:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,i){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(14,i,0),inverse:t.noop,data:i,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"topAction"):r,{name:"if",hash:{},fn:t.program(16,i,0),inverse:t.noop,data:i,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?r:"")},14:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"topAction"):r,{name:"if",hash:{},fn:t.program(19,i,0),inverse:t.program(21,i,0),data:i,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?r:""},19:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n \t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t</a>\n'},21:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n</a>\n'},25:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(r=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"actions"):r,{name:"each",hash:{},fn:t.program(26,i,0),inverse:t.noop,data:i,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?r:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(r=null!=(r=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?r:s)===l?r.call(a,{name:"hyperlink",hash:{},data:i,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):r)+'">\n\t\t\t\t\t<img src="'+c(typeof(r=null!=(r=u(n,"icon")||(null!=e?u(e,"icon"):e))?r:s)===l?r.call(a,{name:"icon",hash:{},data:i,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):r)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(r=null!=(r=u(n,"title")||(null!=e?u(e,"title"):e))?r:s)===l?r.call(a,{name:"title",hash:{},data:i,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):r)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"avatar"):r,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(7,i,0),data:i,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(18,i,0),data:i,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasTwoActions"):r,{name:"if",hash:{},fn:t.program(23,i,0),inverse:t.noop,data:i,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasManyActions"):r,{name:"if",hash:{},fn:t.program(25,i,0),inverse:t.noop,data:i,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?r:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):r)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:i,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):r)+"</h2>\n</div>\n"},3:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?r:s)===l?r.call(a,{name:"contactsAppURL",hash:{},data:i,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?r:s)===l?r.call(a,{name:"showAllContactsText",hash:{},data:i,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):r)+"</a></div>\n"},5:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?r:""},6:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtURL",hash:{},data:i,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtText",hash:{},data:i,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):r)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"unless").call(a,null!=(r=null!=e?s(e,"contacts"):e)?s(r,"length"):r,{name:"unless",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?r:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(r=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?r:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):r)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):r)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):r)+'" value="'+c(typeof(r=null!=(r=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?r:s)===l?r.call(a,{name:"searchTerm",hash:{},data:i,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):r)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=r(t);return n(e)}function r(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}i.keys=function(){return Object.keys(o)},i.resolve=r,t.exports=i,i.id=46700}},i={};function r(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=o,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,i){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],i=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||a>=i)&&Object.keys(r.O).every((function(t){return r.O[t](n[l])}))?n.splice(l--,1):(s=!1,i<a&&(a=i));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r.j=4577,function(){r.b=document.baseURI||self.location.href;var t={4577:0};r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,i,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(l)var u=l(r)}for(e&&e(n);c<a.length;c++)i=a[c],r.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return r.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(26442)}));a=r.O(a)}();
+//# sourceMappingURL=core-login.js.map?v=bca2f03a2550993640fb \ No newline at end of file
diff --git a/dist/core-login.js.map b/dist/core-login.js.map
index 6215761ca56..953da5656e9 100644
--- a/dist/core-login.js.map
+++ b/dist/core-login.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-login.js?v=9025660c44b7977b24ae","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=template&id=7ed2300f&","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?23bf","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=template&id=756414a8&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?e249","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=template&id=44def1dd&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?a625","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?8e36","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=template&id=41e59406&scoped=true&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?5cc3","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?7b85","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=44def1dd&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=41e59406&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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/runtime/nonce","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 * @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\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.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 _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.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\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\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\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\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 *\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\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\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\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.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 rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\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 Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 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\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 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\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\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\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$('body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\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\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\t$('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t}\n\t\t\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\tif (!showHidden) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\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\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\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 *\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 _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\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 _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\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 $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\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\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\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\nconst base = window._oc_debug\n\nexport const debug = base\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\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{staticClass:\"login-box__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href},on:{\"click\":function($event){return _vm.goTo(alternativeLogin.href)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),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!./LoginButton.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!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\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!./LoginButton.vue?vue&type=style&index=0&id=756414a8&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!./LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=756414a8&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=756414a8&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 \"756414a8\",\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('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])}\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!./LoginForm.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!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\">{{ t('core', 'Log in to {productName}', { productName: OC.theme.name }) }}</h2>\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\trequired />\n\n\t\t\t<LoginButton :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport jstz from 'jstimezonedetect'\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: jstz.determine().name(),\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| (this.throttleDelay && this.throttleDelay > 5000)\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong username or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'User disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay && this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\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!./LoginForm.vue?vue&type=style&index=0&id=44def1dd&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!./LoginForm.vue?vue&type=style&index=0&id=44def1dd&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=44def1dd&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=44def1dd&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 \"44def1dd\",\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('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\"},[_vm._v(_vm._s(_vm.t('core', 'Log in to {productName}', { productName: _vm.OC.theme.name })))]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"name\":\"user\",\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"label-visible\":true,\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst location = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\twindow.location.href = location\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.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!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\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 Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&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 \"adf4afc4\",\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 ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()}\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!./ResetPassword.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!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"-->\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', '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.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\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!./ResetPassword.vue?vue&type=style&index=0&id=41e59406&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!./ResetPassword.vue?vue&type=style&index=0&id=41e59406&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=41e59406&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=41e59406&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 \"41e59406\",\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('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', '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.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.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!./UpdatePassword.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!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&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!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&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 \"4dc21d74\",\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('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<div class=\"guest-box login-box\">\n\t\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a href=\"#\" class=\"login-box__link\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"warning\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\"\n\t\t\t\t@click=\"goTo(alternativeLogin.href)\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t\tgoTo(href) {\n\t\t\twindow.location.href = href\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\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!./Login.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!./Login.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!./Login.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!./Login.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=7ed2300f&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.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","/**\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 L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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 *\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'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\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, \".button-vue[data-v-756414a8]{margin-top:.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AAkEA,6BACC,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.button-vue {\\n\\tmargin-top: .5rem;\\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, \".login-form[data-v-44def1dd]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-44def1dd]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-44def1dd]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AAiOA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"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.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\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, \".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,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.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\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, \".login-form[data-v-41e59406]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-41e59406]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-41e59406]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AAqIA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"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.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\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, \"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AAkMA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA\",\"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\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\twidth: 300px;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\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, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 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<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\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 = 46700;","// 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 = 4577;","__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\t4577: 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));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(61886); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","el","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","comparator","Comparators","fileInfo1","fileInfo2","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","valueLoading","ref","loginActionUrl","_e","messages","_l","class","loadingIcon","staticStyle","productName","shake","invalidPassword","user","autoCompleteAllowed","updateUsername","errorLabel","isError","domProps","redirectUrl","timezone","timezoneOffset","loginName","Axios","resp","isHttps","isLocalhost","hasPublicKeyCredential","directives","rawName","expression","composing","validCredentials","authenticate","Array","isArray","proceed","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","hideLoginForm","directLogin","passwordlessLogin","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","errors","throttleDelay","countAlternativeLogins","alternativeLogin","goTo","methods","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-login.js?v=bca2f03a2550993640fb","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=template&id=7ed2300f&","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?23bf","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=template&id=756414a8&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?b4ac","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=template&id=6e9b41c5&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?a625","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?8e36","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=template&id=41e59406&scoped=true&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?5cc3","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?7b85","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=6e9b41c5&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=41e59406&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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/runtime/nonce","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 * @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\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.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 _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.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\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\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\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\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 *\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\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\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\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.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 rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\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 Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 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\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 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\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\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\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$('body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\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\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\t$('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t}\n\t\t\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\tif (!showHidden) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\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\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\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 *\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 _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\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 _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\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 $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\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\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\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\nconst base = window._oc_debug\n\nexport const debug = base\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\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{staticClass:\"login-box__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href},on:{\"click\":function($event){return _vm.goTo(alternativeLogin.href)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),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!./LoginButton.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!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\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!./LoginButton.vue?vue&type=style&index=0&id=756414a8&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!./LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=756414a8&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=756414a8&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 \"756414a8\",\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('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])}\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!./LoginForm.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!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\" v-html=\"headline\" />\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\trequired />\n\n\t\t\t<LoginButton :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport jstz from 'jstimezonedetect'\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: jstz.determine().name(),\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\theadline: t('core', 'Log in to {productName}', { productName: OC.theme.name }),\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| (this.throttleDelay && this.throttleDelay > 5000)\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong username or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'User disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay && this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\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!./LoginForm.vue?vue&type=style&index=0&id=6e9b41c5&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!./LoginForm.vue?vue&type=style&index=0&id=6e9b41c5&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=6e9b41c5&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=6e9b41c5&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 \"6e9b41c5\",\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('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",domProps:{\"innerHTML\":_vm._s(_vm.headline)}}),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"name\":\"user\",\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"label-visible\":true,\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst location = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\twindow.location.href = location\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.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!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\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 Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&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 \"adf4afc4\",\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 ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()}\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!./ResetPassword.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!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"-->\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', '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.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\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!./ResetPassword.vue?vue&type=style&index=0&id=41e59406&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!./ResetPassword.vue?vue&type=style&index=0&id=41e59406&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=41e59406&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=41e59406&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 \"41e59406\",\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('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', '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.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.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!./UpdatePassword.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!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&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!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&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 \"4dc21d74\",\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('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<div class=\"guest-box login-box\">\n\t\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a href=\"#\" class=\"login-box__link\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"warning\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\"\n\t\t\t\t@click=\"goTo(alternativeLogin.href)\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t\tgoTo(href) {\n\t\t\twindow.location.href = href\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\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!./Login.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!./Login.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!./Login.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!./Login.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=7ed2300f&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.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","/**\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 L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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 *\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'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\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, \".button-vue[data-v-756414a8]{margin-top:.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AAkEA,6BACC,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.button-vue {\\n\\tmargin-top: .5rem;\\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, \".login-form[data-v-6e9b41c5]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-6e9b41c5]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-6e9b41c5]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AAkOA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"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.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\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, \".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,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.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\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, \".login-form[data-v-41e59406]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-41e59406]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-41e59406]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AAqIA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"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.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\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, \"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AAkMA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA\",\"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\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\twidth: 300px;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\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, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 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<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\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 = 46700;","// 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 = 4577;","__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\t4577: 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));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(26442); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","el","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","comparator","Comparators","fileInfo1","fileInfo2","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","valueLoading","ref","loginActionUrl","_e","messages","_l","class","loadingIcon","staticStyle","domProps","headline","shake","invalidPassword","user","autoCompleteAllowed","updateUsername","errorLabel","isError","redirectUrl","timezone","timezoneOffset","loginName","Axios","resp","isHttps","isLocalhost","hasPublicKeyCredential","directives","rawName","expression","composing","validCredentials","authenticate","Array","isArray","proceed","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","hideLoginForm","directLogin","passwordlessLogin","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","errors","throttleDelay","countAlternativeLogins","alternativeLogin","goTo","methods","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-unified-search.js b/dist/core-unified-search.js
index 07077715c9d..d3c6a052726 100644
--- a/dist/core-unified-search.js
+++ b/dist/core-unified-search.js
@@ -1,3 +1,3 @@
/*! For license information please see core-unified-search.js.LICENSE.txt */
-!function(){"use strict";var n,e={16757:function(n,e,r){var i=r(17499),a=r(22200),o=r(9944),s=r(20144),u=r(74854),c=r(79753),l=r(16453),d=r(4820);function A(n,t,e,r,i,a,o){try{var s=n[a](o),u=s.value}catch(n){return void e(n)}s.done?t(u):Promise.resolve(u).then(r,i)}function h(n){return function(){var t=this,e=arguments;return new Promise((function(r,i){var a=n.apply(t,e);function o(n){A(a,r,i,o,s,"next",n)}function s(n){A(a,r,i,o,s,"throw",n)}o(void 0)}))}}var p=(0,l.loadState)("unified-search","limit-default"),f=(0,l.loadState)("unified-search","min-search-length",2),g=(0,l.loadState)("unified-search","live-search",!0),m=/(^|\s)in:([a-z_-]+)/gi,C=/(^|\s)-in:([a-z_-]+)/gi;function v(){return _.apply(this,arguments)}function _(){return(_=h(regeneratorRuntime.mark((function n(){var t,e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,d.default.get((0,c.generateOcsUrl)("search/providers"),{params:{from:window.location.pathname.replace("/index.php","")+window.location.search}});case 3:if(t=n.sent,!("ocs"in(e=t.data)&&"data"in e.ocs&&Array.isArray(e.ocs.data)&&e.ocs.data.length>0)){n.next=7;break}return n.abrupt("return",e.ocs.data);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(0),console.error(n.t0);case 12:return n.abrupt("return",[]);case 13:case"end":return n.stop()}}),n,null,[[0,9]])})))).apply(this,arguments)}function b(n){var t=n.type,e=n.query,r=n.cursor,i=d.default.CancelToken.source(),a=function(){var n=h(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",d.default.get((0,c.generateOcsUrl)("search/providers/{type}/search",{type:t}),{cancelToken:i.token,params:{term:e,cursor:r,from:window.location.pathname.replace("/index.php","")+window.location.search}}));case 1:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}();return{request:a,cancel:i.cancel}}var y=r(26932),x=r(45400),w=r.n(x),k=r(12945),S=r.n(k),D=r(20296),$=r.n(D),B=r(93455),I=r.n(B),q=r(72875),E=r.n(q),R=r(38530),U=r(67536),L=r(85354),O=r.n(L),M={name:"HeaderMenu",directives:{ClickOutside:U.directive},mixins:[O()],props:{id:{type:String,required:!0},ariaLabel:{type:String,default:""},open:{type:Boolean,default:!1}},data:function(){return{opened:this.open,clickOutsideConfig:{handler:this.closeMenu,middleware:this.clickOutsideMiddleware},shortcutsDisabled:OCP.Accessibility.disableKeyboardShortcuts()}},watch:{open:function(n){var t=this;this.opened=n,this.$nextTick((function(){t.opened?t.openMenu():t.closeMenu()}))}},mounted:function(){document.addEventListener("keydown",this.onKeyDown)},beforeDestroy:function(){document.removeEventListener("keydown",this.onKeyDown)},methods:{toggleMenu:function(){this.opened?this.closeMenu():this.openMenu()},closeMenu:function(){this.opened&&(this.opened=!1,this.$emit("close"),this.$emit("update:open",!1))},openMenu:function(){this.opened||(this.opened=!0,this.$emit("open"),this.$emit("update:open",!0))},onKeyDown:function(n){this.shortcutsDisabled||"Escape"===n.key&&this.opened&&(n.preventDefault(),this.$emit("cancel"),this.opened=!1,this.$emit("update:open",!1))}}},P=r(93379),z=r.n(P),F=r(7795),j=r.n(F),N=r(90569),Z=r.n(N),T=r(3565),G=r.n(T),W=r(19216),Y=r.n(W),H=r(44589),Q=r.n(H),K=r(82965),V={};V.styleTagTransform=Q(),V.setAttributes=G(),V.insert=Z().bind(null,"head"),V.domAPI=j(),V.insertStyleElement=Y(),z()(K.Z,V),K.Z&&K.Z.locals&&K.Z.locals;var X=r(51900),J=(0,X.Z)(M,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:n.clickOutsideConfig,expression:"clickOutsideConfig"}],staticClass:"header-menu",class:{"header-menu--opened":n.opened},attrs:{id:n.id}},[e("a",{staticClass:"header-menu__trigger",attrs:{href:"#","aria-label":n.ariaLabel,"aria-controls":"header-menu-"+n.id,"aria-expanded":n.opened.toString()},on:{click:function(t){return t.preventDefault(),n.toggleMenu.apply(null,arguments)}}},[n._t("trigger")],2),n._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.opened,expression:"opened"}],staticClass:"header-menu__carret"}),n._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.opened,expression:"opened"}],staticClass:"header-menu__wrapper",attrs:{id:"header-menu-"+n.id,role:"menu"}},[e("div",{staticClass:"header-menu__content"},[n._t("default")],2)])])}),[],!1,null,"4ba23c22",null),nn=J.exports,tn={name:"SearchResult",components:{NcHighlight:E()},props:{thumbnailUrl:{type:String,default:null},title:{type:String,required:!0},subline:{type:String,default:null},resourceUrl:{type:String,default:null},icon:{type:String,default:""},rounded:{type:Boolean,default:!1},query:{type:String,default:""},focused:{type:Boolean,default:!1}},data:function(){return{hasValidThumbnail:this.thumbnailUrl&&""!==this.thumbnailUrl.trim(),loaded:!1}},computed:{isIconUrl:function(){if(this.icon.startsWith("/"))return!0;try{new URL(this.icon)}catch(n){return!1}return!0}},watch:{thumbnailUrl:function(){this.hasValidThumbnail=this.thumbnailUrl&&""!==this.thumbnailUrl.trim(),this.loaded=!1}},methods:{reEmitEvent:function(n){this.$emit(n.type,n)},onError:function(){this.hasValidThumbnail=!1},onLoad:function(){this.loaded=!0}}},en=r(17543),rn={};rn.styleTagTransform=Q(),rn.setAttributes=G(),rn.insert=Z().bind(null,"head"),rn.domAPI=j(),rn.insertStyleElement=Y(),z()(en.Z,rn),en.Z&&en.Z.locals&&en.Z.locals;var an=(0,X.Z)(tn,(function(){var n,t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"unified-search__result",class:{"unified-search__result--focused":t.focused},attrs:{href:t.resourceUrl||"#"},on:{click:t.reEmitEvent,focus:t.reEmitEvent}},[r("div",{staticClass:"unified-search__result-icon",class:(n={"unified-search__result-icon--rounded":t.rounded,"unified-search__result-icon--no-preview":!t.hasValidThumbnail&&!t.loaded,"unified-search__result-icon--with-thumbnail":t.hasValidThumbnail&&t.loaded},n[t.icon]=!t.loaded&&!t.isIconUrl,n),style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":""}},[t.hasValidThumbnail?r("img",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],attrs:{src:t.thumbnailUrl,alt:""},on:{error:t.onError,load:t.onLoad}}):t._e()]),t._v(" "),r("span",{staticClass:"unified-search__result-content"},[r("span",{staticClass:"unified-search__result-line-one",attrs:{title:t.title}},[r("NcHighlight",{attrs:{text:t.title,search:t.query}})],1),t._v(" "),t.subline?r("span",{staticClass:"unified-search__result-line-two",attrs:{title:t.subline}},[t._v(t._s(t.subline))]):t._e()])])}),[],!1,null,"288e1e92",null).exports,on={name:"SearchResultPlaceholders",data:function(){return{light:null,dark:null}},mounted:function(){var n=getComputedStyle(document.documentElement);this.dark=n.getPropertyValue("--color-placeholder-dark"),this.light=n.getPropertyValue("--color-placeholder-light")},methods:{randWidth:function(){return Math.floor(20*Math.random())+30}}},sn=r(44201),un={};un.styleTagTransform=Q(),un.setAttributes=G(),un.insert=Z().bind(null,"head"),un.domAPI=j(),un.insertStyleElement=Y(),z()(sn.Z,un),sn.Z&&sn.Z.locals&&sn.Z.locals;var cn=(0,X.Z)(on,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("ul",[e("svg",{staticClass:"unified-search__result-placeholder-gradient"},[e("defs",[e("linearGradient",{attrs:{id:"unified-search__result-placeholder-gradient"}},[e("stop",{attrs:{offset:"0%","stop-color":n.light}},[e("animate",{attrs:{attributeName:"stop-color",values:n.light+"; "+n.light+"; "+n.dark+"; "+n.dark+"; "+n.light,dur:"2s",repeatCount:"indefinite"}})]),n._v(" "),e("stop",{attrs:{offset:"100%","stop-color":n.dark}},[e("animate",{attrs:{attributeName:"stop-color",values:n.dark+"; "+n.light+"; "+n.light+"; "+n.dark+"; "+n.dark,dur:"2s",repeatCount:"indefinite"}})])],1)],1)]),n._v(" "),n._l([1,2,3],(function(t){return e("li",{key:t},[e("svg",{staticClass:"unified-search__result-placeholder",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"url(#unified-search__result-placeholder-gradient)"}},[e("rect",{staticClass:"unified-search__result-placeholder-icon"}),n._v(" "),e("rect",{staticClass:"unified-search__result-placeholder-line-one"}),n._v(" "),e("rect",{staticClass:"unified-search__result-placeholder-line-two",style:{width:"calc("+n.randWidth()+"%)"}})])])}))],2)}),[],!1,null,"9ed03c40",null).exports;function ln(n){return function(n){if(Array.isArray(n))return hn(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||An(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dn(n,t){var e="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!e){if(Array.isArray(n)||(e=An(n))||t&&n&&"number"==typeof n.length){e&&(n=e);var r=0,i=function(){};return{s:i,n:function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}},e:function(n){throw n},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){e=e.call(n)},n:function(){var n=e.next();return o=n.done,n},e:function(n){s=!0,a=n},f:function(){try{o||null==e.return||e.return()}finally{if(s)throw a}}}}function An(n,t){if(n){if("string"==typeof n)return hn(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?hn(n,t):void 0}}function hn(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e<t;e++)r[e]=n[e];return r}function pn(n,t,e,r,i,a,o){try{var s=n[a](o),u=s.value}catch(n){return void e(n)}s.done?t(u):Promise.resolve(u).then(r,i)}function fn(n){return function(){var t=this,e=arguments;return new Promise((function(r,i){var a=n.apply(t,e);function o(n){pn(a,r,i,o,s,"next",n)}function s(n){pn(a,r,i,o,s,"throw",n)}o(void 0)}))}}var gn={name:"UnifiedSearch",components:{NcActionButton:w(),NcActions:S(),NcEmptyContent:I(),HeaderMenu:nn,NcHighlight:E(),Magnify:R.Z,SearchResult:an,SearchResultPlaceholders:cn},data:function(){return{types:[],cursors:{},limits:{},loading:{},reached:{},requests:[],results:{},query:"",focused:null,triggered:!1,defaultLimit:p,minSearchLength:f,enableLiveSearch:g,open:!1}},computed:{typesIDs:function(){return this.types.map((function(n){return n.id}))},typesNames:function(){return this.types.map((function(n){return n.name}))},typesMap:function(){return this.types.reduce((function(n,t){return n[t.id]=t.name,n}),{})},ariaLabel:function(){return t("core","Search")},hasResults:function(){return 0!==Object.keys(this.results).length},orderedResults:function(){var n=this;return this.typesIDs.filter((function(t){return t in n.results})).map((function(t){return{type:t,list:n.results[t]}}))},availableFilters:function(){return Object.keys(this.results)},usedFiltersIn:function(){for(var n,t=[];null!==(n=m.exec(this.query));)t.push(n[2]);return t},usedFiltersNot:function(){for(var n,t=[];null!==(n=C.exec(this.query));)t.push(n[2]);return t},isShortQuery:function(){return this.query&&this.query.trim().length<f},isValidQuery:function(){return this.query&&""!==this.query.trim()&&!this.isShortQuery},isDoneSearching:function(){return Object.values(this.reached).every((function(n){return!1===n}))},isLoading:function(){return Object.values(this.loading).some((function(n){return!0===n}))}},created:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(0,u.Ld)("files:navigation:changed",n.resetForm),t.next=3,v();case 3:n.types=t.sent,n.logger.debug("Unified Search initialized with the following providers",n.types);case 5:case"end":return t.stop()}}),t)})))()},beforeDestroy:function(){(0,u.r1)("files:navigation:changed",this.resetForm)},mounted:function(){var n=this;OCP.Accessibility.disableKeyboardShortcuts()||document.addEventListener("keydown",(function(t){t.ctrlKey&&"f"===t.key&&!n.open&&(t.preventDefault(),n.open=!0,n.focusInput()),n.open&&("ArrowDown"===t.key&&n.focusNext(t),"ArrowUp"===t.key&&n.focusPrev(t))}))},methods:{onOpen:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.focusInput(),t.next=3,v();case 3:n.types=t.sent;case 4:case"end":return t.stop()}}),t)})))()},onClose:function(){(0,u.j8)("nextcloud:unified-search.close")},resetForm:function(){this.$el.querySelector('form[role="search"]').reset()},onReset:function(){(0,u.j8)("nextcloud:unified-search.reset"),this.logger.debug("Search reset"),this.query="",this.resetState(),this.focusInput()},resetState:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.cursors={},n.limits={},n.reached={},n.results={},n.focused=null,n.triggered=!1,t.next=8,n.cancelPendingRequests();case 8:case"end":return t.stop()}}),t)})))()},cancelPendingRequests:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=n.requests.slice(0),n.requests=[],t.next=4,Promise.all(e.map((function(n){return n()})));case 4:case"end":return t.stop()}}),t)})))()},focusInput:function(){var n=this;this.$nextTick((function(){n.$refs.input.focus(),n.$refs.input.select()}))},onInputEnter:function(){this.hasResults?this.getResultsList()[0].click():this.onInput()},onInput:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){var e,r,i,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((0,u.j8)("nextcloud:unified-search.search",{query:n.query}),""!==n.query.trim()&&!n.isShortQuery){t.next=5;break}e=dn(n.typesIDs);try{for(e.s();!(r=e.n()).done;)i=r.value,n.$delete(n.results,i)}catch(n){e.e(n)}finally{e.f()}return t.abrupt("return");case 5:return a=n.typesIDs,o=n.query,n.usedFiltersNot.length>0&&(a=n.typesIDs.filter((function(t){return-1===n.usedFiltersNot.indexOf(t)}))),n.usedFiltersIn.length>0&&(a=n.typesIDs.filter((function(t){return n.usedFiltersIn.indexOf(t)>-1}))),o=o.replace(m,"").replace(C,""),t.next=12,n.resetState();case 12:if(n.triggered=!0,a.length){t.next=16;break}return n.logger.error("No types to search in"),t.abrupt("return");case 16:n.$set(n.loading,"all",!0),n.logger.debug("Searching ".concat(o," in"),a),Promise.all(a.map(function(){var t=fn(regeneratorRuntime.mark((function t(e){var r,i,a,s,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=b({type:e,query:o}),i=r.request,a=r.cancel,n.requests.push(a),t.next=5,i();case 5:return s=t.sent,(u=s.data).ocs.data.entries.length>0?n.$set(n.results,e,u.ocs.data.entries):n.$delete(n.results,e),u.ocs.data.cursor?n.$set(n.cursors,e,u.ocs.data.cursor):u.ocs.data.isPaginated||n.$set(n.limits,e,n.defaultLimit),u.ocs.data.entries.length<n.defaultLimit&&n.$set(n.reached,e,!0),null===n.focused&&(n.focused=0),t.abrupt("return",1);case 14:if(t.prev=14,t.t0=t.catch(0),n.$delete(n.results,e),!t.t0.response||!t.t0.response.status){t.next=21;break}return n.logger.error("Error searching for ".concat(n.typesMap[e]),t.t0),(0,y.x2)(n.t("core","An error occurred while searching for {type}",{type:n.typesMap[e]})),t.abrupt("return",0);case 21:return t.abrupt("return",2);case 22:case"end":return t.stop()}}),t,null,[[0,14]])})));return function(n){return t.apply(this,arguments)}}())).then((function(t){t.some((function(n){return 2===n}))||(n.loading={})}));case 19:case"end":return t.stop()}}),t)})))()},onInputDebounced:g?$()((function(n){this.onInput(n)}),500):function(){this.triggered=!1},loadMore:function(n){var t=this;return fn(regeneratorRuntime.mark((function e(){var r,i,a,o,s,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.loading[n]){e.next=2;break}return e.abrupt("return");case 2:if(!t.cursors[n]){e.next=14;break}return r=b({type:n,query:t.query,cursor:t.cursors[n]}),i=r.request,a=r.cancel,t.requests.push(a),e.next=7,i();case 7:o=e.sent,(s=o.data).ocs.data.cursor&&t.$set(t.cursors,n,s.ocs.data.cursor),s.ocs.data.entries.length>0&&(u=t.results[n]).push.apply(u,ln(s.ocs.data.entries)),s.ocs.data.entries.length<t.defaultLimit&&t.$set(t.reached,n,!0),e.next=15;break;case 14:t.limits[n]&&t.limits[n]>=0&&(t.limits[n]+=t.defaultLimit,t.limits[n]>=t.results[n].length&&t.$set(t.reached,n,!0));case 15:null!==t.focused&&t.$nextTick((function(){t.focusIndex(t.focused)}));case 16:case"end":return e.stop()}}),e)})))()},limitIfAny:function(n,t){return t in this.limits?n.slice(0,this.limits[t]):n},getResultsList:function(){return this.$el.querySelectorAll(".unified-search__results .unified-search__result")},focusFirst:function(n){var t=this.getResultsList();t&&t.length>0&&(n&&n.preventDefault(),this.focused=0,this.focusIndex(this.focused))},focusNext:function(n){if(null!==this.focused){var t=this.getResultsList();t&&t.length>0&&this.focused+1<t.length&&(n.preventDefault(),this.focused++,this.focusIndex(this.focused))}else this.focusFirst(n)},focusPrev:function(n){if(null!==this.focused){var t=this.getResultsList();t&&t.length>0&&this.focused>0&&(n.preventDefault(),this.focused--,this.focusIndex(this.focused))}else this.focusFirst(n)},focusIndex:function(n){var t=this.getResultsList();t&&t[n]&&t[n].focus()},setFocusedIndex:function(n){var t=n.target,e=ln(this.getResultsList()).findIndex((function(n){return n===t}));e>-1&&(this.focused=e)},onClickFilter:function(n){this.query="".concat(this.query," ").concat(n).replace(/ {2}/g," ").trim(),this.onInput()}}},mn=gn,Cn=r(23338),vn={};vn.styleTagTransform=Q(),vn.setAttributes=G(),vn.insert=Z().bind(null,"head"),vn.domAPI=j(),vn.insertStyleElement=Y(),z()(Cn.Z,vn),Cn.Z&&Cn.Z.locals&&Cn.Z.locals;var _n=(0,X.Z)(mn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("HeaderMenu",{staticClass:"unified-search",attrs:{id:"unified-search","exclude-click-outside-classes":"popover",open:n.open,"aria-label":n.ariaLabel},on:{"update:open":function(t){n.open=t},open:n.onOpen,close:n.onClose},scopedSlots:n._u([{key:"trigger",fn:function(){return[e("Magnify",{staticClass:"unified-search__trigger",attrs:{size:22,"fill-color":"var(--color-primary-text)"}})]},proxy:!0}])},[n._v(" "),e("div",{staticClass:"unified-search__input-wrapper"},[e("label",{attrs:{for:"unified-search__input"}},[n._v(n._s(n.ariaLabel))]),n._v(" "),e("div",{staticClass:"unified-search__input-row"},[e("form",{staticClass:"unified-search__form",class:{"icon-loading-small":n.isLoading},attrs:{role:"search"},on:{submit:function(t){return t.preventDefault(),t.stopPropagation(),n.onInputEnter.apply(null,arguments)},reset:function(t){return t.preventDefault(),t.stopPropagation(),n.onReset.apply(null,arguments)}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:n.query,expression:"query"}],ref:"input",staticClass:"unified-search__form-input",class:{"unified-search__form-input--with-reset":!!n.query},attrs:{id:"unified-search__input",type:"search",placeholder:n.t("core","Search {types} …",{types:n.typesNames.join(", ")}),"aria-describedby":"unified-search-desc"},domProps:{value:n.query},on:{input:[function(t){t.target.composing||(n.query=t.target.value)},n.onInputDebounced],keypress:function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),t.stopPropagation(),n.onInputEnter.apply(null,arguments))}}}),n._v(" "),e("p",{staticClass:"hidden-visually",attrs:{id:"unified-search-desc"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("core","Search starts once you start typing"))+"\n\t\t\t\t")]),n._v(" "),n.query&&!n.isLoading?e("input",{staticClass:"unified-search__form-reset icon-close",attrs:{type:"reset","aria-label":n.t("core","Reset search"),value:""}}):n._e(),n._v(" "),!n.query||n.isLoading||n.enableLiveSearch?n._e():e("input",{staticClass:"unified-search__form-submit icon-confirm",attrs:{type:"submit","aria-label":n.t("core","Start search"),value:""}})]),n._v(" "),n.availableFilters.length>1?e("NcActions",{staticClass:"unified-search__filters",attrs:{placement:"bottom"}},n._l(n.availableFilters,(function(t){return e("NcActionButton",{key:t,attrs:{icon:"icon-filter",title:n.t("core","Search for {name} only",{name:n.typesMap[t]})},on:{click:function(e){return e.stopPropagation(),n.onClickFilter("in:"+t)}}},[n._v("\n\t\t\t\t\t"+n._s("in:"+t)+"\n\t\t\t\t")])})),1):n._e()],1)]),n._v(" "),n.hasResults?n._l(n.orderedResults,(function(t,r){var i=t.list,a=t.type;return e("ul",{key:a,staticClass:"unified-search__results",class:"unified-search__results-"+a,attrs:{"aria-label":n.typesMap[a]}},[e("h2",{staticClass:"unified-search__results-header"},[n._v("\n\t\t\t\t"+n._s(n.typesMap[a])+"\n\t\t\t")]),n._v(" "),n._l(n.limitIfAny(i,a),(function(t,i){return e("li",{key:t.resourceUrl},[e("SearchResult",n._b({attrs:{query:n.query,focused:0===n.focused&&0===r&&0===i},on:{focus:n.setFocusedIndex}},"SearchResult",t,!1))],1)})),n._v(" "),e("li",[n.reached[a]?n._e():e("SearchResult",{staticClass:"unified-search__result-more",attrs:{title:n.loading[a]?n.t("core","Loading more results …"):n.t("core","Load more results"),"icon-class":n.loading[a]?"icon-loading-small":""},on:{click:function(t){return t.stopPropagation(),n.loadMore(a)},focus:n.setFocusedIndex}})],1)],2)})):[n.isLoading?e("SearchResultPlaceholders"):n.isValidQuery?e("NcEmptyContent",{scopedSlots:n._u([{key:"icon",fn:function(){return[e("Magnify")]},proxy:!0}],null,!1,931131664)},[n.triggered?e("NcHighlight",{attrs:{text:n.t("core","No results for {query}",{query:n.query}),search:n.query}}):e("div",[n._v("\n\t\t\t\t"+n._s(n.t("core","Press enter to start searching"))+"\n\t\t\t")])],1):!n.isLoading||n.isShortQuery?e("NcEmptyContent",{scopedSlots:n._u([{key:"icon",fn:function(){return[e("Magnify")]},proxy:!0},n.isShortQuery?{key:"desc",fn:function(){return[n._v("\n\t\t\t\t"+n._s(n.n("core","Please enter {minSearchLength} character or more to search","Please enter {minSearchLength} characters or more to search",n.minSearchLength,{minSearchLength:n.minSearchLength}))+"\n\t\t\t")]},proxy:!0}:null],null,!0)},[n._v("\n\t\t\t"+n._s(n.t("core","Start typing to search"))+"\n\t\t\t")]):n._e()]],2)}),[],!1,null,"66445578",null),bn=_n.exports;r.nc=btoa((0,a.getRequestToken)());var yn=(0,i.IY)().setApp("unified-search").detectUser().build();s.ZP.mixin({data:function(){return{logger:yn}},methods:{t:o.translate,n:o.translatePlural}}),new s.ZP({el:"#unified-search",name:"UnifiedSearchRoot",render:function(n){return n(bn)}})},82965:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,'.header-menu__trigger[data-v-4ba23c22]{display:flex;align-items:center;justify-content:center;width:50px;height:44px;margin:2px 0;padding:0;cursor:pointer;opacity:.85}.header-menu--opened .header-menu__trigger[data-v-4ba23c22],.header-menu__trigger[data-v-4ba23c22]:hover,.header-menu__trigger[data-v-4ba23c22]:focus,.header-menu__trigger[data-v-4ba23c22]:active{opacity:1}.header-menu__trigger[data-v-4ba23c22]:focus-visible{outline:none}.header-menu__wrapper[data-v-4ba23c22]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0 8px;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));padding:8px;border-radius:var(--border-radius-large)}.header-menu__carret[data-v-4ba23c22]{position:absolute;z-index:2001;left:calc(50% - 10px);bottom:0;width:0;height:0;content:" ";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-4ba23c22]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:66px;max-height:calc(100vh - 100px)}',"",{version:3,sources:["webpack://./core/src/components/HeaderMenu.vue"],names:[],mappings:"AA2KC,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,YAAA,CACA,SAAA,CACA,cAAA,CACA,WAAA,CAGD,oMAIC,SAAA,CAGD,qDACC,YAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,YAAA,CACA,2DAAA,CACA,6CAAA,CACA,qDAAA,CACA,WAAA,CACA,wCAAA,CAGD,sCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,4BAAA,CACA,eAAA,CACA,8BAAA",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$externalMargin: 8px;\n\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 44px;\n\t\tmargin: 2px 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .85;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__trigger:focus-visible {\n\t\toutline: none;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0 $externalMargin;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t\tpadding: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tz-index: 2001; // Because __wrapper is 2000.\n\t\tleft: calc(50% - 10px);\n\t\tbottom: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: calc(100vw - 2 * $externalMargin);\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n"],sourceRoot:""}]),t.Z=o},17543:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__result[data-v-288e1e92]{display:flex;align-items:center;height:44px;padding:10px;border-bottom:1px solid var(--color-border);border-radius:var(--border-radius-large) !important}.unified-search__result[data-v-288e1e92]:last-child{border-bottom:none}.unified-search__result--focused[data-v-288e1e92],.unified-search__result[data-v-288e1e92]:active,.unified-search__result[data-v-288e1e92]:hover,.unified-search__result[data-v-288e1e92]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-288e1e92]{cursor:pointer}.unified-search__result-icon[data-v-288e1e92]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-288e1e92]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-288e1e92]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-288e1e92]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-288e1e92],.unified-search__result-actions[data-v-288e1e92]{flex:0 0 44px}.unified-search__result-content[data-v-288e1e92]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-288e1e92],.unified-search__result-line-two[data-v-288e1e92]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-288e1e92]{opacity:.7;font-size:var(--default-font-size)}","",{version:3,sources:["webpack://./core/src/components/UnifiedSearch/SearchResult.vue"],names:[],mappings:"AAyKA,yCACC,YAAA,CACA,kBAAA,CACA,WANgB,CAOhB,YANQ,CAOR,2CAAA,CACA,mDAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA7Be,CA8Bf,WA9Be,CA+Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAxEO,CA2ER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA",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@use "sass:math";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius-large) !important;\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\n}\n\n'],sourceRoot:""}]),t.Z=o},44201:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}","",{version:3,sources:["webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue"],names:[],mappings:"AA+DA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA",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$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\n}\n\n"],sourceRoot:""}]),t.Z=o},23338:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__trigger[data-v-66445578]{filter:var(--background-image-invert-if-bright)}.unified-search__input-wrapper[data-v-66445578]{position:sticky;z-index:2;top:0;display:inline-flex;flex-direction:column;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__input-wrapper label[for=unified-search__input][data-v-66445578]{align-self:flex-start;font-weight:bold;font-size:18px;margin-left:13px}.unified-search__form-input[data-v-66445578]{margin:0 !important}.unified-search__input-row[data-v-66445578]{display:flex;width:100%;align-items:center}.unified-search__filters[data-v-66445578]{margin:10px 0 10px 5px}.unified-search__filters ul[data-v-66445578]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-66445578]{position:relative;width:100%;margin:10px 0}.unified-search__form[data-v-66445578]::after{right:6px;left:auto}.unified-search__form-input[data-v-66445578],.unified-search__form-reset[data-v-66445578]{margin:3px}.unified-search__form-input[data-v-66445578]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-66445578],.unified-search__form-input[placeholder][data-v-66445578],.unified-search__form-input[data-v-66445578]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-66445578]::-webkit-search-decoration,.unified-search__form-input[data-v-66445578]::-webkit-search-cancel-button,.unified-search__form-input[data-v-66445578]::-webkit-search-results-button,.unified-search__form-input[data-v-66445578]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-66445578],.unified-search__form-input--with-reset[data-v-66445578]{padding-right:34px}.unified-search__form-reset[data-v-66445578],.unified-search__form-submit[data-v-66445578]{position:absolute;top:0;right:4px;width:28px;height:28px;min-height:30px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-66445578]:hover,.unified-search__form-reset[data-v-66445578]:focus,.unified-search__form-reset[data-v-66445578]:active,.unified-search__form-submit[data-v-66445578]:hover,.unified-search__form-submit[data-v-66445578]:focus,.unified-search__form-submit[data-v-66445578]:active{opacity:1}.unified-search__form-submit[data-v-66445578]{right:28px}.unified-search__results[data-v-66445578]{display:flex;flex-direction:column;gap:4px}.unified-search__results-header[data-v-66445578]{display:block;margin:10px;margin-bottom:6px;margin-left:16px;color:var(--color-primary-element);font-weight:normal;font-size:18px}.unified-search .unified-search__result-more[data-v-66445578]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-66445578]{margin:10vh 0}.unified-search .empty-content[data-v-66445578] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}","",{version:3,sources:["webpack://./core/src/views/UnifiedSearch.vue"],names:[],mappings:"AAgtBC,0CACC,+CAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,qBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAEA,iFACC,qBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CAIF,6CACC,mBAAA,CAGD,4CACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,0CACC,sBAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,aAAA,CAGA,8CACC,SAnDa,CAoDb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA/DY,CAgEZ,WA/Da,CAiEb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBArFW,CAyFb,2FACC,iBAAA,CACA,KAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,uTAGC,SAAA,CAIF,8CACC,UAAA,CAIF,0CAUC,YAAA,CACA,qBAAA,CACA,OAAA,CAXA,iDACC,aAAA,CACA,WAtHM,CAuHN,iBAAA,CACA,gBAAA,CACA,kCAAA,CACA,kBAAA,CACA,cAAA,CAOF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@use "sass:math";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\tfilter: var(--background-image-invert-if-bright);\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tlabel[for="unified-search__input"] {\n\t\t\talign-self: flex-start;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 18px;\n\t\t\tmargin-left: 13px;\n\t\t}\n\t}\n\n\t&__form-input {\n\t\tmargin: 0 !important;\n\t}\n\n\t&__input-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t}\n\n\t&__filters {\n\t\tmargin: $margin 0 $margin math.div($margin, 2);\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin 0;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset, &-submit {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 4px;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tmin-height: 30px;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&-submit {\n\t\t\tright: 28px;\n\t\t}\n\t}\n\n\t&__results {\n\t\t&-header {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-bottom: $margin - 4px;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcolor: var(--color-primary-element);\n\t\t\tfont-weight: normal;\n\t\t\tfont-size: 18px;\n\t\t}\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n\n'],sourceRoot:""}]),t.Z=o}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,r,a){if(!e){var o=1/0;for(l=0;l<n.length;l++){e=n[l][0],r=n[l][1],a=n[l][2];for(var s=!0,u=0;u<e.length;u++)(!1&a||o>=a)&&Object.keys(i.O).every((function(n){return i.O[n](e[u])}))?e.splice(u--,1):(s=!1,a<o&&(o=a));if(s){n.splice(l--,1);var c=r();void 0!==c&&(t=c)}}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]=[e,r,a]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=9671,function(){i.b=document.baseURI||self.location.href;var n={9671:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,a,o=e[0],s=e[1],u=e[2],c=0;if(o.some((function(t){return 0!==n[t]}))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(u)var l=u(i)}for(t&&t(e);c<o.length;c++)a=o[c],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(16757)}));a=i.O(a)}();
-//# sourceMappingURL=core-unified-search.js.map?v=689d993289060c1248e2 \ No newline at end of file
+!function(){"use strict";var n,e={16757:function(n,e,r){var i=r(17499),a=r(22200),o=r(9944),s=r(20144),u=r(74854),c=r(79753),l=r(16453),d=r(4820);function A(n,t,e,r,i,a,o){try{var s=n[a](o),u=s.value}catch(n){return void e(n)}s.done?t(u):Promise.resolve(u).then(r,i)}function h(n){return function(){var t=this,e=arguments;return new Promise((function(r,i){var a=n.apply(t,e);function o(n){A(a,r,i,o,s,"next",n)}function s(n){A(a,r,i,o,s,"throw",n)}o(void 0)}))}}var p=(0,l.loadState)("unified-search","limit-default"),f=(0,l.loadState)("unified-search","min-search-length",1),g=(0,l.loadState)("unified-search","live-search",!0),m=/(^|\s)in:([a-z_-]+)/gi,C=/(^|\s)-in:([a-z_-]+)/gi;function v(){return _.apply(this,arguments)}function _(){return(_=h(regeneratorRuntime.mark((function n(){var t,e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,d.default.get((0,c.generateOcsUrl)("search/providers"),{params:{from:window.location.pathname.replace("/index.php","")+window.location.search}});case 3:if(t=n.sent,!("ocs"in(e=t.data)&&"data"in e.ocs&&Array.isArray(e.ocs.data)&&e.ocs.data.length>0)){n.next=7;break}return n.abrupt("return",e.ocs.data);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(0),console.error(n.t0);case 12:return n.abrupt("return",[]);case 13:case"end":return n.stop()}}),n,null,[[0,9]])})))).apply(this,arguments)}function b(n){var t=n.type,e=n.query,r=n.cursor,i=d.default.CancelToken.source(),a=function(){var n=h(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",d.default.get((0,c.generateOcsUrl)("search/providers/{type}/search",{type:t}),{cancelToken:i.token,params:{term:e,cursor:r,from:window.location.pathname.replace("/index.php","")+window.location.search}}));case 1:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}();return{request:a,cancel:i.cancel}}var y=r(26932),x=r(45400),w=r.n(x),k=r(12945),S=r.n(k),D=r(20296),$=r.n(D),B=r(93455),I=r.n(B),q=r(72875),E=r.n(q),R=r(38530),U=r(67536),L=r(85354),O=r.n(L),M={name:"HeaderMenu",directives:{ClickOutside:U.directive},mixins:[O()],props:{id:{type:String,required:!0},ariaLabel:{type:String,default:""},open:{type:Boolean,default:!1}},data:function(){return{opened:this.open,clickOutsideConfig:{handler:this.closeMenu,middleware:this.clickOutsideMiddleware},shortcutsDisabled:OCP.Accessibility.disableKeyboardShortcuts()}},watch:{open:function(n){var t=this;this.opened=n,this.$nextTick((function(){t.opened?t.openMenu():t.closeMenu()}))}},mounted:function(){document.addEventListener("keydown",this.onKeyDown)},beforeDestroy:function(){document.removeEventListener("keydown",this.onKeyDown)},methods:{toggleMenu:function(){this.opened?this.closeMenu():this.openMenu()},closeMenu:function(){this.opened&&(this.opened=!1,this.$emit("close"),this.$emit("update:open",!1))},openMenu:function(){this.opened||(this.opened=!0,this.$emit("open"),this.$emit("update:open",!0))},onKeyDown:function(n){this.shortcutsDisabled||"Escape"===n.key&&this.opened&&(n.preventDefault(),this.$emit("cancel"),this.opened=!1,this.$emit("update:open",!1))}}},P=r(93379),z=r.n(P),F=r(7795),j=r.n(F),N=r(90569),Z=r.n(N),T=r(3565),G=r.n(T),W=r(19216),Y=r.n(W),H=r(44589),Q=r.n(H),K=r(82965),V={};V.styleTagTransform=Q(),V.setAttributes=G(),V.insert=Z().bind(null,"head"),V.domAPI=j(),V.insertStyleElement=Y(),z()(K.Z,V),K.Z&&K.Z.locals&&K.Z.locals;var X=r(51900),J=(0,X.Z)(M,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:n.clickOutsideConfig,expression:"clickOutsideConfig"}],staticClass:"header-menu",class:{"header-menu--opened":n.opened},attrs:{id:n.id}},[e("a",{staticClass:"header-menu__trigger",attrs:{href:"#","aria-label":n.ariaLabel,"aria-controls":"header-menu-"+n.id,"aria-expanded":n.opened.toString()},on:{click:function(t){return t.preventDefault(),n.toggleMenu.apply(null,arguments)}}},[n._t("trigger")],2),n._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.opened,expression:"opened"}],staticClass:"header-menu__carret"}),n._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.opened,expression:"opened"}],staticClass:"header-menu__wrapper",attrs:{id:"header-menu-"+n.id,role:"menu"}},[e("div",{staticClass:"header-menu__content"},[n._t("default")],2)])])}),[],!1,null,"4ba23c22",null),nn=J.exports,tn={name:"SearchResult",components:{NcHighlight:E()},props:{thumbnailUrl:{type:String,default:null},title:{type:String,required:!0},subline:{type:String,default:null},resourceUrl:{type:String,default:null},icon:{type:String,default:""},rounded:{type:Boolean,default:!1},query:{type:String,default:""},focused:{type:Boolean,default:!1}},data:function(){return{hasValidThumbnail:this.thumbnailUrl&&""!==this.thumbnailUrl.trim(),loaded:!1}},computed:{isIconUrl:function(){if(this.icon.startsWith("/"))return!0;try{new URL(this.icon)}catch(n){return!1}return!0}},watch:{thumbnailUrl:function(){this.hasValidThumbnail=this.thumbnailUrl&&""!==this.thumbnailUrl.trim(),this.loaded=!1}},methods:{reEmitEvent:function(n){this.$emit(n.type,n)},onError:function(){this.hasValidThumbnail=!1},onLoad:function(){this.loaded=!0}}},en=r(17543),rn={};rn.styleTagTransform=Q(),rn.setAttributes=G(),rn.insert=Z().bind(null,"head"),rn.domAPI=j(),rn.insertStyleElement=Y(),z()(en.Z,rn),en.Z&&en.Z.locals&&en.Z.locals;var an=(0,X.Z)(tn,(function(){var n,t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"unified-search__result",class:{"unified-search__result--focused":t.focused},attrs:{href:t.resourceUrl||"#"},on:{click:t.reEmitEvent,focus:t.reEmitEvent}},[r("div",{staticClass:"unified-search__result-icon",class:(n={"unified-search__result-icon--rounded":t.rounded,"unified-search__result-icon--no-preview":!t.hasValidThumbnail&&!t.loaded,"unified-search__result-icon--with-thumbnail":t.hasValidThumbnail&&t.loaded},n[t.icon]=!t.loaded&&!t.isIconUrl,n),style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":""}},[t.hasValidThumbnail?r("img",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],attrs:{src:t.thumbnailUrl,alt:""},on:{error:t.onError,load:t.onLoad}}):t._e()]),t._v(" "),r("span",{staticClass:"unified-search__result-content"},[r("span",{staticClass:"unified-search__result-line-one",attrs:{title:t.title}},[r("NcHighlight",{attrs:{text:t.title,search:t.query}})],1),t._v(" "),t.subline?r("span",{staticClass:"unified-search__result-line-two",attrs:{title:t.subline}},[t._v(t._s(t.subline))]):t._e()])])}),[],!1,null,"288e1e92",null).exports,on={name:"SearchResultPlaceholders",data:function(){return{light:null,dark:null}},mounted:function(){var n=getComputedStyle(document.documentElement);this.dark=n.getPropertyValue("--color-placeholder-dark"),this.light=n.getPropertyValue("--color-placeholder-light")},methods:{randWidth:function(){return Math.floor(20*Math.random())+30}}},sn=r(44201),un={};un.styleTagTransform=Q(),un.setAttributes=G(),un.insert=Z().bind(null,"head"),un.domAPI=j(),un.insertStyleElement=Y(),z()(sn.Z,un),sn.Z&&sn.Z.locals&&sn.Z.locals;var cn=(0,X.Z)(on,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("ul",[e("svg",{staticClass:"unified-search__result-placeholder-gradient"},[e("defs",[e("linearGradient",{attrs:{id:"unified-search__result-placeholder-gradient"}},[e("stop",{attrs:{offset:"0%","stop-color":n.light}},[e("animate",{attrs:{attributeName:"stop-color",values:n.light+"; "+n.light+"; "+n.dark+"; "+n.dark+"; "+n.light,dur:"2s",repeatCount:"indefinite"}})]),n._v(" "),e("stop",{attrs:{offset:"100%","stop-color":n.dark}},[e("animate",{attrs:{attributeName:"stop-color",values:n.dark+"; "+n.light+"; "+n.light+"; "+n.dark+"; "+n.dark,dur:"2s",repeatCount:"indefinite"}})])],1)],1)]),n._v(" "),n._l([1,2,3],(function(t){return e("li",{key:t},[e("svg",{staticClass:"unified-search__result-placeholder",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"url(#unified-search__result-placeholder-gradient)"}},[e("rect",{staticClass:"unified-search__result-placeholder-icon"}),n._v(" "),e("rect",{staticClass:"unified-search__result-placeholder-line-one"}),n._v(" "),e("rect",{staticClass:"unified-search__result-placeholder-line-two",style:{width:"calc("+n.randWidth()+"%)"}})])])}))],2)}),[],!1,null,"9ed03c40",null).exports;function ln(n){return function(n){if(Array.isArray(n))return hn(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||An(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dn(n,t){var e="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!e){if(Array.isArray(n)||(e=An(n))||t&&n&&"number"==typeof n.length){e&&(n=e);var r=0,i=function(){};return{s:i,n:function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}},e:function(n){throw n},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){e=e.call(n)},n:function(){var n=e.next();return o=n.done,n},e:function(n){s=!0,a=n},f:function(){try{o||null==e.return||e.return()}finally{if(s)throw a}}}}function An(n,t){if(n){if("string"==typeof n)return hn(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?hn(n,t):void 0}}function hn(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e<t;e++)r[e]=n[e];return r}function pn(n,t,e,r,i,a,o){try{var s=n[a](o),u=s.value}catch(n){return void e(n)}s.done?t(u):Promise.resolve(u).then(r,i)}function fn(n){return function(){var t=this,e=arguments;return new Promise((function(r,i){var a=n.apply(t,e);function o(n){pn(a,r,i,o,s,"next",n)}function s(n){pn(a,r,i,o,s,"throw",n)}o(void 0)}))}}var gn={name:"UnifiedSearch",components:{NcActionButton:w(),NcActions:S(),NcEmptyContent:I(),HeaderMenu:nn,NcHighlight:E(),Magnify:R.Z,SearchResult:an,SearchResultPlaceholders:cn},data:function(){return{types:[],cursors:{},limits:{},loading:{},reached:{},requests:[],results:{},query:"",focused:null,triggered:!1,defaultLimit:p,minSearchLength:f,enableLiveSearch:g,open:!1}},computed:{typesIDs:function(){return this.types.map((function(n){return n.id}))},typesNames:function(){return this.types.map((function(n){return n.name}))},typesMap:function(){return this.types.reduce((function(n,t){return n[t.id]=t.name,n}),{})},ariaLabel:function(){return t("core","Search")},hasResults:function(){return 0!==Object.keys(this.results).length},orderedResults:function(){var n=this;return this.typesIDs.filter((function(t){return t in n.results})).map((function(t){return{type:t,list:n.results[t]}}))},availableFilters:function(){return Object.keys(this.results)},usedFiltersIn:function(){for(var n,t=[];null!==(n=m.exec(this.query));)t.push(n[2]);return t},usedFiltersNot:function(){for(var n,t=[];null!==(n=C.exec(this.query));)t.push(n[2]);return t},isShortQuery:function(){return this.query&&this.query.trim().length<f},isValidQuery:function(){return this.query&&""!==this.query.trim()&&!this.isShortQuery},isDoneSearching:function(){return Object.values(this.reached).every((function(n){return!1===n}))},isLoading:function(){return Object.values(this.loading).some((function(n){return!0===n}))}},created:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(0,u.Ld)("files:navigation:changed",n.resetForm),t.next=3,v();case 3:n.types=t.sent,n.logger.debug("Unified Search initialized with the following providers",n.types);case 5:case"end":return t.stop()}}),t)})))()},beforeDestroy:function(){(0,u.r1)("files:navigation:changed",this.resetForm)},mounted:function(){var n=this;OCP.Accessibility.disableKeyboardShortcuts()||document.addEventListener("keydown",(function(t){t.ctrlKey&&"f"===t.key&&!n.open&&(t.preventDefault(),n.open=!0,n.focusInput()),n.open&&("ArrowDown"===t.key&&n.focusNext(t),"ArrowUp"===t.key&&n.focusPrev(t))}))},methods:{onOpen:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.focusInput(),t.next=3,v();case 3:n.types=t.sent;case 4:case"end":return t.stop()}}),t)})))()},onClose:function(){(0,u.j8)("nextcloud:unified-search.close")},resetForm:function(){this.$el.querySelector('form[role="search"]').reset()},onReset:function(){(0,u.j8)("nextcloud:unified-search.reset"),this.logger.debug("Search reset"),this.query="",this.resetState(),this.focusInput()},resetState:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.cursors={},n.limits={},n.reached={},n.results={},n.focused=null,n.triggered=!1,t.next=8,n.cancelPendingRequests();case 8:case"end":return t.stop()}}),t)})))()},cancelPendingRequests:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=n.requests.slice(0),n.requests=[],t.next=4,Promise.all(e.map((function(n){return n()})));case 4:case"end":return t.stop()}}),t)})))()},focusInput:function(){var n=this;this.$nextTick((function(){n.$refs.input.focus(),n.$refs.input.select()}))},onInputEnter:function(){this.hasResults?this.getResultsList()[0].click():this.onInput()},onInput:function(){var n=this;return fn(regeneratorRuntime.mark((function t(){var e,r,i,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((0,u.j8)("nextcloud:unified-search.search",{query:n.query}),""!==n.query.trim()&&!n.isShortQuery){t.next=5;break}e=dn(n.typesIDs);try{for(e.s();!(r=e.n()).done;)i=r.value,n.$delete(n.results,i)}catch(n){e.e(n)}finally{e.f()}return t.abrupt("return");case 5:return a=n.typesIDs,o=n.query,n.usedFiltersNot.length>0&&(a=n.typesIDs.filter((function(t){return-1===n.usedFiltersNot.indexOf(t)}))),n.usedFiltersIn.length>0&&(a=n.typesIDs.filter((function(t){return n.usedFiltersIn.indexOf(t)>-1}))),o=o.replace(m,"").replace(C,""),t.next=12,n.resetState();case 12:if(n.triggered=!0,a.length){t.next=16;break}return n.logger.error("No types to search in"),t.abrupt("return");case 16:n.$set(n.loading,"all",!0),n.logger.debug("Searching ".concat(o," in"),a),Promise.all(a.map(function(){var t=fn(regeneratorRuntime.mark((function t(e){var r,i,a,s,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=b({type:e,query:o}),i=r.request,a=r.cancel,n.requests.push(a),t.next=5,i();case 5:return s=t.sent,(u=s.data).ocs.data.entries.length>0?n.$set(n.results,e,u.ocs.data.entries):n.$delete(n.results,e),u.ocs.data.cursor?n.$set(n.cursors,e,u.ocs.data.cursor):u.ocs.data.isPaginated||n.$set(n.limits,e,n.defaultLimit),u.ocs.data.entries.length<n.defaultLimit&&n.$set(n.reached,e,!0),null===n.focused&&(n.focused=0),t.abrupt("return",1);case 14:if(t.prev=14,t.t0=t.catch(0),n.$delete(n.results,e),!t.t0.response||!t.t0.response.status){t.next=21;break}return n.logger.error("Error searching for ".concat(n.typesMap[e]),t.t0),(0,y.x2)(n.t("core","An error occurred while searching for {type}",{type:n.typesMap[e]})),t.abrupt("return",0);case 21:return t.abrupt("return",2);case 22:case"end":return t.stop()}}),t,null,[[0,14]])})));return function(n){return t.apply(this,arguments)}}())).then((function(t){t.some((function(n){return 2===n}))||(n.loading={})}));case 19:case"end":return t.stop()}}),t)})))()},onInputDebounced:g?$()((function(n){this.onInput(n)}),500):function(){this.triggered=!1},loadMore:function(n){var t=this;return fn(regeneratorRuntime.mark((function e(){var r,i,a,o,s,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.loading[n]){e.next=2;break}return e.abrupt("return");case 2:if(!t.cursors[n]){e.next=14;break}return r=b({type:n,query:t.query,cursor:t.cursors[n]}),i=r.request,a=r.cancel,t.requests.push(a),e.next=7,i();case 7:o=e.sent,(s=o.data).ocs.data.cursor&&t.$set(t.cursors,n,s.ocs.data.cursor),s.ocs.data.entries.length>0&&(u=t.results[n]).push.apply(u,ln(s.ocs.data.entries)),s.ocs.data.entries.length<t.defaultLimit&&t.$set(t.reached,n,!0),e.next=15;break;case 14:t.limits[n]&&t.limits[n]>=0&&(t.limits[n]+=t.defaultLimit,t.limits[n]>=t.results[n].length&&t.$set(t.reached,n,!0));case 15:null!==t.focused&&t.$nextTick((function(){t.focusIndex(t.focused)}));case 16:case"end":return e.stop()}}),e)})))()},limitIfAny:function(n,t){return t in this.limits?n.slice(0,this.limits[t]):n},getResultsList:function(){return this.$el.querySelectorAll(".unified-search__results .unified-search__result")},focusFirst:function(n){var t=this.getResultsList();t&&t.length>0&&(n&&n.preventDefault(),this.focused=0,this.focusIndex(this.focused))},focusNext:function(n){if(null!==this.focused){var t=this.getResultsList();t&&t.length>0&&this.focused+1<t.length&&(n.preventDefault(),this.focused++,this.focusIndex(this.focused))}else this.focusFirst(n)},focusPrev:function(n){if(null!==this.focused){var t=this.getResultsList();t&&t.length>0&&this.focused>0&&(n.preventDefault(),this.focused--,this.focusIndex(this.focused))}else this.focusFirst(n)},focusIndex:function(n){var t=this.getResultsList();t&&t[n]&&t[n].focus()},setFocusedIndex:function(n){var t=n.target,e=ln(this.getResultsList()).findIndex((function(n){return n===t}));e>-1&&(this.focused=e)},onClickFilter:function(n){this.query="".concat(this.query," ").concat(n).replace(/ {2}/g," ").trim(),this.onInput()}}},mn=gn,Cn=r(23338),vn={};vn.styleTagTransform=Q(),vn.setAttributes=G(),vn.insert=Z().bind(null,"head"),vn.domAPI=j(),vn.insertStyleElement=Y(),z()(Cn.Z,vn),Cn.Z&&Cn.Z.locals&&Cn.Z.locals;var _n=(0,X.Z)(mn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("HeaderMenu",{staticClass:"unified-search",attrs:{id:"unified-search","exclude-click-outside-classes":"popover",open:n.open,"aria-label":n.ariaLabel},on:{"update:open":function(t){n.open=t},open:n.onOpen,close:n.onClose},scopedSlots:n._u([{key:"trigger",fn:function(){return[e("Magnify",{staticClass:"unified-search__trigger",attrs:{size:22,"fill-color":"var(--color-primary-text)"}})]},proxy:!0}])},[n._v(" "),e("div",{staticClass:"unified-search__input-wrapper"},[e("label",{attrs:{for:"unified-search__input"}},[n._v(n._s(n.ariaLabel))]),n._v(" "),e("div",{staticClass:"unified-search__input-row"},[e("form",{staticClass:"unified-search__form",class:{"icon-loading-small":n.isLoading},attrs:{role:"search"},on:{submit:function(t){return t.preventDefault(),t.stopPropagation(),n.onInputEnter.apply(null,arguments)},reset:function(t){return t.preventDefault(),t.stopPropagation(),n.onReset.apply(null,arguments)}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:n.query,expression:"query"}],ref:"input",staticClass:"unified-search__form-input",class:{"unified-search__form-input--with-reset":!!n.query},attrs:{id:"unified-search__input",type:"search",placeholder:n.t("core","Search {types} …",{types:n.typesNames.join(", ")}),"aria-describedby":"unified-search-desc"},domProps:{value:n.query},on:{input:[function(t){t.target.composing||(n.query=t.target.value)},n.onInputDebounced],keypress:function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),t.stopPropagation(),n.onInputEnter.apply(null,arguments))}}}),n._v(" "),e("p",{staticClass:"hidden-visually",attrs:{id:"unified-search-desc"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("core","Search starts once you start typing"))+"\n\t\t\t\t")]),n._v(" "),n.query&&!n.isLoading?e("input",{staticClass:"unified-search__form-reset icon-close",attrs:{type:"reset","aria-label":n.t("core","Reset search"),value:""}}):n._e(),n._v(" "),!n.query||n.isLoading||n.enableLiveSearch?n._e():e("input",{staticClass:"unified-search__form-submit icon-confirm",attrs:{type:"submit","aria-label":n.t("core","Start search"),value:""}})]),n._v(" "),n.availableFilters.length>1?e("NcActions",{staticClass:"unified-search__filters",attrs:{placement:"bottom"}},n._l(n.availableFilters,(function(t){return e("NcActionButton",{key:t,attrs:{icon:"icon-filter",title:n.t("core","Search for {name} only",{name:n.typesMap[t]})},on:{click:function(e){return e.stopPropagation(),n.onClickFilter("in:"+t)}}},[n._v("\n\t\t\t\t\t"+n._s("in:"+t)+"\n\t\t\t\t")])})),1):n._e()],1)]),n._v(" "),n.hasResults?n._l(n.orderedResults,(function(t,r){var i=t.list,a=t.type;return e("ul",{key:a,staticClass:"unified-search__results",class:"unified-search__results-"+a,attrs:{"aria-label":n.typesMap[a]}},[e("h2",{staticClass:"unified-search__results-header"},[n._v("\n\t\t\t\t"+n._s(n.typesMap[a])+"\n\t\t\t")]),n._v(" "),n._l(n.limitIfAny(i,a),(function(t,i){return e("li",{key:t.resourceUrl},[e("SearchResult",n._b({attrs:{query:n.query,focused:0===n.focused&&0===r&&0===i},on:{focus:n.setFocusedIndex}},"SearchResult",t,!1))],1)})),n._v(" "),e("li",[n.reached[a]?n._e():e("SearchResult",{staticClass:"unified-search__result-more",attrs:{title:n.loading[a]?n.t("core","Loading more results …"):n.t("core","Load more results"),"icon-class":n.loading[a]?"icon-loading-small":""},on:{click:function(t){return t.stopPropagation(),n.loadMore(a)},focus:n.setFocusedIndex}})],1)],2)})):[n.isLoading?e("SearchResultPlaceholders"):n.isValidQuery?e("NcEmptyContent",{scopedSlots:n._u([{key:"icon",fn:function(){return[e("Magnify")]},proxy:!0}],null,!1,931131664)},[n.triggered?e("NcHighlight",{attrs:{text:n.t("core","No results for {query}",{query:n.query}),search:n.query}}):e("div",[n._v("\n\t\t\t\t"+n._s(n.t("core","Press enter to start searching"))+"\n\t\t\t")])],1):!n.isLoading||n.isShortQuery?e("NcEmptyContent",{scopedSlots:n._u([{key:"icon",fn:function(){return[e("Magnify")]},proxy:!0},n.isShortQuery?{key:"desc",fn:function(){return[n._v("\n\t\t\t\t"+n._s(n.n("core","Please enter {minSearchLength} character or more to search","Please enter {minSearchLength} characters or more to search",n.minSearchLength,{minSearchLength:n.minSearchLength}))+"\n\t\t\t")]},proxy:!0}:null],null,!0)},[n._v("\n\t\t\t"+n._s(n.t("core","Start typing to search"))+"\n\t\t\t")]):n._e()]],2)}),[],!1,null,"66445578",null),bn=_n.exports;r.nc=btoa((0,a.getRequestToken)());var yn=(0,i.IY)().setApp("unified-search").detectUser().build();s.ZP.mixin({data:function(){return{logger:yn}},methods:{t:o.translate,n:o.translatePlural}}),new s.ZP({el:"#unified-search",name:"UnifiedSearchRoot",render:function(n){return n(bn)}})},82965:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,'.header-menu__trigger[data-v-4ba23c22]{display:flex;align-items:center;justify-content:center;width:50px;height:44px;margin:2px 0;padding:0;cursor:pointer;opacity:.85}.header-menu--opened .header-menu__trigger[data-v-4ba23c22],.header-menu__trigger[data-v-4ba23c22]:hover,.header-menu__trigger[data-v-4ba23c22]:focus,.header-menu__trigger[data-v-4ba23c22]:active{opacity:1}.header-menu__trigger[data-v-4ba23c22]:focus-visible{outline:none}.header-menu__wrapper[data-v-4ba23c22]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0 8px;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));padding:8px;border-radius:var(--border-radius-large)}.header-menu__carret[data-v-4ba23c22]{position:absolute;z-index:2001;left:calc(50% - 10px);bottom:0;width:0;height:0;content:" ";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-4ba23c22]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:66px;max-height:calc(100vh - 100px)}',"",{version:3,sources:["webpack://./core/src/components/HeaderMenu.vue"],names:[],mappings:"AA2KC,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,YAAA,CACA,SAAA,CACA,cAAA,CACA,WAAA,CAGD,oMAIC,SAAA,CAGD,qDACC,YAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,YAAA,CACA,2DAAA,CACA,6CAAA,CACA,qDAAA,CACA,WAAA,CACA,wCAAA,CAGD,sCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,4BAAA,CACA,eAAA,CACA,8BAAA",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$externalMargin: 8px;\n\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 44px;\n\t\tmargin: 2px 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .85;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__trigger:focus-visible {\n\t\toutline: none;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0 $externalMargin;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t\tpadding: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tz-index: 2001; // Because __wrapper is 2000.\n\t\tleft: calc(50% - 10px);\n\t\tbottom: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: calc(100vw - 2 * $externalMargin);\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n"],sourceRoot:""}]),t.Z=o},17543:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__result[data-v-288e1e92]{display:flex;align-items:center;height:44px;padding:10px;border-bottom:1px solid var(--color-border);border-radius:var(--border-radius-large) !important}.unified-search__result[data-v-288e1e92]:last-child{border-bottom:none}.unified-search__result--focused[data-v-288e1e92],.unified-search__result[data-v-288e1e92]:active,.unified-search__result[data-v-288e1e92]:hover,.unified-search__result[data-v-288e1e92]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-288e1e92]{cursor:pointer}.unified-search__result-icon[data-v-288e1e92]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-288e1e92]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-288e1e92]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-288e1e92]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-288e1e92],.unified-search__result-actions[data-v-288e1e92]{flex:0 0 44px}.unified-search__result-content[data-v-288e1e92]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-288e1e92],.unified-search__result-line-two[data-v-288e1e92]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-288e1e92]{opacity:.7;font-size:var(--default-font-size)}","",{version:3,sources:["webpack://./core/src/components/UnifiedSearch/SearchResult.vue"],names:[],mappings:"AAyKA,yCACC,YAAA,CACA,kBAAA,CACA,WANgB,CAOhB,YANQ,CAOR,2CAAA,CACA,mDAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA7Be,CA8Bf,WA9Be,CA+Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAxEO,CA2ER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA",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@use "sass:math";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius-large) !important;\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\n}\n\n'],sourceRoot:""}]),t.Z=o},44201:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}","",{version:3,sources:["webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue"],names:[],mappings:"AA+DA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA",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$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\n}\n\n"],sourceRoot:""}]),t.Z=o},23338:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__trigger[data-v-66445578]{filter:var(--background-image-invert-if-bright)}.unified-search__input-wrapper[data-v-66445578]{position:sticky;z-index:2;top:0;display:inline-flex;flex-direction:column;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__input-wrapper label[for=unified-search__input][data-v-66445578]{align-self:flex-start;font-weight:bold;font-size:18px;margin-left:13px}.unified-search__form-input[data-v-66445578]{margin:0 !important}.unified-search__input-row[data-v-66445578]{display:flex;width:100%;align-items:center}.unified-search__filters[data-v-66445578]{margin:10px 0 10px 5px}.unified-search__filters ul[data-v-66445578]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-66445578]{position:relative;width:100%;margin:10px 0}.unified-search__form[data-v-66445578]::after{right:6px;left:auto}.unified-search__form-input[data-v-66445578],.unified-search__form-reset[data-v-66445578]{margin:3px}.unified-search__form-input[data-v-66445578]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-66445578],.unified-search__form-input[placeholder][data-v-66445578],.unified-search__form-input[data-v-66445578]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-66445578]::-webkit-search-decoration,.unified-search__form-input[data-v-66445578]::-webkit-search-cancel-button,.unified-search__form-input[data-v-66445578]::-webkit-search-results-button,.unified-search__form-input[data-v-66445578]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-66445578],.unified-search__form-input--with-reset[data-v-66445578]{padding-right:34px}.unified-search__form-reset[data-v-66445578],.unified-search__form-submit[data-v-66445578]{position:absolute;top:0;right:4px;width:28px;height:28px;min-height:30px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-66445578]:hover,.unified-search__form-reset[data-v-66445578]:focus,.unified-search__form-reset[data-v-66445578]:active,.unified-search__form-submit[data-v-66445578]:hover,.unified-search__form-submit[data-v-66445578]:focus,.unified-search__form-submit[data-v-66445578]:active{opacity:1}.unified-search__form-submit[data-v-66445578]{right:28px}.unified-search__results[data-v-66445578]{display:flex;flex-direction:column;gap:4px}.unified-search__results-header[data-v-66445578]{display:block;margin:10px;margin-bottom:6px;margin-left:16px;color:var(--color-primary-element);font-weight:normal;font-size:18px}.unified-search .unified-search__result-more[data-v-66445578]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-66445578]{margin:10vh 0}.unified-search .empty-content[data-v-66445578] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}","",{version:3,sources:["webpack://./core/src/views/UnifiedSearch.vue"],names:[],mappings:"AAgtBC,0CACC,+CAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,qBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAEA,iFACC,qBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CAIF,6CACC,mBAAA,CAGD,4CACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,0CACC,sBAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,aAAA,CAGA,8CACC,SAnDa,CAoDb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA/DY,CAgEZ,WA/Da,CAiEb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBArFW,CAyFb,2FACC,iBAAA,CACA,KAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,uTAGC,SAAA,CAIF,8CACC,UAAA,CAIF,0CAUC,YAAA,CACA,qBAAA,CACA,OAAA,CAXA,iDACC,aAAA,CACA,WAtHM,CAuHN,iBAAA,CACA,gBAAA,CACA,kCAAA,CACA,kBAAA,CACA,cAAA,CAOF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@use "sass:math";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\tfilter: var(--background-image-invert-if-bright);\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tlabel[for="unified-search__input"] {\n\t\t\talign-self: flex-start;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 18px;\n\t\t\tmargin-left: 13px;\n\t\t}\n\t}\n\n\t&__form-input {\n\t\tmargin: 0 !important;\n\t}\n\n\t&__input-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t}\n\n\t&__filters {\n\t\tmargin: $margin 0 $margin math.div($margin, 2);\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin 0;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset, &-submit {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 4px;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tmin-height: 30px;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&-submit {\n\t\t\tright: 28px;\n\t\t}\n\t}\n\n\t&__results {\n\t\t&-header {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-bottom: $margin - 4px;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcolor: var(--color-primary-element);\n\t\t\tfont-weight: normal;\n\t\t\tfont-size: 18px;\n\t\t}\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n\n'],sourceRoot:""}]),t.Z=o}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,r,a){if(!e){var o=1/0;for(l=0;l<n.length;l++){e=n[l][0],r=n[l][1],a=n[l][2];for(var s=!0,u=0;u<e.length;u++)(!1&a||o>=a)&&Object.keys(i.O).every((function(n){return i.O[n](e[u])}))?e.splice(u--,1):(s=!1,a<o&&(o=a));if(s){n.splice(l--,1);var c=r();void 0!==c&&(t=c)}}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]=[e,r,a]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=9671,function(){i.b=document.baseURI||self.location.href;var n={9671:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,a,o=e[0],s=e[1],u=e[2],c=0;if(o.some((function(t){return 0!==n[t]}))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(u)var l=u(i)}for(t&&t(e);c<o.length;c++)a=o[c],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(16757)}));a=i.O(a)}();
+//# sourceMappingURL=core-unified-search.js.map?v=5bd9fcf9b83ec2258f6f \ No newline at end of file
diff --git a/dist/core-unified-search.js.map b/dist/core-unified-search.js.map
index a71e2db4fe2..e0e3962adb1 100644
--- a/dist/core-unified-search.js.map
+++ b/dist/core-unified-search.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-unified-search.js?v=689d993289060c1248e2","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/HeaderMenu.vue","webpack://nextcloud/./core/src/components/HeaderMenu.vue?1d30","webpack://nextcloud/./core/src/components/HeaderMenu.vue?30e1","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=template&id=4ba23c22&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?780a","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=template&id=288e1e92&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?c1bc","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?7f72","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?d27d","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=template&id=66445578&scoped=true&","webpack:///nextcloud/core/src/unified-search.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=style&index=0&id=4ba23c22&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=288e1e92&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=66445578&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/runtime/nonce","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 2020, John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\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 { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nexport const defaultLimit = loadState('unified-search', 'limit-default')\nexport const minSearchLength = loadState('unified-search', 'min-search-length', 2)\nexport const enableLiveSearch = loadState('unified-search', 'live-search', true)\n\nexport const regexFilterIn = /(^|\\s)in:([a-z_-]+)/ig\nexport const regexFilterNot = /(^|\\s)-in:([a-z_-]+)/ig\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Get the list of available search providers\n *\n * @return {Promise<Array>}\n */\nexport async function getTypes() {\n\ttry {\n\t\tconst { data } = await axios.get(generateOcsUrl('search/providers'), {\n\t\t\tparams: {\n\t\t\t\t// Sending which location we're currently at\n\t\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t\t},\n\t\t})\n\t\tif ('ocs' in data && 'data' in data.ocs && Array.isArray(data.ocs.data) && data.ocs.data.length > 0) {\n\t\t\t// Providers are sorted by the api based on their order key\n\t\t\treturn data.ocs.data\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n\treturn []\n}\n\n/**\n * Get the list of available search providers\n *\n * @param {object} options destructuring object\n * @param {string} options.type the type to search\n * @param {string} options.query the search\n * @param {number|string|undefined} options.cursor the offset for paginated searches\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor }) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\tconst request = async () => axios.get(generateOcsUrl('search/providers/{type}/search', { type }), {\n\t\tcancelToken: cancelToken.token,\n\t\tparams: {\n\t\t\tterm: query,\n\t\t\tcursor,\n\t\t\t// Sending which location we're currently at\n\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.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!./HeaderMenu.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<div :id=\"id\"\n\t\tv-click-outside=\"clickOutsideConfig\"\n\t\t:class=\"{ 'header-menu--opened': opened }\"\n\t\tclass=\"header-menu\">\n\t\t<a class=\"header-menu__trigger\"\n\t\t\thref=\"#\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:aria-controls=\"`header-menu-${id}`\"\n\t\t\t:aria-expanded=\"opened.toString()\"\n\t\t\t@click.prevent=\"toggleMenu\">\n\t\t\t<slot name=\"trigger\" />\n\t\t</a>\n\t\t<div v-show=\"opened\" class=\"header-menu__carret\" />\n\t\t<div v-show=\"opened\"\n\t\t\t:id=\"`header-menu-${id}`\"\n\t\t\tclass=\"header-menu__wrapper\"\n\t\t\trole=\"menu\">\n\t\t\t<div class=\"header-menu__content\">\n\t\t\t\t<slot />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { directive as ClickOutside } from 'v-click-outside'\nimport excludeClickOutsideClasses from '@nextcloud/vue/dist/Mixins/excludeClickOutsideClasses'\n\nexport default {\n\tname: 'HeaderMenu',\n\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\n\tmixins: [\n\t\texcludeClickOutsideClasses,\n\t],\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\topened: this.open,\n\t\t\tclickOutsideConfig: {\n\t\t\t\thandler: this.closeMenu,\n\t\t\t\tmiddleware: this.clickOutsideMiddleware,\n\t\t\t},\n\t\t\tshortcutsDisabled: OCP.Accessibility.disableKeyboardShortcuts(),\n\t\t}\n\t},\n\n\twatch: {\n\t\topen(newVal) {\n\t\t\tthis.opened = newVal\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.opened) {\n\t\t\t\t\tthis.openMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener('keydown', this.onKeyDown)\n\t},\n\tbeforeDestroy() {\n\t\tdocument.removeEventListener('keydown', this.onKeyDown)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Toggle the current menu open state\n\t\t */\n\t\ttoggleMenu() {\n\t\t\t// Toggling current state\n\t\t\tif (!this.opened) {\n\t\t\t\tthis.openMenu()\n\t\t\t} else {\n\t\t\t\tthis.closeMenu()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Close the current menu\n\t\t */\n\t\tcloseMenu() {\n\t\t\tif (!this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = false\n\t\t\tthis.$emit('close')\n\t\t\tthis.$emit('update:open', false)\n\t\t},\n\n\t\t/**\n\t\t * Open the current menu\n\t\t */\n\t\topenMenu() {\n\t\t\tif (this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = true\n\t\t\tthis.$emit('open')\n\t\t\tthis.$emit('update:open', true)\n\t\t},\n\n\t\tonKeyDown(event) {\n\t\t\tif (this.shortcutsDisabled) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If opened and escape pressed, close\n\t\t\tif (event.key === 'Escape' && this.opened) {\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\t/** user cancelled the menu by pressing escape */\n\t\t\t\tthis.$emit('cancel')\n\n\t\t\t\t/** we do NOT fire a close event to differentiate cancel and close */\n\t\t\t\tthis.opened = false\n\t\t\t\tthis.$emit('update:open', false)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$externalMargin: 8px;\n\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 44px;\n\t\tmargin: 2px 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .85;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__trigger:focus-visible {\n\t\toutline: none;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0 $externalMargin;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t\tpadding: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tz-index: 2001; // Because __wrapper is 2000.\n\t\tleft: calc(50% - 10px);\n\t\tbottom: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: calc(100vw - 2 * $externalMargin);\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\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!./HeaderMenu.vue?vue&type=style&index=0&id=4ba23c22&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!./HeaderMenu.vue?vue&type=style&index=0&id=4ba23c22&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderMenu.vue?vue&type=template&id=4ba23c22&scoped=true&\"\nimport script from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderMenu.vue?vue&type=style&index=0&id=4ba23c22&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 \"4ba23c22\",\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',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.clickOutsideConfig),expression:\"clickOutsideConfig\"}],staticClass:\"header-menu\",class:{ 'header-menu--opened': _vm.opened },attrs:{\"id\":_vm.id}},[_c('a',{staticClass:\"header-menu__trigger\",attrs:{\"href\":\"#\",\"aria-label\":_vm.ariaLabel,\"aria-controls\":(\"header-menu-\" + _vm.id),\"aria-expanded\":_vm.opened.toString()},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMenu.apply(null, arguments)}}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__carret\"}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__wrapper\",attrs:{\"id\":(\"header-menu-\" + _vm.id),\"role\":\"menu\"}},[_c('div',{staticClass:\"header-menu__content\"},[_vm._t(\"default\")],2)])])}\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!./SearchResult.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!./SearchResult.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<a :href=\"resourceUrl || '#'\"\n\t\tclass=\"unified-search__result\"\n\t\t:class=\"{\n\t\t\t'unified-search__result--focused': focused,\n\t\t}\"\n\t\t@click=\"reEmitEvent\"\n\t\t@focus=\"reEmitEvent\">\n\n\t\t<!-- Icon describing the result -->\n\t\t<div class=\"unified-search__result-icon\"\n\t\t\t:class=\"{\n\t\t\t\t'unified-search__result-icon--rounded': rounded,\n\t\t\t\t'unified-search__result-icon--no-preview': !hasValidThumbnail && !loaded,\n\t\t\t\t'unified-search__result-icon--with-thumbnail': hasValidThumbnail && loaded,\n\t\t\t\t[icon]: !loaded && !isIconUrl,\n\t\t\t}\"\n\t\t\t:style=\"{\n\t\t\t\tbackgroundImage: isIconUrl ? `url(${icon})` : '',\n\t\t\t}\">\n\n\t\t\t<img v-if=\"hasValidThumbnail\"\n\t\t\t\tv-show=\"loaded\"\n\t\t\t\t:src=\"thumbnailUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\t@error=\"onError\"\n\t\t\t\t@load=\"onLoad\">\n\t\t</div>\n\n\t\t<!-- Title and sub-title -->\n\t\t<span class=\"unified-search__result-content\">\n\t\t\t<span class=\"unified-search__result-line-one\" :title=\"title\">\n\t\t\t\t<NcHighlight :text=\"title\" :search=\"query\" />\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"unified-search__result-line-two\" :title=\"subline\">{{ subline }}</span>\n\t\t</span>\n\t</a>\n</template>\n\n<script>\nimport NcHighlight from '@nextcloud/vue/dist/Components/NcHighlight'\n\nexport default {\n\tname: 'SearchResult',\n\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\n\tprops: {\n\t\tthumbnailUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tresourceUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\trounded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Only used for the first result as a visual feedback\n\t\t * so we can keep the search input focused but pressing\n\t\t * enter still opens the first result\n\t\t */\n\t\tfocused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\thasValidThumbnail: this.thumbnailUrl && this.thumbnailUrl.trim() !== '',\n\t\t\tloaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\t// If we're facing an absolute url\n\t\t\tif (this.icon.startsWith('/')) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// Otherwise, let's check if this is a valid url\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.icon)\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\twatch: {\n\t\t// Make sure to reset state on change even when vue recycle the component\n\t\tthumbnailUrl() {\n\t\t\tthis.hasValidThumbnail = this.thumbnailUrl && this.thumbnailUrl.trim() !== ''\n\t\t\tthis.loaded = false\n\t\t},\n\t},\n\n\tmethods: {\n\t\treEmitEvent(e) {\n\t\t\tthis.$emit(e.type, e)\n\t\t},\n\n\t\t/**\n\t\t * If the image fails to load, fallback to iconClass\n\t\t */\n\t\tonError() {\n\t\t\tthis.hasValidThumbnail = false\n\t\t},\n\n\t\tonLoad() {\n\t\t\tthis.loaded = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius-large) !important;\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\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!./SearchResult.vue?vue&type=style&index=0&id=288e1e92&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!./SearchResult.vue?vue&type=style&index=0&id=288e1e92&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResult.vue?vue&type=template&id=288e1e92&scoped=true&\"\nimport script from \"./SearchResult.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResult.vue?vue&type=style&index=0&id=288e1e92&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 \"288e1e92\",\n null\n \n)\n\nexport default component.exports","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"unified-search__result\",class:{\n\t\t'unified-search__result--focused': _vm.focused,\n\t},attrs:{\"href\":_vm.resourceUrl || '#'},on:{\"click\":_vm.reEmitEvent,\"focus\":_vm.reEmitEvent}},[_c('div',{staticClass:\"unified-search__result-icon\",class:( _obj = {\n\t\t\t'unified-search__result-icon--rounded': _vm.rounded,\n\t\t\t'unified-search__result-icon--no-preview': !_vm.hasValidThumbnail && !_vm.loaded,\n\t\t\t'unified-search__result-icon--with-thumbnail': _vm.hasValidThumbnail && _vm.loaded\n\t\t}, _obj[_vm.icon] = !_vm.loaded && !_vm.isIconUrl, _obj ),style:({\n\t\t\tbackgroundImage: _vm.isIconUrl ? (\"url(\" + _vm.icon + \")\") : '',\n\t\t})},[(_vm.hasValidThumbnail)?_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],attrs:{\"src\":_vm.thumbnailUrl,\"alt\":\"\"},on:{\"error\":_vm.onError,\"load\":_vm.onLoad}}):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"unified-search__result-content\"},[_c('span',{staticClass:\"unified-search__result-line-one\",attrs:{\"title\":_vm.title}},[_c('NcHighlight',{attrs:{\"text\":_vm.title,\"search\":_vm.query}})],1),_vm._v(\" \"),(_vm.subline)?_c('span',{staticClass:\"unified-search__result-line-two\",attrs:{\"title\":_vm.subline}},[_vm._v(_vm._s(_vm.subline))]):_vm._e()])])}\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!./SearchResultPlaceholders.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!./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"","<template>\n\t<ul>\n\t\t<!-- Placeholder animation -->\n\t\t<svg class=\"unified-search__result-placeholder-gradient\">\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"unified-search__result-placeholder-gradient\">\n\t\t\t\t\t<stop offset=\"0%\" :stop-color=\"light\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${light}; ${light}; ${dark}; ${dark}; ${light}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"100%\" :stop-color=\"dark\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${dark}; ${light}; ${light}; ${dark}; ${dark}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\n\t\t<!-- Placeholders -->\n\t\t<li v-for=\"placeholder in [1, 2, 3]\" :key=\"placeholder\">\n\t\t\t<svg class=\"unified-search__result-placeholder\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"url(#unified-search__result-placeholder-gradient)\">\n\t\t\t\t<rect class=\"unified-search__result-placeholder-icon\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-one\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-two\" :style=\"{width: `calc(${randWidth()}%)`}\" />\n\t\t\t</svg>\n\t\t</li>\n\t</ul>\n</template>\n\n<script>\nexport default {\n\tname: 'SearchResultPlaceholders',\n\n\tdata() {\n\t\treturn {\n\t\t\tlight: null,\n\t\t\tdark: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tconst styles = getComputedStyle(document.documentElement)\n\t\tthis.dark = styles.getPropertyValue('--color-placeholder-dark')\n\t\tthis.light = styles.getPropertyValue('--color-placeholder-light')\n\t},\n\n\tmethods: {\n\t\trandWidth() {\n\t\t\treturn Math.floor(Math.random() * 20) + 30\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\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!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&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!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&\"\nimport script from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&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 \"9ed03c40\",\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('ul',[_c('svg',{staticClass:\"unified-search__result-placeholder-gradient\"},[_c('defs',[_c('linearGradient',{attrs:{\"id\":\"unified-search__result-placeholder-gradient\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":_vm.light}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":(_vm.light + \"; \" + _vm.light + \"; \" + _vm.dark + \"; \" + _vm.dark + \"; \" + _vm.light),\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})]),_vm._v(\" \"),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":_vm.dark}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":(_vm.dark + \"; \" + _vm.light + \"; \" + _vm.light + \"; \" + _vm.dark + \"; \" + _vm.dark),\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})])],1)],1)]),_vm._v(\" \"),_vm._l(([1, 2, 3]),function(placeholder){return _c('li',{key:placeholder},[_c('svg',{staticClass:\"unified-search__result-placeholder\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"url(#unified-search__result-placeholder-gradient)\"}},[_c('rect',{staticClass:\"unified-search__result-placeholder-icon\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-one\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-two\",style:({width: (\"calc(\" + (_vm.randWidth()) + \"%)\")})})])])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<HeaderMenu id=\"unified-search\"\n\t\tclass=\"unified-search\"\n\t\texclude-click-outside-classes=\"popover\"\n\t\t:open.sync=\"open\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\">\n\t\t<!-- Header icon -->\n\t\t<template #trigger>\n\t\t\t<Magnify class=\"unified-search__trigger\"\n\t\t\t\t:size=\"22/* fit better next to other 20px icons */\"\n\t\t\t\tfill-color=\"var(--color-primary-text)\" />\n\t\t</template>\n\n\t\t<!-- Search form & filters wrapper -->\n\t\t<div class=\"unified-search__input-wrapper\">\n\t\t\t<label for=\"unified-search__input\">{{ ariaLabel }}</label>\n\t\t\t<div class=\"unified-search__input-row\">\n\t\t\t\t<form class=\"unified-search__form\"\n\t\t\t\t\trole=\"search\"\n\t\t\t\t\t:class=\"{'icon-loading-small': isLoading}\"\n\t\t\t\t\t@submit.prevent.stop=\"onInputEnter\"\n\t\t\t\t\t@reset.prevent.stop=\"onReset\">\n\t\t\t\t\t<!-- Search input -->\n\t\t\t\t\t<input ref=\"input\"\n\t\t\t\t\t\tid=\"unified-search__input\"\n\t\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\t\tclass=\"unified-search__form-input\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\t:class=\"{'unified-search__form-input--with-reset': !!query}\"\n\t\t\t\t\t\t:placeholder=\"t('core', 'Search {types} …', { types: typesNames.join(', ') })\"\n\t\t\t\t\t\taria-describedby=\"unified-search-desc\"\n\t\t\t\t\t\t@input=\"onInputDebounced\"\n\t\t\t\t\t\t@keypress.enter.prevent.stop=\"onInputEnter\">\n\t\t\t\t\t<p id=\"unified-search-desc\" class=\"hidden-visually\">\n\t\t\t\t\t\t{{ t('core', 'Search starts once you start typing') }}\n\t\t\t\t\t</p>\n\n\t\t\t\t\t<!-- Reset search button -->\n\t\t\t\t\t<input v-if=\"!!query && !isLoading\"\n\t\t\t\t\t\ttype=\"reset\"\n\t\t\t\t\t\tclass=\"unified-search__form-reset icon-close\"\n\t\t\t\t\t\t:aria-label=\"t('core','Reset search')\"\n\t\t\t\t\t\tvalue=\"\">\n\n\t\t\t\t\t<input v-if=\"!!query && !isLoading && !enableLiveSearch\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclass=\"unified-search__form-submit icon-confirm\"\n\t\t\t\t\t\t:aria-label=\"t('core','Start search')\"\n\t\t\t\t\t\tvalue=\"\">\n\t\t\t\t</form>\n\n\t\t\t\t<!-- Search filters -->\n\t\t\t\t<NcActions v-if=\"availableFilters.length > 1\" class=\"unified-search__filters\" placement=\"bottom\">\n\t\t\t\t\t<NcActionButton v-for=\"type in availableFilters\"\n\t\t\t\t\t\t:key=\"type\"\n\t\t\t\t\t\ticon=\"icon-filter\"\n\t\t\t\t\t\t:title=\"t('core', 'Search for {name} only', { name: typesMap[type] })\"\n\t\t\t\t\t\t@click.stop=\"onClickFilter(`in:${type}`)\">\n\t\t\t\t\t\t{{ `in:${type}` }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<template v-if=\"!hasResults\">\n\t\t\t<!-- Loading placeholders -->\n\t\t\t<SearchResultPlaceholders v-if=\"isLoading\" />\n\n\t\t\t<NcEmptyContent v-else-if=\"isValidQuery\">\n\t\t\t\t<NcHighlight v-if=\"triggered\" :text=\"t('core', 'No results for {query}', { query })\" :search=\"query\" />\n\t\t\t\t<div v-else>\n\t\t\t\t\t{{ t('core', 'Press enter to start searching') }}\n\t\t\t\t</div>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Magnify />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\n\t\t\t<NcEmptyContent v-else-if=\"!isLoading || isShortQuery\">\n\t\t\t\t{{ t('core', 'Start typing to search') }}\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Magnify />\n\t\t\t\t</template>\n\t\t\t\t<template v-if=\"isShortQuery\" #desc>\n\t\t\t\t\t{{ n('core',\n\t\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t\tminSearchLength,\n\t\t\t\t\t\t{minSearchLength}) }}\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t</template>\n\n\t\t<!-- Grouped search results -->\n\t\t<template v-else>\n\t\t\t<ul v-for=\"({list, type}, typesIndex) in orderedResults\"\n\t\t\t\t:key=\"type\"\n\t\t\t\tclass=\"unified-search__results\"\n\t\t\t\t:class=\"`unified-search__results-${type}`\"\n\t\t\t\t:aria-label=\"typesMap[type]\">\n\t\t\t\t<h2 class=\"unified-search__results-header\">\n\t\t\t\t\t{{ typesMap[type] }}\n\t\t\t\t</h2>\n\n\t\t\t\t<!-- Search results -->\n\t\t\t\t<li v-for=\"(result, index) in limitIfAny(list, type)\" :key=\"result.resourceUrl\">\n\t\t\t\t\t<SearchResult v-bind=\"result\"\n\t\t\t\t\t\t:query=\"query\"\n\t\t\t\t\t\t:focused=\"focused === 0 && typesIndex === 0 && index === 0\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\n\t\t\t\t<!-- Load more button -->\n\t\t\t\t<li>\n\t\t\t\t\t<SearchResult v-if=\"!reached[type]\"\n\t\t\t\t\t\tclass=\"unified-search__result-more\"\n\t\t\t\t\t\t:title=\"loading[type]\n\t\t\t\t\t\t\t? t('core', 'Loading more results …')\n\t\t\t\t\t\t\t: t('core', 'Load more results')\"\n\t\t\t\t\t\t:icon-class=\"loading[type] ? 'icon-loading-small' : ''\"\n\t\t\t\t\t\t@click.stop=\"loadMore(type)\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t</HeaderMenu>\n</template>\n\n<script>\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { minSearchLength, getTypes, search, defaultLimit, regexFilterIn, regexFilterNot, enableLiveSearch } from '../services/UnifiedSearchService'\nimport { showError } from '@nextcloud/dialogs'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport debounce from 'debounce'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'\nimport NcHighlight from '@nextcloud/vue/dist/Components/NcHighlight'\nimport Magnify from 'vue-material-design-icons/Magnify'\n\nimport HeaderMenu from '../components/HeaderMenu'\nimport SearchResult from '../components/UnifiedSearch/SearchResult'\nimport SearchResultPlaceholders from '../components/UnifiedSearch/SearchResultPlaceholders'\n\nconst REQUEST_FAILED = 0\nconst REQUEST_OK = 1\nconst REQUEST_CANCELED = 2\n\nexport default {\n\tname: 'UnifiedSearch',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcEmptyContent,\n\t\tHeaderMenu,\n\t\tNcHighlight,\n\t\tMagnify,\n\t\tSearchResult,\n\t\tSearchResultPlaceholders,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttypes: [],\n\n\t\t\t// Cursors per types\n\t\t\tcursors: {},\n\t\t\t// Various search limits per types\n\t\t\tlimits: {},\n\t\t\t// Loading types\n\t\t\tloading: {},\n\t\t\t// Reached search types\n\t\t\treached: {},\n\t\t\t// Pending cancellable requests\n\t\t\trequests: [],\n\t\t\t// List of all results\n\t\t\tresults: {},\n\n\t\t\tquery: '',\n\t\t\tfocused: null,\n\t\t\ttriggered: false,\n\n\t\t\tdefaultLimit,\n\t\t\tminSearchLength,\n\t\t\tenableLiveSearch,\n\n\t\t\topen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttypesIDs() {\n\t\t\treturn this.types.map(type => type.id)\n\t\t},\n\t\ttypesNames() {\n\t\t\treturn this.types.map(type => type.name)\n\t\t},\n\t\ttypesMap() {\n\t\t\treturn this.types.reduce((prev, curr) => {\n\t\t\t\tprev[curr.id] = curr.name\n\t\t\t\treturn prev\n\t\t\t}, {})\n\t\t},\n\n\t\tariaLabel() {\n\t\t\treturn t('core', 'Search')\n\t\t},\n\n\t\t/**\n\t\t * Is there any result to display\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasResults() {\n\t\t\treturn Object.keys(this.results).length !== 0\n\t\t},\n\n\t\t/**\n\t\t * Return ordered results\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\torderedResults() {\n\t\t\treturn this.typesIDs\n\t\t\t\t.filter(type => type in this.results)\n\t\t\t\t.map(type => ({\n\t\t\t\t\ttype,\n\t\t\t\t\tlist: this.results[type],\n\t\t\t\t}))\n\t\t},\n\n\t\t/**\n\t\t * Available filters\n\t\t * We only show filters that are available on the results\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tavailableFilters() {\n\t\t\treturn Object.keys(this.results)\n\t\t},\n\n\t\t/**\n\t\t * Applied filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersIn() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterIn.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[2])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Applied anti filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersNot() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterNot.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[2])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Is the current search too short\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisShortQuery() {\n\t\t\treturn this.query && this.query.trim().length < minSearchLength\n\t\t},\n\n\t\t/**\n\t\t * Is the current search valid\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && !this.isShortQuery\n\t\t},\n\n\t\t/**\n\t\t * Have we reached the end of all types searches\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisDoneSearching() {\n\t\t\treturn Object.values(this.reached).every(state => state === false)\n\t\t},\n\n\t\t/**\n\t\t * Is there any search in progress\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisLoading() {\n\t\t\treturn Object.values(this.loading).some(state => state === true)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tsubscribe('files:navigation:changed', this.resetForm)\n\t\tthis.types = await getTypes()\n\t\tthis.logger.debug('Unified Search initialized with the following providers', this.types)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('files:navigation:changed', this.resetForm)\n\t},\n\n\tmounted() {\n\t\tif (OCP.Accessibility.disableKeyboardShortcuts()) {\n\t\t\treturn\n\t\t}\n\n\t\tdocument.addEventListener('keydown', (event) => {\n\t\t\t// if not already opened, allows us to trigger default browser on second keydown\n\t\t\tif (event.ctrlKey && event.key === 'f' && !this.open) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.open = true\n\t\t\t\tthis.focusInput()\n\t\t\t}\n\n\t\t\t// https://www.w3.org/WAI/GL/wiki/Using_ARIA_menus\n\t\t\tif (this.open) {\n\t\t\t\t// If arrow down, focus next result\n\t\t\t\tif (event.key === 'ArrowDown') {\n\t\t\t\t\tthis.focusNext(event)\n\t\t\t\t}\n\n\t\t\t\t// If arrow up, focus prev result\n\t\t\t\tif (event.key === 'ArrowUp') {\n\t\t\t\t\tthis.focusPrev(event)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tmethods: {\n\t\tasync onOpen() {\n\t\t\tthis.focusInput()\n\t\t\t// Update types list in the background\n\t\t\tthis.types = await getTypes()\n\t\t},\n\t\tonClose() {\n\t\t\temit('nextcloud:unified-search.close')\n\t\t},\n\n\t\tresetForm() {\n\t\t\tthis.$el.querySelector('form[role=\"search\"]').reset()\n\t\t},\n\n\t\t/**\n\t\t * Reset the search state\n\t\t */\n\t\tonReset() {\n\t\t\temit('nextcloud:unified-search.reset')\n\t\t\tthis.logger.debug('Search reset')\n\t\t\tthis.query = ''\n\t\t\tthis.resetState()\n\t\t\tthis.focusInput()\n\t\t},\n\t\tasync resetState() {\n\t\t\tthis.cursors = {}\n\t\t\tthis.limits = {}\n\t\t\tthis.reached = {}\n\t\t\tthis.results = {}\n\t\t\tthis.focused = null\n\t\t\tthis.triggered = false\n\t\t\tawait this.cancelPendingRequests()\n\t\t},\n\n\t\t/**\n\t\t * Cancel any ongoing searches\n\t\t */\n\t\tasync cancelPendingRequests() {\n\t\t\t// Cloning so we can keep processing other requests\n\t\t\tconst requests = this.requests.slice(0)\n\t\t\tthis.requests = []\n\n\t\t\t// Cancel all pending requests\n\t\t\tawait Promise.all(requests.map(cancel => cancel()))\n\t\t},\n\n\t\t/**\n\t\t * Focus the search input on next tick\n\t\t */\n\t\tfocusInput() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.focus()\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * If we have results already, open first one\n\t\t * If not, trigger the search again\n\t\t */\n\t\tonInputEnter() {\n\t\t\tif (this.hasResults) {\n\t\t\t\tconst results = this.getResultsList()\n\t\t\t\tresults[0].click()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onInput()\n\t\t},\n\n\t\t/**\n\t\t * Start searching on input\n\t\t */\n\t\tasync onInput() {\n\t\t\t// emit the search query\n\t\t\temit('nextcloud:unified-search.search', { query: this.query })\n\n\t\t\t// Do not search if not long enough\n\t\t\tif (this.query.trim() === '' || this.isShortQuery) {\n\t\t\t\tfor (const type of this.typesIDs) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet types = this.typesIDs\n\t\t\tlet query = this.query\n\n\t\t\t// Filter out types\n\t\t\tif (this.usedFiltersNot.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersNot.indexOf(type) === -1)\n\t\t\t}\n\n\t\t\t// Only use those filters if any and check if they are valid\n\t\t\tif (this.usedFiltersIn.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersIn.indexOf(type) > -1)\n\t\t\t}\n\n\t\t\t// Remove any filters from the query\n\t\t\tquery = query.replace(regexFilterIn, '').replace(regexFilterNot, '')\n\n\t\t\t// Reset search if the query changed\n\t\t\tawait this.resetState()\n\t\t\tthis.triggered = true\n\n\t\t\tif (!types.length) {\n\t\t\t\t// no results since no types were selected\n\t\t\t\tthis.logger.error('No types to search in')\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$set(this.loading, 'all', true)\n\t\t\tthis.logger.debug(`Searching ${query} in`, types)\n\n\t\t\tPromise.all(types.map(async type => {\n\t\t\t\ttry {\n\t\t\t\t\t// Init cancellable request\n\t\t\t\t\tconst { request, cancel } = search({ type, query })\n\t\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t\t// Fetch results\n\t\t\t\t\tconst { data } = await request()\n\n\t\t\t\t\t// Process results\n\t\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\t\tthis.$set(this.results, type, data.ocs.data.entries)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Save cursor if any\n\t\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t\t} else if (!data.ocs.data.isPaginated) {\n\t\t\t\t\t// If no cursor and no pagination, we save the default amount\n\t\t\t\t\t// provided by server's initial state `defaultLimit`\n\t\t\t\t\t\tthis.$set(this.limits, type, this.defaultLimit)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if we reached end of pagination\n\t\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t\t}\n\n\t\t\t\t\t// If none already focused, focus the first rendered result\n\t\t\t\t\tif (this.focused === null) {\n\t\t\t\t\t\tthis.focused = 0\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_OK\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\n\t\t\t\t\t// If this is not a cancelled throw\n\t\t\t\t\tif (error.response && error.response.status) {\n\t\t\t\t\t\tthis.logger.error(`Error searching for ${this.typesMap[type]}`, error)\n\t\t\t\t\t\tshowError(this.t('core', 'An error occurred while searching for {type}', { type: this.typesMap[type] }))\n\t\t\t\t\t\treturn REQUEST_FAILED\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_CANCELED\n\t\t\t\t}\n\t\t\t})).then(results => {\n\t\t\t\t// Do not declare loading finished if the request have been cancelled\n\t\t\t\t// This means another search was triggered and we're therefore still loading\n\t\t\t\tif (results.some(result => result === REQUEST_CANCELED)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// We finished all searches\n\t\t\t\tthis.loading = {}\n\t\t\t})\n\t\t},\n\t\tonInputDebounced: enableLiveSearch\n\t\t\t? debounce(function(e) {\n\t\t\t\tthis.onInput(e)\n\t\t\t}, 500)\n\t\t\t: function() {\n\t\t\t\tthis.triggered = false\n\t\t\t},\n\n\t\t/**\n\t\t * Load more results for the provided type\n\t\t *\n\t\t * @param {string} type type\n\t\t */\n\t\tasync loadMore(type) {\n\t\t\t// If already loading, ignore\n\t\t\tif (this.loading[type]) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.cursors[type]) {\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = search({ type, query: this.query, cursor: this.cursors[type] })\n\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t// Fetch results\n\t\t\t\tconst { data } = await request()\n\n\t\t\t\t// Save cursor if any\n\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t}\n\n\t\t\t\t// Process results\n\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\tthis.results[type].push(...data.ocs.data.entries)\n\t\t\t\t}\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t} else\n\n\t\t\t// If no cursor, we might have all the results already,\n\t\t\t// let's fake pagination and show the next xxx entries\n\t\t\tif (this.limits[type] && this.limits[type] >= 0) {\n\t\t\t\tthis.limits[type] += this.defaultLimit\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (this.limits[type] >= this.results[type].length) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Focus result after render\n\t\t\tif (this.focused !== null) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Return a subset of the array if the search provider\n\t\t * doesn't supports pagination\n\t\t *\n\t\t * @param {Array} list the results\n\t\t * @param {string} type the type\n\t\t * @return {Array}\n\t\t */\n\t\tlimitIfAny(list, type) {\n\t\t\tif (type in this.limits) {\n\t\t\t\treturn list.slice(0, this.limits[type])\n\t\t\t}\n\t\t\treturn list\n\t\t},\n\n\t\tgetResultsList() {\n\t\t\treturn this.$el.querySelectorAll('.unified-search__results .unified-search__result')\n\t\t},\n\n\t\t/**\n\t\t * Focus the first result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusFirst(event) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results.length > 0) {\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\tthis.focused = 0\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the next result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusNext(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the last, focus the next one\n\t\t\tif (results && results.length > 0 && this.focused + 1 < results.length) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused++\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the previous result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusPrev(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the first, focus the previous one\n\t\t\tif (results && results.length > 0 && this.focused > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused--\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Focus the specified result index if it exists\n\t\t *\n\t\t * @param {number} index the result index\n\t\t */\n\t\tfocusIndex(index) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results[index]) {\n\t\t\t\tresults[index].focus()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set the current focused element based on the target\n\t\t *\n\t\t * @param {Event} event the focus event\n\t\t */\n\t\tsetFocusedIndex(event) {\n\t\t\tconst entry = event.target\n\t\t\tconst results = this.getResultsList()\n\t\t\tconst index = [...results].findIndex(search => search === entry)\n\t\t\tif (index > -1) {\n\t\t\t\t// let's not use focusIndex as the entry is already focused\n\t\t\t\tthis.focused = index\n\t\t\t}\n\t\t},\n\n\t\tonClickFilter(filter) {\n\t\t\tthis.query = `${this.query} ${filter}`\n\t\t\t\t.replace(/ {2}/g, ' ')\n\t\t\t\t.trim()\n\t\t\tthis.onInput()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\tfilter: var(--background-image-invert-if-bright);\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tlabel[for=\"unified-search__input\"] {\n\t\t\talign-self: flex-start;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 18px;\n\t\t\tmargin-left: 13px;\n\t\t}\n\t}\n\n\t&__form-input {\n\t\tmargin: 0 !important;\n\t}\n\n\t&__input-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t}\n\n\t&__filters {\n\t\tmargin: $margin 0 $margin math.div($margin, 2);\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin 0;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset, &-submit {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 4px;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tmin-height: 30px;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&-submit {\n\t\t\tright: 28px;\n\t\t}\n\t}\n\n\t&__results {\n\t\t&-header {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-bottom: $margin - 4px;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcolor: var(--color-primary-element);\n\t\t\tfont-weight: normal;\n\t\t\tfont-size: 18px;\n\t\t}\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.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!./UnifiedSearch.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!./UnifiedSearch.vue?vue&type=style&index=0&id=66445578&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!./UnifiedSearch.vue?vue&type=style&index=0&id=66445578&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearch.vue?vue&type=template&id=66445578&scoped=true&\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=66445578&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 \"66445578\",\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('HeaderMenu',{staticClass:\"unified-search\",attrs:{\"id\":\"unified-search\",\"exclude-click-outside-classes\":\"popover\",\"open\":_vm.open,\"aria-label\":_vm.ariaLabel},on:{\"update:open\":function($event){_vm.open=$event},\"open\":_vm.onOpen,\"close\":_vm.onClose},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Magnify',{staticClass:\"unified-search__trigger\",attrs:{\"size\":22/* fit better next to other 20px icons */,\"fill-color\":\"var(--color-primary-text)\"}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-wrapper\"},[_c('label',{attrs:{\"for\":\"unified-search__input\"}},[_vm._v(_vm._s(_vm.ariaLabel))]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-row\"},[_c('form',{staticClass:\"unified-search__form\",class:{'icon-loading-small': _vm.isLoading},attrs:{\"role\":\"search\"},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)},\"reset\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onReset.apply(null, arguments)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"input\",staticClass:\"unified-search__form-input\",class:{'unified-search__form-input--with-reset': !!_vm.query},attrs:{\"id\":\"unified-search__input\",\"type\":\"search\",\"placeholder\":_vm.t('core', 'Search {types} …', { types: _vm.typesNames.join(', ') }),\"aria-describedby\":\"unified-search-desc\"},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.query=$event.target.value},_vm.onInputDebounced],\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)}}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"unified-search-desc\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search starts once you start typing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading)?_c('input',{staticClass:\"unified-search__form-reset icon-close\",attrs:{\"type\":\"reset\",\"aria-label\":_vm.t('core','Reset search'),\"value\":\"\"}}):_vm._e(),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading && !_vm.enableLiveSearch)?_c('input',{staticClass:\"unified-search__form-submit icon-confirm\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('core','Start search'),\"value\":\"\"}}):_vm._e()]),_vm._v(\" \"),(_vm.availableFilters.length > 1)?_c('NcActions',{staticClass:\"unified-search__filters\",attrs:{\"placement\":\"bottom\"}},_vm._l((_vm.availableFilters),function(type){return _c('NcActionButton',{key:type,attrs:{\"icon\":\"icon-filter\",\"title\":_vm.t('core', 'Search for {name} only', { name: _vm.typesMap[type] })},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClickFilter((\"in:\" + type))}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s((\"in:\" + type))+\"\\n\\t\\t\\t\\t\")])}),1):_vm._e()],1)]),_vm._v(\" \"),(!_vm.hasResults)?[(_vm.isLoading)?_c('SearchResultPlaceholders'):(_vm.isValidQuery)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true}],null,false,931131664)},[(_vm.triggered)?_c('NcHighlight',{attrs:{\"text\":_vm.t('core', 'No results for {query}', { query: _vm.query }),\"search\":_vm.query}}):_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Press enter to start searching'))+\"\\n\\t\\t\\t\")])],1):(!_vm.isLoading || _vm.isShortQuery)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true},(_vm.isShortQuery)?{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('core',\n\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t_vm.minSearchLength,\n\t\t\t\t\t{minSearchLength: _vm.minSearchLength}))+\"\\n\\t\\t\\t\")]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Start typing to search'))+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._l((_vm.orderedResults),function(ref,typesIndex){\n\t\t\t\t\tvar list = ref.list;\n\t\t\t\t\tvar type = ref.type;\nreturn _c('ul',{key:type,staticClass:\"unified-search__results\",class:(\"unified-search__results-\" + type),attrs:{\"aria-label\":_vm.typesMap[type]}},[_c('h2',{staticClass:\"unified-search__results-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.typesMap[type])+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.limitIfAny(list, type)),function(result,index){return _c('li',{key:result.resourceUrl},[_c('SearchResult',_vm._b({attrs:{\"query\":_vm.query,\"focused\":_vm.focused === 0 && typesIndex === 0 && index === 0},on:{\"focus\":_vm.setFocusedIndex}},'SearchResult',result,false))],1)}),_vm._v(\" \"),_c('li',[(!_vm.reached[type])?_c('SearchResult',{staticClass:\"unified-search__result-more\",attrs:{\"title\":_vm.loading[type]\n\t\t\t\t\t\t? _vm.t('core', 'Loading more results …')\n\t\t\t\t\t\t: _vm.t('core', 'Load more results'),\"icon-class\":_vm.loading[type] ? 'icon-loading-small' : ''},on:{\"click\":function($event){$event.stopPropagation();return _vm.loadMore(type)},\"focus\":_vm.setFocusedIndex}}):_vm._e()],1)],2)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 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\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport UnifiedSearch from './views/UnifiedSearch.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst logger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default new Vue({\n\tel: '#unified-search',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UnifiedSearchRoot',\n\trender: h => h(UnifiedSearch),\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, \".header-menu__trigger[data-v-4ba23c22]{display:flex;align-items:center;justify-content:center;width:50px;height:44px;margin:2px 0;padding:0;cursor:pointer;opacity:.85}.header-menu--opened .header-menu__trigger[data-v-4ba23c22],.header-menu__trigger[data-v-4ba23c22]:hover,.header-menu__trigger[data-v-4ba23c22]:focus,.header-menu__trigger[data-v-4ba23c22]:active{opacity:1}.header-menu__trigger[data-v-4ba23c22]:focus-visible{outline:none}.header-menu__wrapper[data-v-4ba23c22]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0 8px;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));padding:8px;border-radius:var(--border-radius-large)}.header-menu__carret[data-v-4ba23c22]{position:absolute;z-index:2001;left:calc(50% - 10px);bottom:0;width:0;height:0;content:\\\" \\\";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-4ba23c22]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:66px;max-height:calc(100vh - 100px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/HeaderMenu.vue\"],\"names\":[],\"mappings\":\"AA2KC,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,YAAA,CACA,SAAA,CACA,cAAA,CACA,WAAA,CAGD,oMAIC,SAAA,CAGD,qDACC,YAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,YAAA,CACA,2DAAA,CACA,6CAAA,CACA,qDAAA,CACA,WAAA,CACA,wCAAA,CAGD,sCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,4BAAA,CACA,eAAA,CACA,8BAAA\",\"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$externalMargin: 8px;\\n\\n.header-menu {\\n\\t&__trigger {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 50px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 2px 0;\\n\\t\\tpadding: 0;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .85;\\n\\t}\\n\\n\\t&--opened &__trigger,\\n\\t&__trigger:hover,\\n\\t&__trigger:focus,\\n\\t&__trigger:active {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t&__trigger:focus-visible {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tposition: fixed;\\n\\t\\tz-index: 2000;\\n\\t\\ttop: 50px;\\n\\t\\tright: 0;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmargin: 0 $externalMargin;\\n\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\\n\\t\\tpadding: 8px;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&__carret {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 2001; // Because __wrapper is 2000.\\n\\t\\tleft: calc(50% - 10px);\\n\\t\\tbottom: 0;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tcontent: ' ';\\n\\t\\tpointer-events: none;\\n\\t\\tborder: 10px solid transparent;\\n\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__content {\\n\\t\\toverflow: auto;\\n\\t\\twidth: 350px;\\n\\t\\tmax-width: calc(100vw - 2 * $externalMargin);\\n\\t\\tmin-height: calc(44px * 1.5);\\n\\t\\tmax-height: calc(100vh - 50px * 2);\\n\\t}\\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, \".unified-search__result[data-v-288e1e92]{display:flex;align-items:center;height:44px;padding:10px;border-bottom:1px solid var(--color-border);border-radius:var(--border-radius-large) !important}.unified-search__result[data-v-288e1e92]:last-child{border-bottom:none}.unified-search__result--focused[data-v-288e1e92],.unified-search__result[data-v-288e1e92]:active,.unified-search__result[data-v-288e1e92]:hover,.unified-search__result[data-v-288e1e92]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-288e1e92]{cursor:pointer}.unified-search__result-icon[data-v-288e1e92]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-288e1e92]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-288e1e92]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-288e1e92]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-288e1e92],.unified-search__result-actions[data-v-288e1e92]{flex:0 0 44px}.unified-search__result-content[data-v-288e1e92]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-288e1e92],.unified-search__result-line-two[data-v-288e1e92]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-288e1e92]{opacity:.7;font-size:var(--default-font-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AAyKA,yCACC,YAAA,CACA,kBAAA,CACA,WANgB,CAOhB,YANQ,CAOR,2CAAA,CACA,mDAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA7Be,CA8Bf,WA9Be,CA+Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAxEO,CA2ER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA\",\"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@use \\\"sass:math\\\";\\n\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: $clickable-area;\\n\\tpadding: $margin;\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\tborder-radius: var(--border-radius-large) !important;\\n\\n\\t// Load more entry,\\n\\t&:last-child {\\n\\t\\tborder-bottom: none;\\n\\t}\\n\\n\\t&--focused,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t* {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: 32px;\\n\\t\\t&--rounded {\\n\\t\\t\\tborder-radius: math.div($clickable-area, 2);\\n\\t\\t}\\n\\t\\t&--no-preview {\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t}\\n\\t\\t&--with-thumbnail {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t&--with-thumbnail:not(&--rounded) {\\n\\t\\t\\t// compensate for border\\n\\t\\t\\tmax-width: $clickable-area - 2px;\\n\\t\\t\\tmax-height: $clickable-area - 2px;\\n\\t\\t\\tborder: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\t// Make sure to keep ratio\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tobject-fit: cover;\\n\\t\\t\\tobject-position: center;\\n\\t\\t}\\n\\t}\\n\\n\\t&-icon,\\n\\t&-actions {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t}\\n\\n\\t&-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-wrap: wrap;\\n\\t\\t// Set to minimum and gro from it\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $margin;\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\toverflow: hidden;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tmargin: 1px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Use the same color as the `a`\\n\\t\\tcolor: inherit;\\n\\t\\tfont-size: inherit;\\n\\t}\\n\\t&-line-two {\\n\\t\\topacity: .7;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\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, \".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue\"],\"names\":[],\"mappings\":\"AA+DA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA\",\"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$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result-placeholder-gradient {\\n\\tposition: fixed;\\n\\theight: 0;\\n\\twidth: 0;\\n\\tz-index: -1;\\n}\\n\\n.unified-search__result-placeholder {\\n\\twidth: calc(100% - 2 * #{$margin});\\n\\theight: $clickable-area;\\n\\tmargin: $margin;\\n\\n\\t&-icon {\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\trx: var(--border-radius);\\n\\t\\try: var(--border-radius);\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\twidth: calc(100% - #{$margin + $clickable-area});\\n\\t\\theight: 1em;\\n\\t\\tx: $margin + $clickable-area;\\n\\t}\\n\\n\\t&-line-one {\\n\\t\\ty: 5px;\\n\\t}\\n\\n\\t&-line-two {\\n\\t\\ty: 25px;\\n\\t}\\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, \".unified-search__trigger[data-v-66445578]{filter:var(--background-image-invert-if-bright)}.unified-search__input-wrapper[data-v-66445578]{position:sticky;z-index:2;top:0;display:inline-flex;flex-direction:column;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__input-wrapper label[for=unified-search__input][data-v-66445578]{align-self:flex-start;font-weight:bold;font-size:18px;margin-left:13px}.unified-search__form-input[data-v-66445578]{margin:0 !important}.unified-search__input-row[data-v-66445578]{display:flex;width:100%;align-items:center}.unified-search__filters[data-v-66445578]{margin:10px 0 10px 5px}.unified-search__filters ul[data-v-66445578]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-66445578]{position:relative;width:100%;margin:10px 0}.unified-search__form[data-v-66445578]::after{right:6px;left:auto}.unified-search__form-input[data-v-66445578],.unified-search__form-reset[data-v-66445578]{margin:3px}.unified-search__form-input[data-v-66445578]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-66445578],.unified-search__form-input[placeholder][data-v-66445578],.unified-search__form-input[data-v-66445578]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-66445578]::-webkit-search-decoration,.unified-search__form-input[data-v-66445578]::-webkit-search-cancel-button,.unified-search__form-input[data-v-66445578]::-webkit-search-results-button,.unified-search__form-input[data-v-66445578]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-66445578],.unified-search__form-input--with-reset[data-v-66445578]{padding-right:34px}.unified-search__form-reset[data-v-66445578],.unified-search__form-submit[data-v-66445578]{position:absolute;top:0;right:4px;width:28px;height:28px;min-height:30px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-66445578]:hover,.unified-search__form-reset[data-v-66445578]:focus,.unified-search__form-reset[data-v-66445578]:active,.unified-search__form-submit[data-v-66445578]:hover,.unified-search__form-submit[data-v-66445578]:focus,.unified-search__form-submit[data-v-66445578]:active{opacity:1}.unified-search__form-submit[data-v-66445578]{right:28px}.unified-search__results[data-v-66445578]{display:flex;flex-direction:column;gap:4px}.unified-search__results-header[data-v-66445578]{display:block;margin:10px;margin-bottom:6px;margin-left:16px;color:var(--color-primary-element);font-weight:normal;font-size:18px}.unified-search .unified-search__result-more[data-v-66445578]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-66445578]{margin:10vh 0}.unified-search .empty-content[data-v-66445578] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAgtBC,0CACC,+CAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,qBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAEA,iFACC,qBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CAIF,6CACC,mBAAA,CAGD,4CACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,0CACC,sBAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,aAAA,CAGA,8CACC,SAnDa,CAoDb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA/DY,CAgEZ,WA/Da,CAiEb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBArFW,CAyFb,2FACC,iBAAA,CACA,KAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,uTAGC,SAAA,CAIF,8CACC,UAAA,CAIF,0CAUC,YAAA,CACA,qBAAA,CACA,OAAA,CAXA,iDACC,aAAA,CACA,WAtHM,CAuHN,iBAAA,CACA,gBAAA,CACA,kCAAA,CACA,kBAAA,CACA,cAAA,CAOF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$margin: 10px;\\n$input-height: 34px;\\n$input-padding: 6px;\\n\\n.unified-search {\\n\\t&__trigger {\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\t}\\n\\n\\t&__input-wrapper {\\n\\t\\tposition: sticky;\\n\\t\\t// above search results\\n\\t\\tz-index: 2;\\n\\t\\ttop: 0;\\n\\t\\tdisplay: inline-flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tlabel[for=\\\"unified-search__input\\\"] {\\n\\t\\t\\talign-self: flex-start;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tmargin-left: 13px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form-input {\\n\\t\\tmargin: 0 !important;\\n\\t}\\n\\n\\t&__input-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin: $margin 0 $margin math.div($margin, 2);\\n\\t\\tul {\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form {\\n\\t\\tposition: relative;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: $margin 0;\\n\\n\\t\\t// Loading spinner\\n\\t\\t&::after {\\n\\t\\t\\tright: $input-padding;\\n\\t\\t\\tleft: auto;\\n\\t\\t}\\n\\n\\t\\t&-input,\\n\\t\\t&-reset {\\n\\t\\t\\tmargin: math.div($input-padding, 2);\\n\\t\\t}\\n\\n\\t\\t&-input {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: $input-height;\\n\\t\\t\\tpadding: $input-padding;\\n\\n\\t\\t\\t&,\\n\\t\\t\\t&[placeholder],\\n\\t\\t\\t&::placeholder {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Hide webkit clear search\\n\\t\\t\\t&::-webkit-search-decoration,\\n\\t\\t\\t&::-webkit-search-cancel-button,\\n\\t\\t\\t&::-webkit-search-results-button,\\n\\t\\t\\t&::-webkit-search-results-decoration {\\n\\t\\t\\t\\t-webkit-appearance: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Ellipsis earlier if reset button is here\\n\\t\\t\\t.icon-loading-small &,\\n\\t\\t\\t&--with-reset {\\n\\t\\t\\t\\tpadding-right: $input-height;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-reset, &-submit {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 4px;\\n\\t\\t\\twidth: $input-height - $input-padding;\\n\\t\\t\\theight: $input-height - $input-padding;\\n\\t\\t\\tmin-height: 30px;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\tmargin-right: 0;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-submit {\\n\\t\\t\\tright: 28px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__results {\\n\\t\\t&-header {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmargin: $margin;\\n\\t\\t\\tmargin-bottom: $margin - 4px;\\n\\t\\t\\tmargin-left: $margin + $input-padding;\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t}\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\t}\\n\\n\\t.unified-search__result-more::v-deep {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t.empty-content {\\n\\t\\tmargin: 10vh 0;\\n\\n\\t\\t::v-deep .empty-content__title {\\n\\t\\t\\tfont-weight: normal;\\n font-size: var(--default-font-size);\\n\\t\\t\\tpadding: 0 15px;\\n\\t\\t\\ttext-align: center;\\n\\t\\t}\\n\\t}\\n}\\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 = 9671;","__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\t9671: 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));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(16757); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","defaultLimit","loadState","minSearchLength","enableLiveSearch","regexFilterIn","regexFilterNot","getTypes","axios","generateOcsUrl","params","from","window","location","pathname","replace","search","data","ocs","Array","isArray","length","console","error","type","query","cursor","cancelToken","request","token","term","cancel","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","directives","name","rawName","value","expression","staticClass","class","opened","attrs","id","ariaLabel","toString","on","$event","preventDefault","toggleMenu","apply","arguments","_t","_v","_obj","focused","resourceUrl","reEmitEvent","rounded","hasValidThumbnail","loaded","icon","isIconUrl","style","backgroundImage","thumbnailUrl","onError","onLoad","_e","title","subline","_s","light","dark","_l","placeholder","key","width","randWidth","open","onOpen","onClose","scopedSlots","_u","fn","proxy","isLoading","stopPropagation","onInputEnter","onReset","ref","t","types","typesNames","join","domProps","target","composing","onInputDebounced","indexOf","_k","keyCode","availableFilters","typesMap","onClickFilter","hasResults","typesIndex","list","limitIfAny","result","index","_b","setFocusedIndex","reached","loading","loadMore","isShortQuery","n","__webpack_nonce__","btoa","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","Vue","methods","el","render","h","UnifiedSearch","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-unified-search.js?v=5bd9fcf9b83ec2258f6f","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/HeaderMenu.vue","webpack://nextcloud/./core/src/components/HeaderMenu.vue?1d30","webpack://nextcloud/./core/src/components/HeaderMenu.vue?30e1","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=template&id=4ba23c22&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?780a","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=template&id=288e1e92&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?c1bc","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?7f72","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?d27d","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=template&id=66445578&scoped=true&","webpack:///nextcloud/core/src/unified-search.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=style&index=0&id=4ba23c22&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=288e1e92&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=66445578&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/runtime/nonce","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 2020, John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\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 { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nexport const defaultLimit = loadState('unified-search', 'limit-default')\nexport const minSearchLength = loadState('unified-search', 'min-search-length', 1)\nexport const enableLiveSearch = loadState('unified-search', 'live-search', true)\n\nexport const regexFilterIn = /(^|\\s)in:([a-z_-]+)/ig\nexport const regexFilterNot = /(^|\\s)-in:([a-z_-]+)/ig\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Get the list of available search providers\n *\n * @return {Promise<Array>}\n */\nexport async function getTypes() {\n\ttry {\n\t\tconst { data } = await axios.get(generateOcsUrl('search/providers'), {\n\t\t\tparams: {\n\t\t\t\t// Sending which location we're currently at\n\t\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t\t},\n\t\t})\n\t\tif ('ocs' in data && 'data' in data.ocs && Array.isArray(data.ocs.data) && data.ocs.data.length > 0) {\n\t\t\t// Providers are sorted by the api based on their order key\n\t\t\treturn data.ocs.data\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n\treturn []\n}\n\n/**\n * Get the list of available search providers\n *\n * @param {object} options destructuring object\n * @param {string} options.type the type to search\n * @param {string} options.query the search\n * @param {number|string|undefined} options.cursor the offset for paginated searches\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor }) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\tconst request = async () => axios.get(generateOcsUrl('search/providers/{type}/search', { type }), {\n\t\tcancelToken: cancelToken.token,\n\t\tparams: {\n\t\t\tterm: query,\n\t\t\tcursor,\n\t\t\t// Sending which location we're currently at\n\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.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!./HeaderMenu.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<div :id=\"id\"\n\t\tv-click-outside=\"clickOutsideConfig\"\n\t\t:class=\"{ 'header-menu--opened': opened }\"\n\t\tclass=\"header-menu\">\n\t\t<a class=\"header-menu__trigger\"\n\t\t\thref=\"#\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:aria-controls=\"`header-menu-${id}`\"\n\t\t\t:aria-expanded=\"opened.toString()\"\n\t\t\t@click.prevent=\"toggleMenu\">\n\t\t\t<slot name=\"trigger\" />\n\t\t</a>\n\t\t<div v-show=\"opened\" class=\"header-menu__carret\" />\n\t\t<div v-show=\"opened\"\n\t\t\t:id=\"`header-menu-${id}`\"\n\t\t\tclass=\"header-menu__wrapper\"\n\t\t\trole=\"menu\">\n\t\t\t<div class=\"header-menu__content\">\n\t\t\t\t<slot />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { directive as ClickOutside } from 'v-click-outside'\nimport excludeClickOutsideClasses from '@nextcloud/vue/dist/Mixins/excludeClickOutsideClasses'\n\nexport default {\n\tname: 'HeaderMenu',\n\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\n\tmixins: [\n\t\texcludeClickOutsideClasses,\n\t],\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\topened: this.open,\n\t\t\tclickOutsideConfig: {\n\t\t\t\thandler: this.closeMenu,\n\t\t\t\tmiddleware: this.clickOutsideMiddleware,\n\t\t\t},\n\t\t\tshortcutsDisabled: OCP.Accessibility.disableKeyboardShortcuts(),\n\t\t}\n\t},\n\n\twatch: {\n\t\topen(newVal) {\n\t\t\tthis.opened = newVal\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.opened) {\n\t\t\t\t\tthis.openMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener('keydown', this.onKeyDown)\n\t},\n\tbeforeDestroy() {\n\t\tdocument.removeEventListener('keydown', this.onKeyDown)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Toggle the current menu open state\n\t\t */\n\t\ttoggleMenu() {\n\t\t\t// Toggling current state\n\t\t\tif (!this.opened) {\n\t\t\t\tthis.openMenu()\n\t\t\t} else {\n\t\t\t\tthis.closeMenu()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Close the current menu\n\t\t */\n\t\tcloseMenu() {\n\t\t\tif (!this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = false\n\t\t\tthis.$emit('close')\n\t\t\tthis.$emit('update:open', false)\n\t\t},\n\n\t\t/**\n\t\t * Open the current menu\n\t\t */\n\t\topenMenu() {\n\t\t\tif (this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = true\n\t\t\tthis.$emit('open')\n\t\t\tthis.$emit('update:open', true)\n\t\t},\n\n\t\tonKeyDown(event) {\n\t\t\tif (this.shortcutsDisabled) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If opened and escape pressed, close\n\t\t\tif (event.key === 'Escape' && this.opened) {\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\t/** user cancelled the menu by pressing escape */\n\t\t\t\tthis.$emit('cancel')\n\n\t\t\t\t/** we do NOT fire a close event to differentiate cancel and close */\n\t\t\t\tthis.opened = false\n\t\t\t\tthis.$emit('update:open', false)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$externalMargin: 8px;\n\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 44px;\n\t\tmargin: 2px 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .85;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__trigger:focus-visible {\n\t\toutline: none;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0 $externalMargin;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t\tpadding: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tz-index: 2001; // Because __wrapper is 2000.\n\t\tleft: calc(50% - 10px);\n\t\tbottom: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: calc(100vw - 2 * $externalMargin);\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\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!./HeaderMenu.vue?vue&type=style&index=0&id=4ba23c22&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!./HeaderMenu.vue?vue&type=style&index=0&id=4ba23c22&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderMenu.vue?vue&type=template&id=4ba23c22&scoped=true&\"\nimport script from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderMenu.vue?vue&type=style&index=0&id=4ba23c22&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 \"4ba23c22\",\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',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.clickOutsideConfig),expression:\"clickOutsideConfig\"}],staticClass:\"header-menu\",class:{ 'header-menu--opened': _vm.opened },attrs:{\"id\":_vm.id}},[_c('a',{staticClass:\"header-menu__trigger\",attrs:{\"href\":\"#\",\"aria-label\":_vm.ariaLabel,\"aria-controls\":(\"header-menu-\" + _vm.id),\"aria-expanded\":_vm.opened.toString()},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMenu.apply(null, arguments)}}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__carret\"}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__wrapper\",attrs:{\"id\":(\"header-menu-\" + _vm.id),\"role\":\"menu\"}},[_c('div',{staticClass:\"header-menu__content\"},[_vm._t(\"default\")],2)])])}\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!./SearchResult.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!./SearchResult.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<a :href=\"resourceUrl || '#'\"\n\t\tclass=\"unified-search__result\"\n\t\t:class=\"{\n\t\t\t'unified-search__result--focused': focused,\n\t\t}\"\n\t\t@click=\"reEmitEvent\"\n\t\t@focus=\"reEmitEvent\">\n\n\t\t<!-- Icon describing the result -->\n\t\t<div class=\"unified-search__result-icon\"\n\t\t\t:class=\"{\n\t\t\t\t'unified-search__result-icon--rounded': rounded,\n\t\t\t\t'unified-search__result-icon--no-preview': !hasValidThumbnail && !loaded,\n\t\t\t\t'unified-search__result-icon--with-thumbnail': hasValidThumbnail && loaded,\n\t\t\t\t[icon]: !loaded && !isIconUrl,\n\t\t\t}\"\n\t\t\t:style=\"{\n\t\t\t\tbackgroundImage: isIconUrl ? `url(${icon})` : '',\n\t\t\t}\">\n\n\t\t\t<img v-if=\"hasValidThumbnail\"\n\t\t\t\tv-show=\"loaded\"\n\t\t\t\t:src=\"thumbnailUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\t@error=\"onError\"\n\t\t\t\t@load=\"onLoad\">\n\t\t</div>\n\n\t\t<!-- Title and sub-title -->\n\t\t<span class=\"unified-search__result-content\">\n\t\t\t<span class=\"unified-search__result-line-one\" :title=\"title\">\n\t\t\t\t<NcHighlight :text=\"title\" :search=\"query\" />\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"unified-search__result-line-two\" :title=\"subline\">{{ subline }}</span>\n\t\t</span>\n\t</a>\n</template>\n\n<script>\nimport NcHighlight from '@nextcloud/vue/dist/Components/NcHighlight'\n\nexport default {\n\tname: 'SearchResult',\n\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\n\tprops: {\n\t\tthumbnailUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tresourceUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\trounded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Only used for the first result as a visual feedback\n\t\t * so we can keep the search input focused but pressing\n\t\t * enter still opens the first result\n\t\t */\n\t\tfocused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\thasValidThumbnail: this.thumbnailUrl && this.thumbnailUrl.trim() !== '',\n\t\t\tloaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\t// If we're facing an absolute url\n\t\t\tif (this.icon.startsWith('/')) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// Otherwise, let's check if this is a valid url\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.icon)\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\twatch: {\n\t\t// Make sure to reset state on change even when vue recycle the component\n\t\tthumbnailUrl() {\n\t\t\tthis.hasValidThumbnail = this.thumbnailUrl && this.thumbnailUrl.trim() !== ''\n\t\t\tthis.loaded = false\n\t\t},\n\t},\n\n\tmethods: {\n\t\treEmitEvent(e) {\n\t\t\tthis.$emit(e.type, e)\n\t\t},\n\n\t\t/**\n\t\t * If the image fails to load, fallback to iconClass\n\t\t */\n\t\tonError() {\n\t\t\tthis.hasValidThumbnail = false\n\t\t},\n\n\t\tonLoad() {\n\t\t\tthis.loaded = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius-large) !important;\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\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!./SearchResult.vue?vue&type=style&index=0&id=288e1e92&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!./SearchResult.vue?vue&type=style&index=0&id=288e1e92&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResult.vue?vue&type=template&id=288e1e92&scoped=true&\"\nimport script from \"./SearchResult.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResult.vue?vue&type=style&index=0&id=288e1e92&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 \"288e1e92\",\n null\n \n)\n\nexport default component.exports","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"unified-search__result\",class:{\n\t\t'unified-search__result--focused': _vm.focused,\n\t},attrs:{\"href\":_vm.resourceUrl || '#'},on:{\"click\":_vm.reEmitEvent,\"focus\":_vm.reEmitEvent}},[_c('div',{staticClass:\"unified-search__result-icon\",class:( _obj = {\n\t\t\t'unified-search__result-icon--rounded': _vm.rounded,\n\t\t\t'unified-search__result-icon--no-preview': !_vm.hasValidThumbnail && !_vm.loaded,\n\t\t\t'unified-search__result-icon--with-thumbnail': _vm.hasValidThumbnail && _vm.loaded\n\t\t}, _obj[_vm.icon] = !_vm.loaded && !_vm.isIconUrl, _obj ),style:({\n\t\t\tbackgroundImage: _vm.isIconUrl ? (\"url(\" + _vm.icon + \")\") : '',\n\t\t})},[(_vm.hasValidThumbnail)?_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],attrs:{\"src\":_vm.thumbnailUrl,\"alt\":\"\"},on:{\"error\":_vm.onError,\"load\":_vm.onLoad}}):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"unified-search__result-content\"},[_c('span',{staticClass:\"unified-search__result-line-one\",attrs:{\"title\":_vm.title}},[_c('NcHighlight',{attrs:{\"text\":_vm.title,\"search\":_vm.query}})],1),_vm._v(\" \"),(_vm.subline)?_c('span',{staticClass:\"unified-search__result-line-two\",attrs:{\"title\":_vm.subline}},[_vm._v(_vm._s(_vm.subline))]):_vm._e()])])}\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!./SearchResultPlaceholders.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!./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"","<template>\n\t<ul>\n\t\t<!-- Placeholder animation -->\n\t\t<svg class=\"unified-search__result-placeholder-gradient\">\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"unified-search__result-placeholder-gradient\">\n\t\t\t\t\t<stop offset=\"0%\" :stop-color=\"light\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${light}; ${light}; ${dark}; ${dark}; ${light}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"100%\" :stop-color=\"dark\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${dark}; ${light}; ${light}; ${dark}; ${dark}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\n\t\t<!-- Placeholders -->\n\t\t<li v-for=\"placeholder in [1, 2, 3]\" :key=\"placeholder\">\n\t\t\t<svg class=\"unified-search__result-placeholder\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"url(#unified-search__result-placeholder-gradient)\">\n\t\t\t\t<rect class=\"unified-search__result-placeholder-icon\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-one\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-two\" :style=\"{width: `calc(${randWidth()}%)`}\" />\n\t\t\t</svg>\n\t\t</li>\n\t</ul>\n</template>\n\n<script>\nexport default {\n\tname: 'SearchResultPlaceholders',\n\n\tdata() {\n\t\treturn {\n\t\t\tlight: null,\n\t\t\tdark: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tconst styles = getComputedStyle(document.documentElement)\n\t\tthis.dark = styles.getPropertyValue('--color-placeholder-dark')\n\t\tthis.light = styles.getPropertyValue('--color-placeholder-light')\n\t},\n\n\tmethods: {\n\t\trandWidth() {\n\t\t\treturn Math.floor(Math.random() * 20) + 30\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\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!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&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!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&\"\nimport script from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&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 \"9ed03c40\",\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('ul',[_c('svg',{staticClass:\"unified-search__result-placeholder-gradient\"},[_c('defs',[_c('linearGradient',{attrs:{\"id\":\"unified-search__result-placeholder-gradient\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":_vm.light}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":(_vm.light + \"; \" + _vm.light + \"; \" + _vm.dark + \"; \" + _vm.dark + \"; \" + _vm.light),\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})]),_vm._v(\" \"),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":_vm.dark}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":(_vm.dark + \"; \" + _vm.light + \"; \" + _vm.light + \"; \" + _vm.dark + \"; \" + _vm.dark),\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})])],1)],1)]),_vm._v(\" \"),_vm._l(([1, 2, 3]),function(placeholder){return _c('li',{key:placeholder},[_c('svg',{staticClass:\"unified-search__result-placeholder\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"url(#unified-search__result-placeholder-gradient)\"}},[_c('rect',{staticClass:\"unified-search__result-placeholder-icon\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-one\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-two\",style:({width: (\"calc(\" + (_vm.randWidth()) + \"%)\")})})])])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<HeaderMenu id=\"unified-search\"\n\t\tclass=\"unified-search\"\n\t\texclude-click-outside-classes=\"popover\"\n\t\t:open.sync=\"open\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\">\n\t\t<!-- Header icon -->\n\t\t<template #trigger>\n\t\t\t<Magnify class=\"unified-search__trigger\"\n\t\t\t\t:size=\"22/* fit better next to other 20px icons */\"\n\t\t\t\tfill-color=\"var(--color-primary-text)\" />\n\t\t</template>\n\n\t\t<!-- Search form & filters wrapper -->\n\t\t<div class=\"unified-search__input-wrapper\">\n\t\t\t<label for=\"unified-search__input\">{{ ariaLabel }}</label>\n\t\t\t<div class=\"unified-search__input-row\">\n\t\t\t\t<form class=\"unified-search__form\"\n\t\t\t\t\trole=\"search\"\n\t\t\t\t\t:class=\"{'icon-loading-small': isLoading}\"\n\t\t\t\t\t@submit.prevent.stop=\"onInputEnter\"\n\t\t\t\t\t@reset.prevent.stop=\"onReset\">\n\t\t\t\t\t<!-- Search input -->\n\t\t\t\t\t<input ref=\"input\"\n\t\t\t\t\t\tid=\"unified-search__input\"\n\t\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\t\tclass=\"unified-search__form-input\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\t:class=\"{'unified-search__form-input--with-reset': !!query}\"\n\t\t\t\t\t\t:placeholder=\"t('core', 'Search {types} …', { types: typesNames.join(', ') })\"\n\t\t\t\t\t\taria-describedby=\"unified-search-desc\"\n\t\t\t\t\t\t@input=\"onInputDebounced\"\n\t\t\t\t\t\t@keypress.enter.prevent.stop=\"onInputEnter\">\n\t\t\t\t\t<p id=\"unified-search-desc\" class=\"hidden-visually\">\n\t\t\t\t\t\t{{ t('core', 'Search starts once you start typing') }}\n\t\t\t\t\t</p>\n\n\t\t\t\t\t<!-- Reset search button -->\n\t\t\t\t\t<input v-if=\"!!query && !isLoading\"\n\t\t\t\t\t\ttype=\"reset\"\n\t\t\t\t\t\tclass=\"unified-search__form-reset icon-close\"\n\t\t\t\t\t\t:aria-label=\"t('core','Reset search')\"\n\t\t\t\t\t\tvalue=\"\">\n\n\t\t\t\t\t<input v-if=\"!!query && !isLoading && !enableLiveSearch\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclass=\"unified-search__form-submit icon-confirm\"\n\t\t\t\t\t\t:aria-label=\"t('core','Start search')\"\n\t\t\t\t\t\tvalue=\"\">\n\t\t\t\t</form>\n\n\t\t\t\t<!-- Search filters -->\n\t\t\t\t<NcActions v-if=\"availableFilters.length > 1\" class=\"unified-search__filters\" placement=\"bottom\">\n\t\t\t\t\t<NcActionButton v-for=\"type in availableFilters\"\n\t\t\t\t\t\t:key=\"type\"\n\t\t\t\t\t\ticon=\"icon-filter\"\n\t\t\t\t\t\t:title=\"t('core', 'Search for {name} only', { name: typesMap[type] })\"\n\t\t\t\t\t\t@click.stop=\"onClickFilter(`in:${type}`)\">\n\t\t\t\t\t\t{{ `in:${type}` }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<template v-if=\"!hasResults\">\n\t\t\t<!-- Loading placeholders -->\n\t\t\t<SearchResultPlaceholders v-if=\"isLoading\" />\n\n\t\t\t<NcEmptyContent v-else-if=\"isValidQuery\">\n\t\t\t\t<NcHighlight v-if=\"triggered\" :text=\"t('core', 'No results for {query}', { query })\" :search=\"query\" />\n\t\t\t\t<div v-else>\n\t\t\t\t\t{{ t('core', 'Press enter to start searching') }}\n\t\t\t\t</div>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Magnify />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\n\t\t\t<NcEmptyContent v-else-if=\"!isLoading || isShortQuery\">\n\t\t\t\t{{ t('core', 'Start typing to search') }}\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Magnify />\n\t\t\t\t</template>\n\t\t\t\t<template v-if=\"isShortQuery\" #desc>\n\t\t\t\t\t{{ n('core',\n\t\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t\tminSearchLength,\n\t\t\t\t\t\t{minSearchLength}) }}\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t</template>\n\n\t\t<!-- Grouped search results -->\n\t\t<template v-else>\n\t\t\t<ul v-for=\"({list, type}, typesIndex) in orderedResults\"\n\t\t\t\t:key=\"type\"\n\t\t\t\tclass=\"unified-search__results\"\n\t\t\t\t:class=\"`unified-search__results-${type}`\"\n\t\t\t\t:aria-label=\"typesMap[type]\">\n\t\t\t\t<h2 class=\"unified-search__results-header\">\n\t\t\t\t\t{{ typesMap[type] }}\n\t\t\t\t</h2>\n\n\t\t\t\t<!-- Search results -->\n\t\t\t\t<li v-for=\"(result, index) in limitIfAny(list, type)\" :key=\"result.resourceUrl\">\n\t\t\t\t\t<SearchResult v-bind=\"result\"\n\t\t\t\t\t\t:query=\"query\"\n\t\t\t\t\t\t:focused=\"focused === 0 && typesIndex === 0 && index === 0\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\n\t\t\t\t<!-- Load more button -->\n\t\t\t\t<li>\n\t\t\t\t\t<SearchResult v-if=\"!reached[type]\"\n\t\t\t\t\t\tclass=\"unified-search__result-more\"\n\t\t\t\t\t\t:title=\"loading[type]\n\t\t\t\t\t\t\t? t('core', 'Loading more results …')\n\t\t\t\t\t\t\t: t('core', 'Load more results')\"\n\t\t\t\t\t\t:icon-class=\"loading[type] ? 'icon-loading-small' : ''\"\n\t\t\t\t\t\t@click.stop=\"loadMore(type)\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t</HeaderMenu>\n</template>\n\n<script>\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { minSearchLength, getTypes, search, defaultLimit, regexFilterIn, regexFilterNot, enableLiveSearch } from '../services/UnifiedSearchService'\nimport { showError } from '@nextcloud/dialogs'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport debounce from 'debounce'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'\nimport NcHighlight from '@nextcloud/vue/dist/Components/NcHighlight'\nimport Magnify from 'vue-material-design-icons/Magnify'\n\nimport HeaderMenu from '../components/HeaderMenu'\nimport SearchResult from '../components/UnifiedSearch/SearchResult'\nimport SearchResultPlaceholders from '../components/UnifiedSearch/SearchResultPlaceholders'\n\nconst REQUEST_FAILED = 0\nconst REQUEST_OK = 1\nconst REQUEST_CANCELED = 2\n\nexport default {\n\tname: 'UnifiedSearch',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcEmptyContent,\n\t\tHeaderMenu,\n\t\tNcHighlight,\n\t\tMagnify,\n\t\tSearchResult,\n\t\tSearchResultPlaceholders,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttypes: [],\n\n\t\t\t// Cursors per types\n\t\t\tcursors: {},\n\t\t\t// Various search limits per types\n\t\t\tlimits: {},\n\t\t\t// Loading types\n\t\t\tloading: {},\n\t\t\t// Reached search types\n\t\t\treached: {},\n\t\t\t// Pending cancellable requests\n\t\t\trequests: [],\n\t\t\t// List of all results\n\t\t\tresults: {},\n\n\t\t\tquery: '',\n\t\t\tfocused: null,\n\t\t\ttriggered: false,\n\n\t\t\tdefaultLimit,\n\t\t\tminSearchLength,\n\t\t\tenableLiveSearch,\n\n\t\t\topen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttypesIDs() {\n\t\t\treturn this.types.map(type => type.id)\n\t\t},\n\t\ttypesNames() {\n\t\t\treturn this.types.map(type => type.name)\n\t\t},\n\t\ttypesMap() {\n\t\t\treturn this.types.reduce((prev, curr) => {\n\t\t\t\tprev[curr.id] = curr.name\n\t\t\t\treturn prev\n\t\t\t}, {})\n\t\t},\n\n\t\tariaLabel() {\n\t\t\treturn t('core', 'Search')\n\t\t},\n\n\t\t/**\n\t\t * Is there any result to display\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasResults() {\n\t\t\treturn Object.keys(this.results).length !== 0\n\t\t},\n\n\t\t/**\n\t\t * Return ordered results\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\torderedResults() {\n\t\t\treturn this.typesIDs\n\t\t\t\t.filter(type => type in this.results)\n\t\t\t\t.map(type => ({\n\t\t\t\t\ttype,\n\t\t\t\t\tlist: this.results[type],\n\t\t\t\t}))\n\t\t},\n\n\t\t/**\n\t\t * Available filters\n\t\t * We only show filters that are available on the results\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tavailableFilters() {\n\t\t\treturn Object.keys(this.results)\n\t\t},\n\n\t\t/**\n\t\t * Applied filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersIn() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterIn.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[2])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Applied anti filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersNot() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterNot.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[2])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Is the current search too short\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisShortQuery() {\n\t\t\treturn this.query && this.query.trim().length < minSearchLength\n\t\t},\n\n\t\t/**\n\t\t * Is the current search valid\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && !this.isShortQuery\n\t\t},\n\n\t\t/**\n\t\t * Have we reached the end of all types searches\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisDoneSearching() {\n\t\t\treturn Object.values(this.reached).every(state => state === false)\n\t\t},\n\n\t\t/**\n\t\t * Is there any search in progress\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisLoading() {\n\t\t\treturn Object.values(this.loading).some(state => state === true)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tsubscribe('files:navigation:changed', this.resetForm)\n\t\tthis.types = await getTypes()\n\t\tthis.logger.debug('Unified Search initialized with the following providers', this.types)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('files:navigation:changed', this.resetForm)\n\t},\n\n\tmounted() {\n\t\tif (OCP.Accessibility.disableKeyboardShortcuts()) {\n\t\t\treturn\n\t\t}\n\n\t\tdocument.addEventListener('keydown', (event) => {\n\t\t\t// if not already opened, allows us to trigger default browser on second keydown\n\t\t\tif (event.ctrlKey && event.key === 'f' && !this.open) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.open = true\n\t\t\t\tthis.focusInput()\n\t\t\t}\n\n\t\t\t// https://www.w3.org/WAI/GL/wiki/Using_ARIA_menus\n\t\t\tif (this.open) {\n\t\t\t\t// If arrow down, focus next result\n\t\t\t\tif (event.key === 'ArrowDown') {\n\t\t\t\t\tthis.focusNext(event)\n\t\t\t\t}\n\n\t\t\t\t// If arrow up, focus prev result\n\t\t\t\tif (event.key === 'ArrowUp') {\n\t\t\t\t\tthis.focusPrev(event)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tmethods: {\n\t\tasync onOpen() {\n\t\t\tthis.focusInput()\n\t\t\t// Update types list in the background\n\t\t\tthis.types = await getTypes()\n\t\t},\n\t\tonClose() {\n\t\t\temit('nextcloud:unified-search.close')\n\t\t},\n\n\t\tresetForm() {\n\t\t\tthis.$el.querySelector('form[role=\"search\"]').reset()\n\t\t},\n\n\t\t/**\n\t\t * Reset the search state\n\t\t */\n\t\tonReset() {\n\t\t\temit('nextcloud:unified-search.reset')\n\t\t\tthis.logger.debug('Search reset')\n\t\t\tthis.query = ''\n\t\t\tthis.resetState()\n\t\t\tthis.focusInput()\n\t\t},\n\t\tasync resetState() {\n\t\t\tthis.cursors = {}\n\t\t\tthis.limits = {}\n\t\t\tthis.reached = {}\n\t\t\tthis.results = {}\n\t\t\tthis.focused = null\n\t\t\tthis.triggered = false\n\t\t\tawait this.cancelPendingRequests()\n\t\t},\n\n\t\t/**\n\t\t * Cancel any ongoing searches\n\t\t */\n\t\tasync cancelPendingRequests() {\n\t\t\t// Cloning so we can keep processing other requests\n\t\t\tconst requests = this.requests.slice(0)\n\t\t\tthis.requests = []\n\n\t\t\t// Cancel all pending requests\n\t\t\tawait Promise.all(requests.map(cancel => cancel()))\n\t\t},\n\n\t\t/**\n\t\t * Focus the search input on next tick\n\t\t */\n\t\tfocusInput() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.focus()\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * If we have results already, open first one\n\t\t * If not, trigger the search again\n\t\t */\n\t\tonInputEnter() {\n\t\t\tif (this.hasResults) {\n\t\t\t\tconst results = this.getResultsList()\n\t\t\t\tresults[0].click()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onInput()\n\t\t},\n\n\t\t/**\n\t\t * Start searching on input\n\t\t */\n\t\tasync onInput() {\n\t\t\t// emit the search query\n\t\t\temit('nextcloud:unified-search.search', { query: this.query })\n\n\t\t\t// Do not search if not long enough\n\t\t\tif (this.query.trim() === '' || this.isShortQuery) {\n\t\t\t\tfor (const type of this.typesIDs) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet types = this.typesIDs\n\t\t\tlet query = this.query\n\n\t\t\t// Filter out types\n\t\t\tif (this.usedFiltersNot.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersNot.indexOf(type) === -1)\n\t\t\t}\n\n\t\t\t// Only use those filters if any and check if they are valid\n\t\t\tif (this.usedFiltersIn.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersIn.indexOf(type) > -1)\n\t\t\t}\n\n\t\t\t// Remove any filters from the query\n\t\t\tquery = query.replace(regexFilterIn, '').replace(regexFilterNot, '')\n\n\t\t\t// Reset search if the query changed\n\t\t\tawait this.resetState()\n\t\t\tthis.triggered = true\n\n\t\t\tif (!types.length) {\n\t\t\t\t// no results since no types were selected\n\t\t\t\tthis.logger.error('No types to search in')\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$set(this.loading, 'all', true)\n\t\t\tthis.logger.debug(`Searching ${query} in`, types)\n\n\t\t\tPromise.all(types.map(async type => {\n\t\t\t\ttry {\n\t\t\t\t\t// Init cancellable request\n\t\t\t\t\tconst { request, cancel } = search({ type, query })\n\t\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t\t// Fetch results\n\t\t\t\t\tconst { data } = await request()\n\n\t\t\t\t\t// Process results\n\t\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\t\tthis.$set(this.results, type, data.ocs.data.entries)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Save cursor if any\n\t\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t\t} else if (!data.ocs.data.isPaginated) {\n\t\t\t\t\t// If no cursor and no pagination, we save the default amount\n\t\t\t\t\t// provided by server's initial state `defaultLimit`\n\t\t\t\t\t\tthis.$set(this.limits, type, this.defaultLimit)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if we reached end of pagination\n\t\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t\t}\n\n\t\t\t\t\t// If none already focused, focus the first rendered result\n\t\t\t\t\tif (this.focused === null) {\n\t\t\t\t\t\tthis.focused = 0\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_OK\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\n\t\t\t\t\t// If this is not a cancelled throw\n\t\t\t\t\tif (error.response && error.response.status) {\n\t\t\t\t\t\tthis.logger.error(`Error searching for ${this.typesMap[type]}`, error)\n\t\t\t\t\t\tshowError(this.t('core', 'An error occurred while searching for {type}', { type: this.typesMap[type] }))\n\t\t\t\t\t\treturn REQUEST_FAILED\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_CANCELED\n\t\t\t\t}\n\t\t\t})).then(results => {\n\t\t\t\t// Do not declare loading finished if the request have been cancelled\n\t\t\t\t// This means another search was triggered and we're therefore still loading\n\t\t\t\tif (results.some(result => result === REQUEST_CANCELED)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// We finished all searches\n\t\t\t\tthis.loading = {}\n\t\t\t})\n\t\t},\n\t\tonInputDebounced: enableLiveSearch\n\t\t\t? debounce(function(e) {\n\t\t\t\tthis.onInput(e)\n\t\t\t}, 500)\n\t\t\t: function() {\n\t\t\t\tthis.triggered = false\n\t\t\t},\n\n\t\t/**\n\t\t * Load more results for the provided type\n\t\t *\n\t\t * @param {string} type type\n\t\t */\n\t\tasync loadMore(type) {\n\t\t\t// If already loading, ignore\n\t\t\tif (this.loading[type]) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.cursors[type]) {\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = search({ type, query: this.query, cursor: this.cursors[type] })\n\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t// Fetch results\n\t\t\t\tconst { data } = await request()\n\n\t\t\t\t// Save cursor if any\n\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t}\n\n\t\t\t\t// Process results\n\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\tthis.results[type].push(...data.ocs.data.entries)\n\t\t\t\t}\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t} else\n\n\t\t\t// If no cursor, we might have all the results already,\n\t\t\t// let's fake pagination and show the next xxx entries\n\t\t\tif (this.limits[type] && this.limits[type] >= 0) {\n\t\t\t\tthis.limits[type] += this.defaultLimit\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (this.limits[type] >= this.results[type].length) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Focus result after render\n\t\t\tif (this.focused !== null) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Return a subset of the array if the search provider\n\t\t * doesn't supports pagination\n\t\t *\n\t\t * @param {Array} list the results\n\t\t * @param {string} type the type\n\t\t * @return {Array}\n\t\t */\n\t\tlimitIfAny(list, type) {\n\t\t\tif (type in this.limits) {\n\t\t\t\treturn list.slice(0, this.limits[type])\n\t\t\t}\n\t\t\treturn list\n\t\t},\n\n\t\tgetResultsList() {\n\t\t\treturn this.$el.querySelectorAll('.unified-search__results .unified-search__result')\n\t\t},\n\n\t\t/**\n\t\t * Focus the first result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusFirst(event) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results.length > 0) {\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\tthis.focused = 0\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the next result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusNext(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the last, focus the next one\n\t\t\tif (results && results.length > 0 && this.focused + 1 < results.length) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused++\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the previous result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusPrev(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the first, focus the previous one\n\t\t\tif (results && results.length > 0 && this.focused > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused--\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Focus the specified result index if it exists\n\t\t *\n\t\t * @param {number} index the result index\n\t\t */\n\t\tfocusIndex(index) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results[index]) {\n\t\t\t\tresults[index].focus()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set the current focused element based on the target\n\t\t *\n\t\t * @param {Event} event the focus event\n\t\t */\n\t\tsetFocusedIndex(event) {\n\t\t\tconst entry = event.target\n\t\t\tconst results = this.getResultsList()\n\t\t\tconst index = [...results].findIndex(search => search === entry)\n\t\t\tif (index > -1) {\n\t\t\t\t// let's not use focusIndex as the entry is already focused\n\t\t\t\tthis.focused = index\n\t\t\t}\n\t\t},\n\n\t\tonClickFilter(filter) {\n\t\t\tthis.query = `${this.query} ${filter}`\n\t\t\t\t.replace(/ {2}/g, ' ')\n\t\t\t\t.trim()\n\t\t\tthis.onInput()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\tfilter: var(--background-image-invert-if-bright);\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tlabel[for=\"unified-search__input\"] {\n\t\t\talign-self: flex-start;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 18px;\n\t\t\tmargin-left: 13px;\n\t\t}\n\t}\n\n\t&__form-input {\n\t\tmargin: 0 !important;\n\t}\n\n\t&__input-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t}\n\n\t&__filters {\n\t\tmargin: $margin 0 $margin math.div($margin, 2);\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin 0;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset, &-submit {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 4px;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tmin-height: 30px;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&-submit {\n\t\t\tright: 28px;\n\t\t}\n\t}\n\n\t&__results {\n\t\t&-header {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-bottom: $margin - 4px;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcolor: var(--color-primary-element);\n\t\t\tfont-weight: normal;\n\t\t\tfont-size: 18px;\n\t\t}\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.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!./UnifiedSearch.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!./UnifiedSearch.vue?vue&type=style&index=0&id=66445578&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!./UnifiedSearch.vue?vue&type=style&index=0&id=66445578&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearch.vue?vue&type=template&id=66445578&scoped=true&\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=66445578&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 \"66445578\",\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('HeaderMenu',{staticClass:\"unified-search\",attrs:{\"id\":\"unified-search\",\"exclude-click-outside-classes\":\"popover\",\"open\":_vm.open,\"aria-label\":_vm.ariaLabel},on:{\"update:open\":function($event){_vm.open=$event},\"open\":_vm.onOpen,\"close\":_vm.onClose},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Magnify',{staticClass:\"unified-search__trigger\",attrs:{\"size\":22/* fit better next to other 20px icons */,\"fill-color\":\"var(--color-primary-text)\"}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-wrapper\"},[_c('label',{attrs:{\"for\":\"unified-search__input\"}},[_vm._v(_vm._s(_vm.ariaLabel))]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-row\"},[_c('form',{staticClass:\"unified-search__form\",class:{'icon-loading-small': _vm.isLoading},attrs:{\"role\":\"search\"},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)},\"reset\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onReset.apply(null, arguments)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"input\",staticClass:\"unified-search__form-input\",class:{'unified-search__form-input--with-reset': !!_vm.query},attrs:{\"id\":\"unified-search__input\",\"type\":\"search\",\"placeholder\":_vm.t('core', 'Search {types} …', { types: _vm.typesNames.join(', ') }),\"aria-describedby\":\"unified-search-desc\"},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.query=$event.target.value},_vm.onInputDebounced],\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)}}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"unified-search-desc\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search starts once you start typing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading)?_c('input',{staticClass:\"unified-search__form-reset icon-close\",attrs:{\"type\":\"reset\",\"aria-label\":_vm.t('core','Reset search'),\"value\":\"\"}}):_vm._e(),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading && !_vm.enableLiveSearch)?_c('input',{staticClass:\"unified-search__form-submit icon-confirm\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('core','Start search'),\"value\":\"\"}}):_vm._e()]),_vm._v(\" \"),(_vm.availableFilters.length > 1)?_c('NcActions',{staticClass:\"unified-search__filters\",attrs:{\"placement\":\"bottom\"}},_vm._l((_vm.availableFilters),function(type){return _c('NcActionButton',{key:type,attrs:{\"icon\":\"icon-filter\",\"title\":_vm.t('core', 'Search for {name} only', { name: _vm.typesMap[type] })},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClickFilter((\"in:\" + type))}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s((\"in:\" + type))+\"\\n\\t\\t\\t\\t\")])}),1):_vm._e()],1)]),_vm._v(\" \"),(!_vm.hasResults)?[(_vm.isLoading)?_c('SearchResultPlaceholders'):(_vm.isValidQuery)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true}],null,false,931131664)},[(_vm.triggered)?_c('NcHighlight',{attrs:{\"text\":_vm.t('core', 'No results for {query}', { query: _vm.query }),\"search\":_vm.query}}):_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Press enter to start searching'))+\"\\n\\t\\t\\t\")])],1):(!_vm.isLoading || _vm.isShortQuery)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true},(_vm.isShortQuery)?{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('core',\n\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t_vm.minSearchLength,\n\t\t\t\t\t{minSearchLength: _vm.minSearchLength}))+\"\\n\\t\\t\\t\")]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Start typing to search'))+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._l((_vm.orderedResults),function(ref,typesIndex){\n\t\t\t\t\tvar list = ref.list;\n\t\t\t\t\tvar type = ref.type;\nreturn _c('ul',{key:type,staticClass:\"unified-search__results\",class:(\"unified-search__results-\" + type),attrs:{\"aria-label\":_vm.typesMap[type]}},[_c('h2',{staticClass:\"unified-search__results-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.typesMap[type])+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.limitIfAny(list, type)),function(result,index){return _c('li',{key:result.resourceUrl},[_c('SearchResult',_vm._b({attrs:{\"query\":_vm.query,\"focused\":_vm.focused === 0 && typesIndex === 0 && index === 0},on:{\"focus\":_vm.setFocusedIndex}},'SearchResult',result,false))],1)}),_vm._v(\" \"),_c('li',[(!_vm.reached[type])?_c('SearchResult',{staticClass:\"unified-search__result-more\",attrs:{\"title\":_vm.loading[type]\n\t\t\t\t\t\t? _vm.t('core', 'Loading more results …')\n\t\t\t\t\t\t: _vm.t('core', 'Load more results'),\"icon-class\":_vm.loading[type] ? 'icon-loading-small' : ''},on:{\"click\":function($event){$event.stopPropagation();return _vm.loadMore(type)},\"focus\":_vm.setFocusedIndex}}):_vm._e()],1)],2)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 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\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport UnifiedSearch from './views/UnifiedSearch.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst logger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default new Vue({\n\tel: '#unified-search',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UnifiedSearchRoot',\n\trender: h => h(UnifiedSearch),\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, \".header-menu__trigger[data-v-4ba23c22]{display:flex;align-items:center;justify-content:center;width:50px;height:44px;margin:2px 0;padding:0;cursor:pointer;opacity:.85}.header-menu--opened .header-menu__trigger[data-v-4ba23c22],.header-menu__trigger[data-v-4ba23c22]:hover,.header-menu__trigger[data-v-4ba23c22]:focus,.header-menu__trigger[data-v-4ba23c22]:active{opacity:1}.header-menu__trigger[data-v-4ba23c22]:focus-visible{outline:none}.header-menu__wrapper[data-v-4ba23c22]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0 8px;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));padding:8px;border-radius:var(--border-radius-large)}.header-menu__carret[data-v-4ba23c22]{position:absolute;z-index:2001;left:calc(50% - 10px);bottom:0;width:0;height:0;content:\\\" \\\";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-4ba23c22]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:66px;max-height:calc(100vh - 100px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/HeaderMenu.vue\"],\"names\":[],\"mappings\":\"AA2KC,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,YAAA,CACA,SAAA,CACA,cAAA,CACA,WAAA,CAGD,oMAIC,SAAA,CAGD,qDACC,YAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,YAAA,CACA,2DAAA,CACA,6CAAA,CACA,qDAAA,CACA,WAAA,CACA,wCAAA,CAGD,sCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,4BAAA,CACA,eAAA,CACA,8BAAA\",\"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$externalMargin: 8px;\\n\\n.header-menu {\\n\\t&__trigger {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 50px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 2px 0;\\n\\t\\tpadding: 0;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .85;\\n\\t}\\n\\n\\t&--opened &__trigger,\\n\\t&__trigger:hover,\\n\\t&__trigger:focus,\\n\\t&__trigger:active {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t&__trigger:focus-visible {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tposition: fixed;\\n\\t\\tz-index: 2000;\\n\\t\\ttop: 50px;\\n\\t\\tright: 0;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmargin: 0 $externalMargin;\\n\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\\n\\t\\tpadding: 8px;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&__carret {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 2001; // Because __wrapper is 2000.\\n\\t\\tleft: calc(50% - 10px);\\n\\t\\tbottom: 0;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tcontent: ' ';\\n\\t\\tpointer-events: none;\\n\\t\\tborder: 10px solid transparent;\\n\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__content {\\n\\t\\toverflow: auto;\\n\\t\\twidth: 350px;\\n\\t\\tmax-width: calc(100vw - 2 * $externalMargin);\\n\\t\\tmin-height: calc(44px * 1.5);\\n\\t\\tmax-height: calc(100vh - 50px * 2);\\n\\t}\\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, \".unified-search__result[data-v-288e1e92]{display:flex;align-items:center;height:44px;padding:10px;border-bottom:1px solid var(--color-border);border-radius:var(--border-radius-large) !important}.unified-search__result[data-v-288e1e92]:last-child{border-bottom:none}.unified-search__result--focused[data-v-288e1e92],.unified-search__result[data-v-288e1e92]:active,.unified-search__result[data-v-288e1e92]:hover,.unified-search__result[data-v-288e1e92]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-288e1e92]{cursor:pointer}.unified-search__result-icon[data-v-288e1e92]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-288e1e92]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-288e1e92]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-288e1e92]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-288e1e92],.unified-search__result-actions[data-v-288e1e92]{flex:0 0 44px}.unified-search__result-content[data-v-288e1e92]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-288e1e92],.unified-search__result-line-two[data-v-288e1e92]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-288e1e92]{opacity:.7;font-size:var(--default-font-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AAyKA,yCACC,YAAA,CACA,kBAAA,CACA,WANgB,CAOhB,YANQ,CAOR,2CAAA,CACA,mDAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA7Be,CA8Bf,WA9Be,CA+Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAxEO,CA2ER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA\",\"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@use \\\"sass:math\\\";\\n\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: $clickable-area;\\n\\tpadding: $margin;\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\tborder-radius: var(--border-radius-large) !important;\\n\\n\\t// Load more entry,\\n\\t&:last-child {\\n\\t\\tborder-bottom: none;\\n\\t}\\n\\n\\t&--focused,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t* {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: 32px;\\n\\t\\t&--rounded {\\n\\t\\t\\tborder-radius: math.div($clickable-area, 2);\\n\\t\\t}\\n\\t\\t&--no-preview {\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t}\\n\\t\\t&--with-thumbnail {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t&--with-thumbnail:not(&--rounded) {\\n\\t\\t\\t// compensate for border\\n\\t\\t\\tmax-width: $clickable-area - 2px;\\n\\t\\t\\tmax-height: $clickable-area - 2px;\\n\\t\\t\\tborder: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\t// Make sure to keep ratio\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tobject-fit: cover;\\n\\t\\t\\tobject-position: center;\\n\\t\\t}\\n\\t}\\n\\n\\t&-icon,\\n\\t&-actions {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t}\\n\\n\\t&-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-wrap: wrap;\\n\\t\\t// Set to minimum and gro from it\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $margin;\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\toverflow: hidden;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tmargin: 1px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Use the same color as the `a`\\n\\t\\tcolor: inherit;\\n\\t\\tfont-size: inherit;\\n\\t}\\n\\t&-line-two {\\n\\t\\topacity: .7;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\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, \".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue\"],\"names\":[],\"mappings\":\"AA+DA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA\",\"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$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result-placeholder-gradient {\\n\\tposition: fixed;\\n\\theight: 0;\\n\\twidth: 0;\\n\\tz-index: -1;\\n}\\n\\n.unified-search__result-placeholder {\\n\\twidth: calc(100% - 2 * #{$margin});\\n\\theight: $clickable-area;\\n\\tmargin: $margin;\\n\\n\\t&-icon {\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\trx: var(--border-radius);\\n\\t\\try: var(--border-radius);\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\twidth: calc(100% - #{$margin + $clickable-area});\\n\\t\\theight: 1em;\\n\\t\\tx: $margin + $clickable-area;\\n\\t}\\n\\n\\t&-line-one {\\n\\t\\ty: 5px;\\n\\t}\\n\\n\\t&-line-two {\\n\\t\\ty: 25px;\\n\\t}\\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, \".unified-search__trigger[data-v-66445578]{filter:var(--background-image-invert-if-bright)}.unified-search__input-wrapper[data-v-66445578]{position:sticky;z-index:2;top:0;display:inline-flex;flex-direction:column;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__input-wrapper label[for=unified-search__input][data-v-66445578]{align-self:flex-start;font-weight:bold;font-size:18px;margin-left:13px}.unified-search__form-input[data-v-66445578]{margin:0 !important}.unified-search__input-row[data-v-66445578]{display:flex;width:100%;align-items:center}.unified-search__filters[data-v-66445578]{margin:10px 0 10px 5px}.unified-search__filters ul[data-v-66445578]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-66445578]{position:relative;width:100%;margin:10px 0}.unified-search__form[data-v-66445578]::after{right:6px;left:auto}.unified-search__form-input[data-v-66445578],.unified-search__form-reset[data-v-66445578]{margin:3px}.unified-search__form-input[data-v-66445578]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-66445578],.unified-search__form-input[placeholder][data-v-66445578],.unified-search__form-input[data-v-66445578]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-66445578]::-webkit-search-decoration,.unified-search__form-input[data-v-66445578]::-webkit-search-cancel-button,.unified-search__form-input[data-v-66445578]::-webkit-search-results-button,.unified-search__form-input[data-v-66445578]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-66445578],.unified-search__form-input--with-reset[data-v-66445578]{padding-right:34px}.unified-search__form-reset[data-v-66445578],.unified-search__form-submit[data-v-66445578]{position:absolute;top:0;right:4px;width:28px;height:28px;min-height:30px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-66445578]:hover,.unified-search__form-reset[data-v-66445578]:focus,.unified-search__form-reset[data-v-66445578]:active,.unified-search__form-submit[data-v-66445578]:hover,.unified-search__form-submit[data-v-66445578]:focus,.unified-search__form-submit[data-v-66445578]:active{opacity:1}.unified-search__form-submit[data-v-66445578]{right:28px}.unified-search__results[data-v-66445578]{display:flex;flex-direction:column;gap:4px}.unified-search__results-header[data-v-66445578]{display:block;margin:10px;margin-bottom:6px;margin-left:16px;color:var(--color-primary-element);font-weight:normal;font-size:18px}.unified-search .unified-search__result-more[data-v-66445578]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-66445578]{margin:10vh 0}.unified-search .empty-content[data-v-66445578] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAgtBC,0CACC,+CAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,qBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAEA,iFACC,qBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CAIF,6CACC,mBAAA,CAGD,4CACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,0CACC,sBAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,aAAA,CAGA,8CACC,SAnDa,CAoDb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA/DY,CAgEZ,WA/Da,CAiEb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBArFW,CAyFb,2FACC,iBAAA,CACA,KAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,uTAGC,SAAA,CAIF,8CACC,UAAA,CAIF,0CAUC,YAAA,CACA,qBAAA,CACA,OAAA,CAXA,iDACC,aAAA,CACA,WAtHM,CAuHN,iBAAA,CACA,gBAAA,CACA,kCAAA,CACA,kBAAA,CACA,cAAA,CAOF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$margin: 10px;\\n$input-height: 34px;\\n$input-padding: 6px;\\n\\n.unified-search {\\n\\t&__trigger {\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\t}\\n\\n\\t&__input-wrapper {\\n\\t\\tposition: sticky;\\n\\t\\t// above search results\\n\\t\\tz-index: 2;\\n\\t\\ttop: 0;\\n\\t\\tdisplay: inline-flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tlabel[for=\\\"unified-search__input\\\"] {\\n\\t\\t\\talign-self: flex-start;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tmargin-left: 13px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form-input {\\n\\t\\tmargin: 0 !important;\\n\\t}\\n\\n\\t&__input-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin: $margin 0 $margin math.div($margin, 2);\\n\\t\\tul {\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form {\\n\\t\\tposition: relative;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: $margin 0;\\n\\n\\t\\t// Loading spinner\\n\\t\\t&::after {\\n\\t\\t\\tright: $input-padding;\\n\\t\\t\\tleft: auto;\\n\\t\\t}\\n\\n\\t\\t&-input,\\n\\t\\t&-reset {\\n\\t\\t\\tmargin: math.div($input-padding, 2);\\n\\t\\t}\\n\\n\\t\\t&-input {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: $input-height;\\n\\t\\t\\tpadding: $input-padding;\\n\\n\\t\\t\\t&,\\n\\t\\t\\t&[placeholder],\\n\\t\\t\\t&::placeholder {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Hide webkit clear search\\n\\t\\t\\t&::-webkit-search-decoration,\\n\\t\\t\\t&::-webkit-search-cancel-button,\\n\\t\\t\\t&::-webkit-search-results-button,\\n\\t\\t\\t&::-webkit-search-results-decoration {\\n\\t\\t\\t\\t-webkit-appearance: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Ellipsis earlier if reset button is here\\n\\t\\t\\t.icon-loading-small &,\\n\\t\\t\\t&--with-reset {\\n\\t\\t\\t\\tpadding-right: $input-height;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-reset, &-submit {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 4px;\\n\\t\\t\\twidth: $input-height - $input-padding;\\n\\t\\t\\theight: $input-height - $input-padding;\\n\\t\\t\\tmin-height: 30px;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\tmargin-right: 0;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-submit {\\n\\t\\t\\tright: 28px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__results {\\n\\t\\t&-header {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmargin: $margin;\\n\\t\\t\\tmargin-bottom: $margin - 4px;\\n\\t\\t\\tmargin-left: $margin + $input-padding;\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t}\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\t}\\n\\n\\t.unified-search__result-more::v-deep {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t.empty-content {\\n\\t\\tmargin: 10vh 0;\\n\\n\\t\\t::v-deep .empty-content__title {\\n\\t\\t\\tfont-weight: normal;\\n font-size: var(--default-font-size);\\n\\t\\t\\tpadding: 0 15px;\\n\\t\\t\\ttext-align: center;\\n\\t\\t}\\n\\t}\\n}\\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 = 9671;","__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\t9671: 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));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(16757); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","defaultLimit","loadState","minSearchLength","enableLiveSearch","regexFilterIn","regexFilterNot","getTypes","axios","generateOcsUrl","params","from","window","location","pathname","replace","search","data","ocs","Array","isArray","length","console","error","type","query","cursor","cancelToken","request","token","term","cancel","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","directives","name","rawName","value","expression","staticClass","class","opened","attrs","id","ariaLabel","toString","on","$event","preventDefault","toggleMenu","apply","arguments","_t","_v","_obj","focused","resourceUrl","reEmitEvent","rounded","hasValidThumbnail","loaded","icon","isIconUrl","style","backgroundImage","thumbnailUrl","onError","onLoad","_e","title","subline","_s","light","dark","_l","placeholder","key","width","randWidth","open","onOpen","onClose","scopedSlots","_u","fn","proxy","isLoading","stopPropagation","onInputEnter","onReset","ref","t","types","typesNames","join","domProps","target","composing","onInputDebounced","indexOf","_k","keyCode","availableFilters","typesMap","onClickFilter","hasResults","typesIndex","list","limitIfAny","result","index","_b","setFocusedIndex","reached","loading","loadMore","isShortQuery","n","__webpack_nonce__","btoa","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","Vue","methods","el","render","h","UnifiedSearch","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/l10n/bg.js b/lib/l10n/bg.js
index e02d36b8921..b4b564e0ef2 100644
--- a/lib/l10n/bg.js
+++ b/lib/l10n/bg.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s сподели »%2$s« с вас.",
"Click the button below to open it." : "Щракнете върху бутона по-долу, за да го отворите.",
"The requested share does not exist anymore" : "Исканото споделяне вече не съществува",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Потребителският лимит е достигнат и потребителят не е създаден. Проверете вашите известия, за да научите повече.",
"Could not find category \"%s\"" : "Невъзможно откриване на категорията \"%s\".",
"Sunday" : "неделя",
"Monday" : "понеделник",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Вашата директория с данни може да се чете от други потребители",
"Your data directory must be an absolute path" : "Вашата директория с данни трябва да е абсолютен път",
"Check the value of \"datadirectory\" in your configuration" : "Проверете стойността на \"datadirectory\" във вашата конфигурация",
- "Your data directory is invalid" : "Вашата директория с данни е невалидна"
+ "Your data directory is invalid" : "Вашата директория с данни е невалидна",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Потребителският лимит е достигнат и потребителят не е създаден. Проверете вашите известия, за да научите повече."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/bg.json b/lib/l10n/bg.json
index 564486afd93..0e05525ae66 100644
--- a/lib/l10n/bg.json
+++ b/lib/l10n/bg.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s сподели »%2$s« с вас.",
"Click the button below to open it." : "Щракнете върху бутона по-долу, за да го отворите.",
"The requested share does not exist anymore" : "Исканото споделяне вече не съществува",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Потребителският лимит е достигнат и потребителят не е създаден. Проверете вашите известия, за да научите повече.",
"Could not find category \"%s\"" : "Невъзможно откриване на категорията \"%s\".",
"Sunday" : "неделя",
"Monday" : "понеделник",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "Вашата директория с данни може да се чете от други потребители",
"Your data directory must be an absolute path" : "Вашата директория с данни трябва да е абсолютен път",
"Check the value of \"datadirectory\" in your configuration" : "Проверете стойността на \"datadirectory\" във вашата конфигурация",
- "Your data directory is invalid" : "Вашата директория с данни е невалидна"
+ "Your data directory is invalid" : "Вашата директория с данни е невалидна",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Потребителският лимит е достигнат и потребителят не е създаден. Проверете вашите известия, за да научите повече."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index 1ed9b3ac932..e1d2f5fa4d1 100644
--- a/lib/l10n/cs.js
+++ b/lib/l10n/cs.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
"Click the button below to open it." : "Pro otevření klikněte na tlačítko níže.",
"The requested share does not exist anymore" : "Požadované sdílení už neexistuje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen. Podrobnosti viz upozornění pro vás.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Uživatel nebyl vytvořen protože bylo dosaženo limitu počtu uživatelů. Více se dozvíte v upozorněních.",
"Could not find category \"%s\"" : "Nedaří se nalézt kategorii „%s“",
"Sunday" : "neděle",
"Monday" : "pondělí",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Váš adresář data je čitelný ostatním uživatelům",
"Your data directory must be an absolute path" : "Je třeba, aby váš adresář data byl zadán jako úplný popis umístění",
"Check the value of \"datadirectory\" in your configuration" : "Zkontrolujte hodnotu „datadirectory“ ve svém nastavení",
- "Your data directory is invalid" : "Váš adresář data není plantý"
+ "Your data directory is invalid" : "Váš adresář data není plantý",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen. Podrobnosti viz upozornění pro vás."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json
index 18d3f7dcafe..b07dc3a209c 100644
--- a/lib/l10n/cs.json
+++ b/lib/l10n/cs.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
"Click the button below to open it." : "Pro otevření klikněte na tlačítko níže.",
"The requested share does not exist anymore" : "Požadované sdílení už neexistuje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen. Podrobnosti viz upozornění pro vás.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Uživatel nebyl vytvořen protože bylo dosaženo limitu počtu uživatelů. Více se dozvíte v upozorněních.",
"Could not find category \"%s\"" : "Nedaří se nalézt kategorii „%s“",
"Sunday" : "neděle",
"Monday" : "pondělí",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "Váš adresář data je čitelný ostatním uživatelům",
"Your data directory must be an absolute path" : "Je třeba, aby váš adresář data byl zadán jako úplný popis umístění",
"Check the value of \"datadirectory\" in your configuration" : "Zkontrolujte hodnotu „datadirectory“ ve svém nastavení",
- "Your data directory is invalid" : "Váš adresář data není plantý"
+ "Your data directory is invalid" : "Váš adresář data není plantý",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen. Podrobnosti viz upozornění pro vás."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/lib/l10n/da.js b/lib/l10n/da.js
index ad420d24304..c55a5f3efb7 100644
--- a/lib/l10n/da.js
+++ b/lib/l10n/da.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s delte »%2$s« med dig",
"Click the button below to open it." : "Klik på knappen nedenunder for at åbne.",
"The requested share does not exist anymore" : "Det delte emne eksisterer ikke længere",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Grænsen for brugere er nået, og den nye bruger er ikke blevet oprettet. Læs dine notifikationer for at lære mere.",
"Could not find category \"%s\"" : "Kunne ikke finde kategorien \"%s\"",
"Sunday" : "Søndag",
"Monday" : "Mandag",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Datamappen kan læses af andre brugere",
"Your data directory must be an absolute path" : "Datamappen skal have en absolut sti",
"Check the value of \"datadirectory\" in your configuration" : "Tjek værdien for \"databibliotek\" i din konfiguration",
- "Your data directory is invalid" : "Datamappen er ugyldig"
+ "Your data directory is invalid" : "Datamappen er ugyldig",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Grænsen for brugere er nået, og den nye bruger er ikke blevet oprettet. Læs dine notifikationer for at lære mere."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/da.json b/lib/l10n/da.json
index c642a808ed4..0309caa55ab 100644
--- a/lib/l10n/da.json
+++ b/lib/l10n/da.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$s delte »%2$s« med dig",
"Click the button below to open it." : "Klik på knappen nedenunder for at åbne.",
"The requested share does not exist anymore" : "Det delte emne eksisterer ikke længere",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Grænsen for brugere er nået, og den nye bruger er ikke blevet oprettet. Læs dine notifikationer for at lære mere.",
"Could not find category \"%s\"" : "Kunne ikke finde kategorien \"%s\"",
"Sunday" : "Søndag",
"Monday" : "Mandag",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "Datamappen kan læses af andre brugere",
"Your data directory must be an absolute path" : "Datamappen skal have en absolut sti",
"Check the value of \"datadirectory\" in your configuration" : "Tjek værdien for \"databibliotek\" i din konfiguration",
- "Your data directory is invalid" : "Datamappen er ugyldig"
+ "Your data directory is invalid" : "Datamappen er ugyldig",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Grænsen for brugere er nået, og den nye bruger er ikke blevet oprettet. Læs dine notifikationer for at lære mere."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index 8163fae632d..c40cfd1d928 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -148,7 +148,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfe deine Benachrichtigungen, um mehr zu erfahren.",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
"Monday" : "Montag",
@@ -282,6 +281,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Dein Datenverzeichnis kann von anderen Benutzern gelesen werden",
"Your data directory must be an absolute path" : "Dein Datenverzeichnis muss einen eindeutigen Pfad haben",
"Check the value of \"datadirectory\" in your configuration" : "Überprüfe bitte die Angabe unter „datadirectory“ in deiner Konfiguration",
- "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig"
+ "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfe deine Benachrichtigungen, um mehr zu erfahren."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index 33b693cef8d..c1f371a1201 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -146,7 +146,6 @@
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfe deine Benachrichtigungen, um mehr zu erfahren.",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
"Monday" : "Montag",
@@ -280,6 +279,7 @@
"Your data directory is readable by other users" : "Dein Datenverzeichnis kann von anderen Benutzern gelesen werden",
"Your data directory must be an absolute path" : "Dein Datenverzeichnis muss einen eindeutigen Pfad haben",
"Check the value of \"datadirectory\" in your configuration" : "Überprüfe bitte die Angabe unter „datadirectory“ in deiner Konfiguration",
- "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig"
+ "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfe deine Benachrichtigungen, um mehr zu erfahren."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index c20aa5212a8..d5b28fee8cd 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Der Benutzer wurde nicht erstellt, da das Benutzerlimit erreicht wurde. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren.",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
"Monday" : "Montag",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Ihr Datenverzeichnis kann von anderen Benutzern gelesen werden",
"Your data directory must be an absolute path" : "Ihr Datenverzeichnis muss einen eindeutigen Pfad haben",
"Check the value of \"datadirectory\" in your configuration" : "Überprüfen Sie bitte die Angabe unter „datadirectory“ in Ihrer Konfiguration",
- "Your data directory is invalid" : "Ihr Datenverzeichnis ist ungültig."
+ "Your data directory is invalid" : "Ihr Datenverzeichnis ist ungültig.",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index 15600a481f8..da37bbb4ca0 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Der Benutzer wurde nicht erstellt, da das Benutzerlimit erreicht wurde. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren.",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
"Monday" : "Montag",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "Ihr Datenverzeichnis kann von anderen Benutzern gelesen werden",
"Your data directory must be an absolute path" : "Ihr Datenverzeichnis muss einen eindeutigen Pfad haben",
"Check the value of \"datadirectory\" in your configuration" : "Überprüfen Sie bitte die Angabe unter „datadirectory“ in Ihrer Konfiguration",
- "Your data directory is invalid" : "Ihr Datenverzeichnis ist ungültig."
+ "Your data directory is invalid" : "Ihr Datenverzeichnis ist ungültig.",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 1e078b3b6ac..1550c9455b0 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s ha compartido «%2$s» contigo.",
"Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "El límite de usuarios fue alcanzado y el usuario no fue creado. Compruebe sus notificaciones para aprender más.",
"Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Lunes",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Tu directorio de datos puede ser leído por otros usuarios",
"Your data directory must be an absolute path" : "Su directorio data debe ser una ruta absoluta",
"Check the value of \"datadirectory\" in your configuration" : "Compruebe el valor de \"datadirectory\" en su configuración.",
- "Your data directory is invalid" : "Tu directorio de datos es inválido"
+ "Your data directory is invalid" : "Tu directorio de datos es inválido",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "El límite de usuarios fue alcanzado y el usuario no fue creado. Compruebe sus notificaciones para aprender más."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index 2bcb6b0f644..25b40df6d2f 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s ha compartido «%2$s» contigo.",
"Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "El límite de usuarios fue alcanzado y el usuario no fue creado. Compruebe sus notificaciones para aprender más.",
"Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Lunes",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "Tu directorio de datos puede ser leído por otros usuarios",
"Your data directory must be an absolute path" : "Su directorio data debe ser una ruta absoluta",
"Check the value of \"datadirectory\" in your configuration" : "Compruebe el valor de \"datadirectory\" en su configuración.",
- "Your data directory is invalid" : "Tu directorio de datos es inválido"
+ "Your data directory is invalid" : "Tu directorio de datos es inválido",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "El límite de usuarios fue alcanzado y el usuario no fue creado. Compruebe sus notificaciones para aprender más."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index a1e1884ea0f..313b2eeb95a 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s a partagé « %2$s » avec vous.",
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
"The requested share does not exist anymore" : "Le partage demandé n'existe plus",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "La limite d'utilisateurs à été atteinte et cet utilisateur n'a pas été créé. Consultez vos notifications pour en savoir plus.",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
"Sunday" : "Dimanche",
"Monday" : "Lundi",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Votre répertoire est lisible par les autres utilisateurs",
"Your data directory must be an absolute path" : "Le chemin de votre répertoire doit être un lien absolu",
"Check the value of \"datadirectory\" in your configuration" : "Verifiez la valeur de \"datadirectory\" dans votre configuration",
- "Your data directory is invalid" : "Votre répertoire n'est pas valide"
+ "Your data directory is invalid" : "Votre répertoire n'est pas valide",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "La limite d'utilisateurs à été atteinte et cet utilisateur n'a pas été créé. Consultez vos notifications pour en savoir plus."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 19925c8f066..28d290daf5e 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$s a partagé « %2$s » avec vous.",
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
"The requested share does not exist anymore" : "Le partage demandé n'existe plus",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "La limite d'utilisateurs à été atteinte et cet utilisateur n'a pas été créé. Consultez vos notifications pour en savoir plus.",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
"Sunday" : "Dimanche",
"Monday" : "Lundi",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "Votre répertoire est lisible par les autres utilisateurs",
"Your data directory must be an absolute path" : "Le chemin de votre répertoire doit être un lien absolu",
"Check the value of \"datadirectory\" in your configuration" : "Verifiez la valeur de \"datadirectory\" dans votre configuration",
- "Your data directory is invalid" : "Votre répertoire n'est pas valide"
+ "Your data directory is invalid" : "Votre répertoire n'est pas valide",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "La limite d'utilisateurs à été atteinte et cet utilisateur n'a pas été créé. Consultez vos notifications pour en savoir plus."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js
index 917013fc6f6..79f5fda3859 100644
--- a/lib/l10n/hu.js
+++ b/lib/l10n/hu.js
@@ -8,6 +8,8 @@ OC.L10N.register(
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "A(z) %1$s alkalmazás fájljait helytelenül cserélték le. Ellenőrizze, hogy a verzió kompatibilis-e a kiszolgálóval.",
"Sample configuration detected" : "Példabeállítások észlelve",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik, hogy a példakonfigurációt másolta le. Ez működésképtelenné teheti a telepítést, és nem támogatott. Olvassa el a dokumentációt, mielőtt módosításokat véget a config.php fájlban.",
+ "404" : "404",
+ "The page could not be found on the server." : "Az oldal nem található a kiszolgálón.",
"%s email verification" : "%s e-mail ellenőrzés",
"Email verification" : "E-mail ellenőrzés",
"Click the following button to confirm your email." : "Kattintson a következő gombra, hogy megerősítse az e-mail-címét.",
@@ -114,6 +116,10 @@ OC.L10N.register(
"Role" : "Szerepkör",
"Unknown user" : "Ismeretlen felhasználó",
"Additional settings" : "További beállítások",
+ "Enter the database username and name for %s" : "Adja meg a %s adatbázisának nevét és a hozzá tartozó felhasználónevet",
+ "Enter the database username for %s" : "Adja meg a %s adatbázisához tartozó felhasználónevet",
+ "Enter the database name for %s" : "Adja meg a %s adatbázisának nevét",
+ "You cannot use dots in the database name %s" : "A(z) %s adatbázisnév nem tartalmazhat pontot",
"MySQL username and/or password not valid" : "A MySQL felhasználónév vagy jelszó érvénytelen",
"You need to enter details of an existing account." : "Egy már létező fiók adatait kell megadnia.",
"Oracle connection could not be established" : "Az Oracle kapcsolat nem hozható létre",
@@ -121,6 +127,8 @@ OC.L10N.register(
"PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név vagy jelszó érvénytelen",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott, és a %s nem lesz teljesen működőképes. Csak saját felelősségre használja.",
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux kiszolgálót használni.",
+ "It seems that this %s instance is running on a 32-bit PHP environment. 64-bit is required for 26 and higher." : "Úgy tűnik, hogy ez a %s példány 32 bites PHP környezeten fut. A 26-es és újabb verziókhoz 64 bites szükséges.",
+ "Please switch to 64-bit PHP." : "Váltson 64 bites PHP-ra.",
"Set an admin username." : "Állítson be egy rendszergazdai felhasználónevet.",
"Set an admin password." : "Állítson be egy rendszergazdai jelszót.",
"Cannot create or write into the data directory %s" : "Nem létre létrehozni vagy beleírni a(z) %s adatkönyvtárba",
@@ -144,6 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s megosztotta Önnel: „%2$s”.",
"Click the button below to open it." : "Kattintson a lenti gombra a megnyitáshoz.",
"The requested share does not exist anymore" : "A kért megosztás már nem létezik",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "A felhasználó nem jött létre, mert elérte a felhasználókorlátot. Nézze meg az értesítéseit, hogy többet tudjon meg.",
"Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"",
"Sunday" : "Vasárnap",
"Monday" : "Hétfő",
@@ -277,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Az adatkönyvtára más felhasználók által is olvasható",
"Your data directory must be an absolute path" : "Az adatkönyvtárnak abszolút útvonalnak kell lennie",
"Check the value of \"datadirectory\" in your configuration" : "Ellenőrizze a „datadirectory” értékét a konfigurációban",
- "Your data directory is invalid" : "Az adatkönyvtár érvénytelen"
+ "Your data directory is invalid" : "Az adatkönyvtár érvénytelen",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Elérte a felhasználókorlátot, és a felhasználó nem jött létre. Nézze meg az értesítéseit, hogy többet tudjon meg."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json
index bec2c5bc0cd..f0a49eace53 100644
--- a/lib/l10n/hu.json
+++ b/lib/l10n/hu.json
@@ -6,6 +6,8 @@
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "A(z) %1$s alkalmazás fájljait helytelenül cserélték le. Ellenőrizze, hogy a verzió kompatibilis-e a kiszolgálóval.",
"Sample configuration detected" : "Példabeállítások észlelve",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik, hogy a példakonfigurációt másolta le. Ez működésképtelenné teheti a telepítést, és nem támogatott. Olvassa el a dokumentációt, mielőtt módosításokat véget a config.php fájlban.",
+ "404" : "404",
+ "The page could not be found on the server." : "Az oldal nem található a kiszolgálón.",
"%s email verification" : "%s e-mail ellenőrzés",
"Email verification" : "E-mail ellenőrzés",
"Click the following button to confirm your email." : "Kattintson a következő gombra, hogy megerősítse az e-mail-címét.",
@@ -112,6 +114,10 @@
"Role" : "Szerepkör",
"Unknown user" : "Ismeretlen felhasználó",
"Additional settings" : "További beállítások",
+ "Enter the database username and name for %s" : "Adja meg a %s adatbázisának nevét és a hozzá tartozó felhasználónevet",
+ "Enter the database username for %s" : "Adja meg a %s adatbázisához tartozó felhasználónevet",
+ "Enter the database name for %s" : "Adja meg a %s adatbázisának nevét",
+ "You cannot use dots in the database name %s" : "A(z) %s adatbázisnév nem tartalmazhat pontot",
"MySQL username and/or password not valid" : "A MySQL felhasználónév vagy jelszó érvénytelen",
"You need to enter details of an existing account." : "Egy már létező fiók adatait kell megadnia.",
"Oracle connection could not be established" : "Az Oracle kapcsolat nem hozható létre",
@@ -119,6 +125,8 @@
"PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név vagy jelszó érvénytelen",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott, és a %s nem lesz teljesen működőképes. Csak saját felelősségre használja.",
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux kiszolgálót használni.",
+ "It seems that this %s instance is running on a 32-bit PHP environment. 64-bit is required for 26 and higher." : "Úgy tűnik, hogy ez a %s példány 32 bites PHP környezeten fut. A 26-es és újabb verziókhoz 64 bites szükséges.",
+ "Please switch to 64-bit PHP." : "Váltson 64 bites PHP-ra.",
"Set an admin username." : "Állítson be egy rendszergazdai felhasználónevet.",
"Set an admin password." : "Állítson be egy rendszergazdai jelszót.",
"Cannot create or write into the data directory %s" : "Nem létre létrehozni vagy beleírni a(z) %s adatkönyvtárba",
@@ -142,6 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s megosztotta Önnel: „%2$s”.",
"Click the button below to open it." : "Kattintson a lenti gombra a megnyitáshoz.",
"The requested share does not exist anymore" : "A kért megosztás már nem létezik",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "A felhasználó nem jött létre, mert elérte a felhasználókorlátot. Nézze meg az értesítéseit, hogy többet tudjon meg.",
"Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"",
"Sunday" : "Vasárnap",
"Monday" : "Hétfő",
@@ -275,6 +284,7 @@
"Your data directory is readable by other users" : "Az adatkönyvtára más felhasználók által is olvasható",
"Your data directory must be an absolute path" : "Az adatkönyvtárnak abszolút útvonalnak kell lennie",
"Check the value of \"datadirectory\" in your configuration" : "Ellenőrizze a „datadirectory” értékét a konfigurációban",
- "Your data directory is invalid" : "Az adatkönyvtár érvénytelen"
+ "Your data directory is invalid" : "Az adatkönyvtár érvénytelen",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Elérte a felhasználókorlátot, és a felhasználó nem jött létre. Nézze meg az értesítéseit, hogy többet tudjon meg."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js
index 68ecd585fd8..c0b20ed3455 100644
--- a/lib/l10n/ja.js
+++ b/lib/l10n/ja.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$sが あなたと »%2$s« を共有しました。",
"Click the button below to open it." : "開くには下のボタンをクリック",
"The requested share does not exist anymore" : "この共有はもう存在しません。",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "ユーザー制限に達したため、ユーザーは作成されませんでした。詳細については、通知を確認してください。",
"Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした",
"Sunday" : "日曜日",
"Monday" : "月曜日",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "データディレクトリは、他のユーザーから読み取り専用です",
"Your data directory must be an absolute path" : "データディレクトリは、絶対パスにする必要があります",
"Check the value of \"datadirectory\" in your configuration" : "設定ファイル内の \"datadirectory\" の値を確認してください。",
- "Your data directory is invalid" : "データディレクトリが無効です"
+ "Your data directory is invalid" : "データディレクトリが無効です",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "ユーザー制限に達したため、ユーザーは作成されませんでした。詳細については、通知を確認してください。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json
index 059554ebfaa..910b4717e4b 100644
--- a/lib/l10n/ja.json
+++ b/lib/l10n/ja.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$sが あなたと »%2$s« を共有しました。",
"Click the button below to open it." : "開くには下のボタンをクリック",
"The requested share does not exist anymore" : "この共有はもう存在しません。",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "ユーザー制限に達したため、ユーザーは作成されませんでした。詳細については、通知を確認してください。",
"Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした",
"Sunday" : "日曜日",
"Monday" : "月曜日",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "データディレクトリは、他のユーザーから読み取り専用です",
"Your data directory must be an absolute path" : "データディレクトリは、絶対パスにする必要があります",
"Check the value of \"datadirectory\" in your configuration" : "設定ファイル内の \"datadirectory\" の値を確認してください。",
- "Your data directory is invalid" : "データディレクトリが無効です"
+ "Your data directory is invalid" : "データディレクトリが無効です",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "ユーザー制限に達したため、ユーザーは作成されませんでした。詳細については、通知を確認してください。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/lv.js b/lib/l10n/lv.js
index 9485dff68eb..481146c3378 100644
--- a/lib/l10n/lv.js
+++ b/lib/l10n/lv.js
@@ -6,6 +6,10 @@ OC.L10N.register(
"Sample configuration detected" : "Atrasta konfigurācijas paraugs",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Konstatēts, ka paraug konfigurācija ir nokopēta. Tas var izjaukt jūsu instalāciju un nav atbalstīts. Lūdzu, izlasiet dokumentāciju, pirms veicat izmaiņas config.php",
"404" : "404",
+ "%s email verification" : "%s e-pasta pārbaude",
+ "Email verification" : "E-pasta pārbaude",
+ "Click the following button to confirm your email." : "Noklikšķiniet uz šīs pogas, lai apstiprinātu savu e-pastu.",
+ "Confirm your email" : "Apstipriniet savu e-pastu",
"%1$s and %2$s" : "%1$s un %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s un %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s un %4$s",
@@ -41,6 +45,7 @@ OC.L10N.register(
"Appearance and accessibility" : "Izskats un pieejamība",
"Apps" : "Lietotnes",
"Personal settings" : "Personiskie iestatījumi",
+ "Administration settings" : "Administrēšanas iestatījumi",
"Settings" : "Iestatījumi",
"Log out" : "Izrakstīties",
"Users" : "Lietotāji",
diff --git a/lib/l10n/lv.json b/lib/l10n/lv.json
index 3cd0d9615d5..79ae90f6fbb 100644
--- a/lib/l10n/lv.json
+++ b/lib/l10n/lv.json
@@ -4,6 +4,10 @@
"Sample configuration detected" : "Atrasta konfigurācijas paraugs",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Konstatēts, ka paraug konfigurācija ir nokopēta. Tas var izjaukt jūsu instalāciju un nav atbalstīts. Lūdzu, izlasiet dokumentāciju, pirms veicat izmaiņas config.php",
"404" : "404",
+ "%s email verification" : "%s e-pasta pārbaude",
+ "Email verification" : "E-pasta pārbaude",
+ "Click the following button to confirm your email." : "Noklikšķiniet uz šīs pogas, lai apstiprinātu savu e-pastu.",
+ "Confirm your email" : "Apstipriniet savu e-pastu",
"%1$s and %2$s" : "%1$s un %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s un %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s un %4$s",
@@ -39,6 +43,7 @@
"Appearance and accessibility" : "Izskats un pieejamība",
"Apps" : "Lietotnes",
"Personal settings" : "Personiskie iestatījumi",
+ "Administration settings" : "Administrēšanas iestatījumi",
"Settings" : "Iestatījumi",
"Log out" : "Izrakstīties",
"Users" : "Lietotāji",
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index bab9d6c8c42..1a3f24d56b0 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s udostępnił Tobie »%2$s«.",
"Click the button below to open it." : "Kliknij przycisk poniżej, aby otworzyć.",
"The requested share does not exist anymore" : "Żądane udostępnienie już nie istnieje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Osiągnięto limit użytkowników i użytkownik nie został utworzony. Sprawdź swoje powiadomienia, aby dowiedzieć się więcej.",
"Could not find category \"%s\"" : "Nie można znaleźć kategorii \"%s\"",
"Sunday" : "Niedziela",
"Monday" : "Poniedziałek",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Twój katalog danych jest widoczny dla innych użytkowników",
"Your data directory must be an absolute path" : "Katalog danych musi mieć ścieżkę absolutną",
"Check the value of \"datadirectory\" in your configuration" : "Sprawdź wartość \"datadirectory\" w swojej konfiguracji",
- "Your data directory is invalid" : "Katalog danych jest nieprawidłowy"
+ "Your data directory is invalid" : "Katalog danych jest nieprawidłowy",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Osiągnięto limit użytkowników i użytkownik nie został utworzony. Sprawdź swoje powiadomienia, aby dowiedzieć się więcej."
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index f1db02fde82..8420a5edc5f 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s udostępnił Tobie »%2$s«.",
"Click the button below to open it." : "Kliknij przycisk poniżej, aby otworzyć.",
"The requested share does not exist anymore" : "Żądane udostępnienie już nie istnieje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Osiągnięto limit użytkowników i użytkownik nie został utworzony. Sprawdź swoje powiadomienia, aby dowiedzieć się więcej.",
"Could not find category \"%s\"" : "Nie można znaleźć kategorii \"%s\"",
"Sunday" : "Niedziela",
"Monday" : "Poniedziałek",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "Twój katalog danych jest widoczny dla innych użytkowników",
"Your data directory must be an absolute path" : "Katalog danych musi mieć ścieżkę absolutną",
"Check the value of \"datadirectory\" in your configuration" : "Sprawdź wartość \"datadirectory\" w swojej konfiguracji",
- "Your data directory is invalid" : "Katalog danych jest nieprawidłowy"
+ "Your data directory is invalid" : "Katalog danych jest nieprawidłowy",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Osiągnięto limit użytkowników i użytkownik nie został utworzony. Sprawdź swoje powiadomienia, aby dowiedzieć się więcej."
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index 3a2c200a04e..f695f626212 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s compartilhou »%2$s« com você.",
"Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
"The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "O limite de usuários foi atingido e o usuário não foi criado. Verifique suas notificações para saber mais.",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Segunda-feira",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "O diretório de dados está legível para outros usuários",
"Your data directory must be an absolute path" : "O diretório de dados deve ser um caminho absoluto",
"Check the value of \"datadirectory\" in your configuration" : "Verifique o valor do \"datadirectory\" na sua configuração",
- "Your data directory is invalid" : "Seu diretório de dados é inválido"
+ "Your data directory is invalid" : "Seu diretório de dados é inválido",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "O limite de usuários foi atingido e o usuário não foi criado. Verifique suas notificações para saber mais."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index 10d7a9c44cd..71ead0227cc 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$s compartilhou »%2$s« com você.",
"Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
"The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "O limite de usuários foi atingido e o usuário não foi criado. Verifique suas notificações para saber mais.",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Segunda-feira",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "O diretório de dados está legível para outros usuários",
"Your data directory must be an absolute path" : "O diretório de dados deve ser um caminho absoluto",
"Check the value of \"datadirectory\" in your configuration" : "Verifique o valor do \"datadirectory\" na sua configuração",
- "Your data directory is invalid" : "Seu diretório de dados é inválido"
+ "Your data directory is invalid" : "Seu diretório de dados é inválido",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "O limite de usuários foi atingido e o usuário não foi criado. Verifique suas notificações para saber mais."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js
index 1a6d482b42b..2dd56c8ce5f 100644
--- a/lib/l10n/sk.js
+++ b/lib/l10n/sk.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s vám sprístupnil »%2$s«.",
"Click the button below to open it." : "Pre otvorenie klienta kliknite na tlačítko nižšie.",
"The requested share does not exist anymore" : "Požadované sprístupnenie už neexistuje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií.",
"Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"",
"Sunday" : "Nedeľa",
"Monday" : "Pondelok",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Váš priečinok s dátami je prístupný na čítanie ostatným používateľom",
"Your data directory must be an absolute path" : "Priečinok s dátami musí byť zadaný ako absolútna cesta",
"Check the value of \"datadirectory\" in your configuration" : "Skontrolujte hodnotu \"datadirectory\" vo vašej konfigurácii",
- "Your data directory is invalid" : "Priečinok s dátami je neplatný"
+ "Your data directory is invalid" : "Priečinok s dátami je neplatný",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií."
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json
index 6d317dec501..15ce14a15cc 100644
--- a/lib/l10n/sk.json
+++ b/lib/l10n/sk.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s vám sprístupnil »%2$s«.",
"Click the button below to open it." : "Pre otvorenie klienta kliknite na tlačítko nižšie.",
"The requested share does not exist anymore" : "Požadované sprístupnenie už neexistuje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií.",
"Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"",
"Sunday" : "Nedeľa",
"Monday" : "Pondelok",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "Váš priečinok s dátami je prístupný na čítanie ostatným používateľom",
"Your data directory must be an absolute path" : "Priečinok s dátami musí byť zadaný ako absolútna cesta",
"Check the value of \"datadirectory\" in your configuration" : "Skontrolujte hodnotu \"datadirectory\" vo vašej konfigurácii",
- "Your data directory is invalid" : "Priečinok s dátami je neplatný"
+ "Your data directory is invalid" : "Priečinok s dátami je neplatný",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index 3f58613c2ad..8253c6538c0 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s, sizinle »%2$s« ögesini paylaştı.",
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın.",
"Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı",
"Sunday" : "Pazar",
"Monday" : "Pazartesi",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Veri klasörünüz diğer kullanıcılar tarafından okunabilir",
"Your data directory must be an absolute path" : "Veri klasörünüz mutlak bir yol olmalıdır",
"Check the value of \"datadirectory\" in your configuration" : "Yapılandırmanızdaki \"datadirectory\" seçeneğini denetleyin",
- "Your data directory is invalid" : "Veri klasörünüz geçersiz"
+ "Your data directory is invalid" : "Veri klasörünüz geçersiz",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın."
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 112235de5df..dba23731405 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s, sizinle »%2$s« ögesini paylaştı.",
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın.",
"Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı",
"Sunday" : "Pazar",
"Monday" : "Pazartesi",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "Veri klasörünüz diğer kullanıcılar tarafından okunabilir",
"Your data directory must be an absolute path" : "Veri klasörünüz mutlak bir yol olmalıdır",
"Check the value of \"datadirectory\" in your configuration" : "Yapılandırmanızdaki \"datadirectory\" seçeneğini denetleyin",
- "Your data directory is invalid" : "Veri klasörünüz geçersiz"
+ "Your data directory is invalid" : "Veri klasörünüz geçersiz",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index fb4c1ce044d..43ea59c7558 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s 对您共享了 »%2$s«。",
"Click the button below to open it." : "点击下方按钮可打开它。",
"The requested share does not exist anymore" : "当前请求的共享已经不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已达到用户上限,未创建该用户。请检查您的通知以了解更多。",
"Could not find category \"%s\"" : "无法找到分类 \"%s\"",
"Sunday" : "星期日",
"Monday" : "星期一",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "您的数据目录可被其他用户读取",
"Your data directory must be an absolute path" : "您的数据目录必须是绝对路径",
"Check the value of \"datadirectory\" in your configuration" : "请检查配置文件中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的数据目录无效"
+ "Your data directory is invalid" : "您的数据目录无效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已达到用户上限,未创建该用户。请检查您的通知以了解更多。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index 0c315739503..14652728147 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$s 对您共享了 »%2$s«。",
"Click the button below to open it." : "点击下方按钮可打开它。",
"The requested share does not exist anymore" : "当前请求的共享已经不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已达到用户上限,未创建该用户。请检查您的通知以了解更多。",
"Could not find category \"%s\"" : "无法找到分类 \"%s\"",
"Sunday" : "星期日",
"Monday" : "星期一",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "您的数据目录可被其他用户读取",
"Your data directory must be an absolute path" : "您的数据目录必须是绝对路径",
"Check the value of \"datadirectory\" in your configuration" : "请检查配置文件中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的数据目录无效"
+ "Your data directory is invalid" : "您的数据目录无效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已达到用户上限,未创建该用户。请检查您的通知以了解更多。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_HK.js b/lib/l10n/zh_HK.js
index 4796f361fae..80e0944f2ad 100644
--- a/lib/l10n/zh_HK.js
+++ b/lib/l10n/zh_HK.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
"Click the button below to open it." : "點下方連結開啟",
"The requested share does not exist anymore" : "該分享已經不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "用戶數量已達上限,無法創建新用戶。請查看您的通知以獲取更多資料。",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "未創建用戶因為已達到用戶上限。請查看您的通知以了解更多信息。",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "星期日",
"Monday" : "星期一",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "您的資料目錄可以被其他用戶讀取",
"Your data directory must be an absolute path" : "您的資料目錄必須為絕對路徑",
"Check the value of \"datadirectory\" in your configuration" : "請檢查您的設定檔中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的資料目錄無效"
+ "Your data directory is invalid" : "您的資料目錄無效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "用戶數量已達上限,無法創建新用戶。請查看您的通知以獲取更多資料。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_HK.json b/lib/l10n/zh_HK.json
index 592c1a94f89..d962baded59 100644
--- a/lib/l10n/zh_HK.json
+++ b/lib/l10n/zh_HK.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
"Click the button below to open it." : "點下方連結開啟",
"The requested share does not exist anymore" : "該分享已經不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "用戶數量已達上限,無法創建新用戶。請查看您的通知以獲取更多資料。",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "未創建用戶因為已達到用戶上限。請查看您的通知以了解更多信息。",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "星期日",
"Monday" : "星期一",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "您的資料目錄可以被其他用戶讀取",
"Your data directory must be an absolute path" : "您的資料目錄必須為絕對路徑",
"Check the value of \"datadirectory\" in your configuration" : "請檢查您的設定檔中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的資料目錄無效"
+ "Your data directory is invalid" : "您的資料目錄無效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "用戶數量已達上限,無法創建新用戶。請查看您的通知以獲取更多資料。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index e125172a3b9..9a6ce31ad47 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
"Click the button below to open it." : "點下方連結開啟",
"The requested share does not exist anymore" : "該分享已經不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已達使用者限制,所以未建立使用者。請檢查您的通知以取得更多資訊。",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "未建立使用者,因為已達使用者上限。請檢查您的通知以取得更多資訊。",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "週日",
"Monday" : "週一",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "您的資料目錄可以被其他使用者讀取",
"Your data directory must be an absolute path" : "您的資料目錄必須為絕對路徑",
"Check the value of \"datadirectory\" in your configuration" : "請檢查您的設定檔中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的資料目錄無效"
+ "Your data directory is invalid" : "您的資料目錄無效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已達使用者限制,所以未建立使用者。請檢查您的通知以取得更多資訊。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index 501fd0f4321..8e06f24bb8b 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
"Click the button below to open it." : "點下方連結開啟",
"The requested share does not exist anymore" : "該分享已經不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已達使用者限制,所以未建立使用者。請檢查您的通知以取得更多資訊。",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "未建立使用者,因為已達使用者上限。請檢查您的通知以取得更多資訊。",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "週日",
"Monday" : "週一",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "您的資料目錄可以被其他使用者讀取",
"Your data directory must be an absolute path" : "您的資料目錄必須為絕對路徑",
"Check the value of \"datadirectory\" in your configuration" : "請檢查您的設定檔中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的資料目錄無效"
+ "Your data directory is invalid" : "您的資料目錄無效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已達使用者限制,所以未建立使用者。請檢查您的通知以取得更多資訊。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php
index 00e5dddc1f9..708b31b3136 100644
--- a/lib/private/AppConfig.php
+++ b/lib/private/AppConfig.php
@@ -46,6 +46,7 @@ class AppConfig implements IAppConfig {
/** @var array[] */
protected $sensitiveValues = [
'circles' => [
+ '/^key_pairs$/',
'/^local_gskey$/',
],
'external' => [
@@ -132,6 +133,9 @@ class AppConfig implements IAppConfig {
'user_ldap' => [
'/^(s..)?ldap_agent_password$/',
],
+ 'user_saml' => [
+ '/^idp-x509cert$/',
+ ],
];
/** @var Connection */
diff --git a/lib/private/Notification/Notification.php b/lib/private/Notification/Notification.php
index add4029b616..3e5cf1d6934 100644
--- a/lib/private/Notification/Notification.php
+++ b/lib/private/Notification/Notification.php
@@ -197,12 +197,12 @@ class Notification implements INotification {
* @since 8.2.0 - 9.0.0: Type of $id changed to string
*/
public function setObject(string $type, string $id): INotification {
- if ($type === '' || mb_strlen($type) > 64) {
+ if ($type === '' || isset($type[64])) {
throw new \InvalidArgumentException('The given object type is invalid');
}
$this->objectType = $type;
- if ($id === '' || mb_strlen($id) > 64) {
+ if ($id === '' || isset($id[64])) {
throw new \InvalidArgumentException('The given object id is invalid');
}
$this->objectId = $id;
diff --git a/lib/private/Setup/PostgreSQL.php b/lib/private/Setup/PostgreSQL.php
index bc24909dc3d..af816c7ad04 100644
--- a/lib/private/Setup/PostgreSQL.php
+++ b/lib/private/Setup/PostgreSQL.php
@@ -62,6 +62,7 @@ class PostgreSQL extends AbstractDatabase {
}
if ($canCreateRoles) {
+ $connectionMainDatabase = $this->connect();
//use the admin login data for the new database user
//add prefix to the postgresql user name to prevent collisions
@@ -70,6 +71,16 @@ class PostgreSQL extends AbstractDatabase {
$this->dbPassword = \OC::$server->getSecureRandom()->generate(30, ISecureRandom::CHAR_ALPHANUMERIC);
$this->createDBUser($connection);
+
+ // Go to the main database and grant create on the public schema
+ // The code below is implemented to make installing possible with PostgreSQL version 15:
+ // https://www.postgresql.org/docs/release/15.0/
+ // From the release notes: For new databases having no need to defend against insider threats, granting CREATE permission will yield the behavior of prior releases
+ // Therefore we assume that the database is only used by one user/service which is Nextcloud
+ // Additional services should get installed in a separate database in order to stay secure
+ // Also see https://www.postgresql.org/docs/15/ddl-schemas.html#DDL-SCHEMAS-PATTERNS
+ $connectionMainDatabase->executeQuery('GRANT CREATE ON SCHEMA public TO ' . addslashes($this->dbUser));
+ $connectionMainDatabase->close();
}
$this->config->setValues([
diff --git a/lib/private/Support/Subscription/Assertion.php b/lib/private/Support/Subscription/Assertion.php
index 9b77e875944..451afe83bd3 100644
--- a/lib/private/Support/Subscription/Assertion.php
+++ b/lib/private/Support/Subscription/Assertion.php
@@ -49,7 +49,7 @@ class Assertion implements IAssertion {
public function createUserIsLegit(): void {
if ($this->registry->delegateIsHardUserLimitReached($this->notificationManager)) {
$l = $this->l10nFactory->get('lib');
- throw new HintException($l->t('The user limit has been reached and the user was not created. Check your notifications to learn more.'));
+ throw new HintException($l->t('The user was not created because the user limit has been reached. Check your notifications to learn more.'));
}
}
}
diff --git a/lib/private/SystemConfig.php b/lib/private/SystemConfig.php
index 0bc6154fbc4..6cd0e4376c5 100644
--- a/lib/private/SystemConfig.php
+++ b/lib/private/SystemConfig.php
@@ -72,6 +72,10 @@ class SystemConfig {
'host' => true,
'password' => true,
],
+ 'redis.cluster' => [
+ 'seeds' => true,
+ 'password' => true,
+ ],
'objectstore' => [
'arguments' => [
// Legacy Swift (https://github.com/nextcloud/server/pull/17696#discussion_r341302207)
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index d041db2a7c2..e043f79745a 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -102,7 +102,7 @@ class TemplateLayout extends \OC_Template {
$this->initialState->provideInitialState('core', 'active-app', $this->navigationManager->getActiveEntry());
$this->initialState->provideInitialState('core', 'apps', $this->navigationManager->getAll());
$this->initialState->provideInitialState('unified-search', 'limit-default', (int)$this->config->getAppValue('core', 'unified-search.limit-default', (string)SearchQuery::LIMIT_DEFAULT));
- $this->initialState->provideInitialState('unified-search', 'min-search-length', (int)$this->config->getAppValue('core', 'unified-search.min-search-length', (string)2));
+ $this->initialState->provideInitialState('unified-search', 'min-search-length', (int)$this->config->getAppValue('core', 'unified-search.min-search-length', (string)1));
$this->initialState->provideInitialState('unified-search', 'live-search', $this->config->getAppValue('core', 'unified-search.live-search', 'yes') === 'yes');
Util::addScript('core', 'unified-search', 'core');
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index acf95b1e271..f9ad1f72ab8 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -89,7 +89,6 @@ use Symfony\Component\EventDispatcher\GenericEvent;
* @package OC\User
*/
class Session implements IUserSession, Emitter {
-
/** @var Manager $manager */
private $manager;
@@ -448,7 +447,6 @@ class Session implements IUserSession, Emitter {
// Try to login with this username and password
if (!$this->login($user, $password)) {
-
// Failed, maybe the user used their email address
if (!filter_var($user, FILTER_VALIDATE_EMAIL)) {
return false;
@@ -672,7 +670,7 @@ class Session implements IUserSession, Emitter {
// User does not exist
return false;
}
- $name = isset($request->server['HTTP_USER_AGENT']) ? utf8_encode($request->server['HTTP_USER_AGENT']) : 'unknown browser';
+ $name = isset($request->server['HTTP_USER_AGENT']) ? mb_convert_encoding($request->server['HTTP_USER_AGENT'], 'UTF-8', 'ISO-8859-1') : 'unknown browser';
try {
$sessionId = $this->session->getId();
$pwd = $this->getPassword($password);
diff --git a/resources/codesigning/root.crl b/resources/codesigning/root.crl
index fec2a211be7..bd3abd04914 100644
--- a/resources/codesigning/root.crl
+++ b/resources/codesigning/root.crl
@@ -1,43 +1,44 @@
-----BEGIN X509 CRL-----
-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
+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
-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
+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
-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
+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
+0lgQkIofBsCJkTCW8w==
-----END X509 CRL-----
diff --git a/tests/drone-run-integration-tests.sh b/tests/drone-run-integration-tests.sh
index af3c7a895c8..a341f363b86 100755
--- a/tests/drone-run-integration-tests.sh
+++ b/tests/drone-run-integration-tests.sh
@@ -20,4 +20,6 @@ echo "========================="
[[ $(git diff --name-only origin/$DRONE_TARGET_BRANCH...$DRONE_COMMIT_SHA | grep -c "^build/integration/") -gt 0 ]] && echo "Integration test files are modified" && exit 0
+[[ $(git diff --name-only origin/$DRONE_TARGET_BRANCH...$DRONE_COMMIT_SHA | grep -c "3rdparty") -gt 0 ]] && echo "3rdparty is modified" && exit 0
+
exit 1
diff --git a/tests/lib/DB/MigrationsTest.php b/tests/lib/DB/MigrationsTest.php
index 3d115f25adf..b7d49b565ac 100644
--- a/tests/lib/DB/MigrationsTest.php
+++ b/tests/lib/DB/MigrationsTest.php
@@ -31,7 +31,6 @@ use OCP\Migration\IMigrationStep;
* @package Test\DB
*/
class MigrationsTest extends \Test\TestCase {
-
/** @var MigrationService | \PHPUnit\Framework\MockObject\MockObject */
private $migrationService;
/** @var \PHPUnit\Framework\MockObject\MockObject | IDBConnection $db */
@@ -247,6 +246,9 @@ class MigrationsTest extends \Test\TestCase {
->willReturn(\str_repeat('a', 30));
$primaryKey = $this->createMock(Index::class);
+ $primaryKey->expects($this->once())
+ ->method('getName')
+ ->willReturn(\str_repeat('a', 30));
$table->expects($this->once())
->method('getColumns')
diff --git a/tests/lib/Encryption/Keys/StorageTest.php b/tests/lib/Encryption/Keys/StorageTest.php
index bb7bbbcd7c1..d1c0257cc6e 100644
--- a/tests/lib/Encryption/Keys/StorageTest.php
+++ b/tests/lib/Encryption/Keys/StorageTest.php
@@ -31,22 +31,23 @@ use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class StorageTest extends TestCase {
-
/** @var Storage */
protected $storage;
- /** @var \PHPUnit\Framework\MockObject\MockObject */
+ /** @var MockObject|\OC\Encryption\Util */
protected $util;
- /** @var \PHPUnit\Framework\MockObject\MockObject */
+ /** @var MockObject|View */
protected $view;
- /** @var \PHPUnit\Framework\MockObject\MockObject */
+ /** @var MockObject|IConfig */
protected $config;
/** @var MockObject|ICrypto */
protected $crypto;
+ private array $mkdirStack = [];
+
protected function setUp(): void {
parent::setUp();
diff --git a/tests/lib/Security/VerificationToken/VerificationTokenTest.php b/tests/lib/Security/VerificationToken/VerificationTokenTest.php
index 4d90e304ab7..481646f26ab 100644
--- a/tests/lib/Security/VerificationToken/VerificationTokenTest.php
+++ b/tests/lib/Security/VerificationToken/VerificationTokenTest.php
@@ -35,18 +35,21 @@ use OCP\Security\ICrypto;
use OCP\Security\ISecureRandom;
use OCP\Security\VerificationToken\InvalidTokenException;
use Test\TestCase;
+use PHPUnit\Framework\MockObject\MockObject;
class VerificationTokenTest extends TestCase {
/** @var VerificationToken */
protected $token;
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IConfig|MockObject */
protected $config;
- /** @var ISecureRandom|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var ISecureRandom|MockObject */
protected $secureRandom;
- /** @var ICrypto|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var ICrypto|MockObject */
protected $crypto;
- /** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var ITimeFactory|MockObject */
protected $timeFactory;
+ /** @var IJobList|MockObject */
+ protected $jobList;
protected function setUp(): void {
parent::setUp();
diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php
index 29ae33c3c93..cc13479b1d0 100644
--- a/tests/lib/Settings/ManagerTest.php
+++ b/tests/lib/Settings/ManagerTest.php
@@ -36,24 +36,26 @@ use OCP\Settings\ISettings;
use OCP\Settings\ISubAdminSettings;
use Psr\Log\LoggerInterface;
use Test\TestCase;
+use PHPUnit\Framework\MockObject\MockObject;
class ManagerTest extends TestCase {
-
- /** @var Manager|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var Manager|MockObject */
private $manager;
- /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var LoggerInterface|MockObject */
private $logger;
- /** @var IDBConnection|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IDBConnection|MockObject */
private $l10n;
- /** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IFactory|MockObject */
private $l10nFactory;
- /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IURLGenerator|MockObject */
private $url;
- /** @var IServerContainer|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IServerContainer|MockObject */
private $container;
- /** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var AuthorizedGroupMapper|MockObject */
+ private $mapper;
+ /** @var IGroupManager|MockObject */
private $groupManager;
- /** @var ISubAdmin|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var ISubAdmin|MockObject */
private $subAdmin;
protected function setUp(): void {
diff --git a/tests/lib/Share20/ShareTest.php b/tests/lib/Share20/ShareTest.php
index 7d4dc6de2d6..b2419e07683 100644
--- a/tests/lib/Share20/ShareTest.php
+++ b/tests/lib/Share20/ShareTest.php
@@ -23,6 +23,7 @@ namespace Test\Share20;
use OCP\Files\IRootFolder;
use OCP\IUserManager;
+use PHPUnit\Framework\MockObject\MockObject;
/**
* Class ShareTest
@@ -30,9 +31,10 @@ use OCP\IUserManager;
* @package Test\Share20
*/
class ShareTest extends \Test\TestCase {
-
- /** @var IRootFolder|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IRootFolder|MockObject */
protected $rootFolder;
+ /** @var IUserManager|MockObject */
+ protected $userManager;
/** @var \OCP\Share\IShare */
protected $share;