aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/l10n/af.js6
-rw-r--r--apps/files/l10n/af.json6
-rw-r--r--apps/files/l10n/ar.js6
-rw-r--r--apps/files/l10n/ar.json6
-rw-r--r--apps/files/l10n/bg.js6
-rw-r--r--apps/files/l10n/bg.json6
-rw-r--r--apps/files/l10n/br.js6
-rw-r--r--apps/files/l10n/br.json6
-rw-r--r--apps/files/l10n/ca.js6
-rw-r--r--apps/files/l10n/ca.json6
-rw-r--r--apps/files/l10n/cs.js6
-rw-r--r--apps/files/l10n/cs.json6
-rw-r--r--apps/files/l10n/da.js6
-rw-r--r--apps/files/l10n/da.json6
-rw-r--r--apps/files/l10n/de.js6
-rw-r--r--apps/files/l10n/de.json6
-rw-r--r--apps/files/l10n/de_DE.js6
-rw-r--r--apps/files/l10n/de_DE.json6
-rw-r--r--apps/files/l10n/el.js6
-rw-r--r--apps/files/l10n/el.json6
-rw-r--r--apps/files/l10n/en_GB.js6
-rw-r--r--apps/files/l10n/en_GB.json6
-rw-r--r--apps/files/l10n/eo.js6
-rw-r--r--apps/files/l10n/eo.json6
-rw-r--r--apps/files/l10n/es.js6
-rw-r--r--apps/files/l10n/es.json6
-rw-r--r--apps/files/l10n/es_419.js6
-rw-r--r--apps/files/l10n/es_419.json6
-rw-r--r--apps/files/l10n/es_AR.js6
-rw-r--r--apps/files/l10n/es_AR.json6
-rw-r--r--apps/files/l10n/es_CL.js6
-rw-r--r--apps/files/l10n/es_CL.json6
-rw-r--r--apps/files/l10n/es_CO.js6
-rw-r--r--apps/files/l10n/es_CO.json6
-rw-r--r--apps/files/l10n/es_CR.js6
-rw-r--r--apps/files/l10n/es_CR.json6
-rw-r--r--apps/files/l10n/es_DO.js6
-rw-r--r--apps/files/l10n/es_DO.json6
-rw-r--r--apps/files/l10n/es_EC.js6
-rw-r--r--apps/files/l10n/es_EC.json6
-rw-r--r--apps/files/l10n/es_GT.js6
-rw-r--r--apps/files/l10n/es_GT.json6
-rw-r--r--apps/files/l10n/es_HN.js6
-rw-r--r--apps/files/l10n/es_HN.json6
-rw-r--r--apps/files/l10n/es_MX.js6
-rw-r--r--apps/files/l10n/es_MX.json6
-rw-r--r--apps/files/l10n/es_NI.js6
-rw-r--r--apps/files/l10n/es_NI.json6
-rw-r--r--apps/files/l10n/es_PA.js6
-rw-r--r--apps/files/l10n/es_PA.json6
-rw-r--r--apps/files/l10n/es_PE.js6
-rw-r--r--apps/files/l10n/es_PE.json6
-rw-r--r--apps/files/l10n/es_PR.js6
-rw-r--r--apps/files/l10n/es_PR.json6
-rw-r--r--apps/files/l10n/es_PY.js6
-rw-r--r--apps/files/l10n/es_PY.json6
-rw-r--r--apps/files/l10n/es_SV.js6
-rw-r--r--apps/files/l10n/es_SV.json6
-rw-r--r--apps/files/l10n/es_UY.js6
-rw-r--r--apps/files/l10n/es_UY.json6
-rw-r--r--apps/files/l10n/et_EE.js6
-rw-r--r--apps/files/l10n/et_EE.json6
-rw-r--r--apps/files/l10n/eu.js6
-rw-r--r--apps/files/l10n/eu.json6
-rw-r--r--apps/files/l10n/fa.js6
-rw-r--r--apps/files/l10n/fa.json6
-rw-r--r--apps/files/l10n/fi.js6
-rw-r--r--apps/files/l10n/fi.json6
-rw-r--r--apps/files/l10n/fr.js6
-rw-r--r--apps/files/l10n/fr.json6
-rw-r--r--apps/files/l10n/gl.js6
-rw-r--r--apps/files/l10n/gl.json6
-rw-r--r--apps/files/l10n/he.js6
-rw-r--r--apps/files/l10n/he.json6
-rw-r--r--apps/files/l10n/hr.js6
-rw-r--r--apps/files/l10n/hr.json6
-rw-r--r--apps/files/l10n/hu.js6
-rw-r--r--apps/files/l10n/hu.json6
-rw-r--r--apps/files/l10n/ia.js6
-rw-r--r--apps/files/l10n/ia.json6
-rw-r--r--apps/files/l10n/id.js6
-rw-r--r--apps/files/l10n/id.json6
-rw-r--r--apps/files/l10n/is.js6
-rw-r--r--apps/files/l10n/is.json6
-rw-r--r--apps/files/l10n/it.js6
-rw-r--r--apps/files/l10n/it.json6
-rw-r--r--apps/files/l10n/ja.js6
-rw-r--r--apps/files/l10n/ja.json6
-rw-r--r--apps/files/l10n/ka_GE.js6
-rw-r--r--apps/files/l10n/ka_GE.json6
-rw-r--r--apps/files/l10n/ko.js6
-rw-r--r--apps/files/l10n/ko.json6
-rw-r--r--apps/files/l10n/lt_LT.js6
-rw-r--r--apps/files/l10n/lt_LT.json6
-rw-r--r--apps/files/l10n/lv.js6
-rw-r--r--apps/files/l10n/lv.json6
-rw-r--r--apps/files/l10n/mk.js6
-rw-r--r--apps/files/l10n/mk.json6
-rw-r--r--apps/files/l10n/mn.js6
-rw-r--r--apps/files/l10n/mn.json6
-rw-r--r--apps/files/l10n/nb.js6
-rw-r--r--apps/files/l10n/nb.json6
-rw-r--r--apps/files/l10n/nl.js6
-rw-r--r--apps/files/l10n/nl.json6
-rw-r--r--apps/files/l10n/pl.js6
-rw-r--r--apps/files/l10n/pl.json6
-rw-r--r--apps/files/l10n/ps.js6
-rw-r--r--apps/files/l10n/ps.json6
-rw-r--r--apps/files/l10n/pt_BR.js10
-rw-r--r--apps/files/l10n/pt_BR.json10
-rw-r--r--apps/files/l10n/pt_PT.js6
-rw-r--r--apps/files/l10n/pt_PT.json6
-rw-r--r--apps/files/l10n/ro.js6
-rw-r--r--apps/files/l10n/ro.json6
-rw-r--r--apps/files/l10n/ru.js6
-rw-r--r--apps/files/l10n/ru.json6
-rw-r--r--apps/files/l10n/sc.js6
-rw-r--r--apps/files/l10n/sc.json6
-rw-r--r--apps/files/l10n/sk.js6
-rw-r--r--apps/files/l10n/sk.json6
-rw-r--r--apps/files/l10n/sl.js6
-rw-r--r--apps/files/l10n/sl.json6
-rw-r--r--apps/files/l10n/sq.js6
-rw-r--r--apps/files/l10n/sq.json6
-rw-r--r--apps/files/l10n/sr.js6
-rw-r--r--apps/files/l10n/sr.json6
-rw-r--r--apps/files/l10n/sv.js6
-rw-r--r--apps/files/l10n/sv.json6
-rw-r--r--apps/files/l10n/th.js6
-rw-r--r--apps/files/l10n/th.json6
-rw-r--r--apps/files/l10n/tr.js6
-rw-r--r--apps/files/l10n/tr.json6
-rw-r--r--apps/files/l10n/uk.js6
-rw-r--r--apps/files/l10n/uk.json6
-rw-r--r--apps/files/l10n/vi.js6
-rw-r--r--apps/files/l10n/vi.json6
-rw-r--r--apps/files/l10n/zh_CN.js6
-rw-r--r--apps/files/l10n/zh_CN.json6
-rw-r--r--apps/files/l10n/zh_HK.js6
-rw-r--r--apps/files/l10n/zh_HK.json6
-rw-r--r--apps/files/l10n/zh_TW.js6
-rw-r--r--apps/files/l10n/zh_TW.json6
-rw-r--r--apps/files_sharing/l10n/de_DE.js3
-rw-r--r--apps/files_sharing/l10n/de_DE.json3
-rw-r--r--apps/files_sharing/l10n/en_GB.js3
-rw-r--r--apps/files_sharing/l10n/en_GB.json3
-rw-r--r--apps/files_sharing/l10n/fr.js3
-rw-r--r--apps/files_sharing/l10n/fr.json3
-rw-r--r--apps/files_sharing/l10n/pt_BR.js12
-rw-r--r--apps/files_sharing/l10n/pt_BR.json12
-rw-r--r--apps/files_sharing/l10n/zh_HK.js3
-rw-r--r--apps/files_sharing/l10n/zh_HK.json3
-rw-r--r--apps/settings/l10n/pt_BR.js4
-rw-r--r--apps/settings/l10n/pt_BR.json4
-rw-r--r--apps/settings/src/components/AppList/AppItem.vue12
-rw-r--r--apps/settings/src/views/Apps.vue4
-rw-r--r--apps/theming/l10n/de_DE.js8
-rw-r--r--apps/theming/l10n/de_DE.json8
-rw-r--r--apps/theming/lib/Jobs/MigrateBackgroundImages.php11
-rw-r--r--apps/updatenotification/l10n/pt_BR.js1
-rw-r--r--apps/updatenotification/l10n/pt_BR.json1
-rw-r--r--apps/user_ldap/l10n/fr.js1
-rw-r--r--apps/user_ldap/l10n/fr.json1
-rw-r--r--apps/user_ldap/l10n/pt_BR.js1
-rw-r--r--apps/user_ldap/l10n/pt_BR.json1
-rw-r--r--build/ca-bundle-etag.txt2
-rw-r--r--core/l10n/pt_BR.js2
-rw-r--r--core/l10n/pt_BR.json2
-rw-r--r--core/src/views/Login.vue6
-rw-r--r--dist/core-login.js4
-rw-r--r--dist/core-login.js.map2
-rw-r--r--dist/settings-apps-view-7418.js4
-rw-r--r--dist/settings-apps-view-7418.js.map2
-rw-r--r--dist/settings-vue-settings-apps-users-management.js4
-rw-r--r--dist/settings-vue-settings-apps-users-management.js.map2
-rw-r--r--lib/l10n/pt_BR.js4
-rw-r--r--lib/l10n/pt_BR.json4
-rw-r--r--resources/config/ca-bundle.crt138
178 files changed, 542 insertions, 599 deletions
diff --git a/apps/files/l10n/af.js b/apps/files/l10n/af.js
index d84174c2716..154efc7275b 100644
--- a/apps/files/l10n/af.js
+++ b/apps/files/l10n/af.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Berging is tydelik onbeskikbaar",
- "Storage invalid" : "Berging ongeldig",
- "Unknown error" : "Onbekende fout",
"File could not be found" : "Lêer kon nie gevind word nie",
"Move or copy" : "Kopieer of skuif",
"Download" : "Laai af",
@@ -41,6 +38,7 @@ OC.L10N.register(
"Unable to determine date" : "Kan nie datum bepaal nie",
"This operation is forbidden" : "Die operasie is verbode",
"This directory is unavailable, please check the logs or contact the administrator" : "Hierdie gids is onbeskikbaar, gaan die logs na of kontak die administrateur",
+ "Storage is temporarily not available" : "Berging is tydelik onbeskikbaar",
"Could not move \"{file}\", target exists" : "Kon nie \"{file}\" skuif nie, teiken bestaan",
"Could not move \"{file}\"" : "Kon nie \"{file}\" skuif nie",
"copy" : "kopie",
@@ -111,6 +109,7 @@ OC.L10N.register(
"Accept" : "Aanvaar",
"in %s" : "in %s",
"File Management" : "Lêerbestuur",
+ "Unknown error" : "Onbekende fout",
"Show hidden files" : "Vertoon verborge lêers ",
"Cancel" : "Kanselleer",
"Create" : "Skep",
@@ -130,6 +129,7 @@ OC.L10N.register(
"Shared by link" : "Gedeel per skakel",
"Text file" : "Tekslêer",
"New text file.txt" : "Nuwe tekslêer.txt",
+ "Storage invalid" : "Berging ongeldig",
"Select" : "Kies",
"You don’t have permission to upload or create files here" : "U het nie toestemming om lêers hier op te laai of te skep nie",
"New" : "Nuwe",
diff --git a/apps/files/l10n/af.json b/apps/files/l10n/af.json
index 069ff48073a..69e340013a2 100644
--- a/apps/files/l10n/af.json
+++ b/apps/files/l10n/af.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Berging is tydelik onbeskikbaar",
- "Storage invalid" : "Berging ongeldig",
- "Unknown error" : "Onbekende fout",
"File could not be found" : "Lêer kon nie gevind word nie",
"Move or copy" : "Kopieer of skuif",
"Download" : "Laai af",
@@ -39,6 +36,7 @@
"Unable to determine date" : "Kan nie datum bepaal nie",
"This operation is forbidden" : "Die operasie is verbode",
"This directory is unavailable, please check the logs or contact the administrator" : "Hierdie gids is onbeskikbaar, gaan die logs na of kontak die administrateur",
+ "Storage is temporarily not available" : "Berging is tydelik onbeskikbaar",
"Could not move \"{file}\", target exists" : "Kon nie \"{file}\" skuif nie, teiken bestaan",
"Could not move \"{file}\"" : "Kon nie \"{file}\" skuif nie",
"copy" : "kopie",
@@ -109,6 +107,7 @@
"Accept" : "Aanvaar",
"in %s" : "in %s",
"File Management" : "Lêerbestuur",
+ "Unknown error" : "Onbekende fout",
"Show hidden files" : "Vertoon verborge lêers ",
"Cancel" : "Kanselleer",
"Create" : "Skep",
@@ -128,6 +127,7 @@
"Shared by link" : "Gedeel per skakel",
"Text file" : "Tekslêer",
"New text file.txt" : "Nuwe tekslêer.txt",
+ "Storage invalid" : "Berging ongeldig",
"Select" : "Kies",
"You don’t have permission to upload or create files here" : "U het nie toestemming om lêers hier op te laai of te skep nie",
"New" : "Nuwe",
diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js
index 9449b949d2b..3b87d7e321e 100644
--- a/apps/files/l10n/ar.js
+++ b/apps/files/l10n/ar.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "وحدة التخزين غير متوفرة",
- "Storage invalid" : "وحدة تخزين غير صالحة",
- "Unknown error" : "خطأ غير معروف",
"File could not be found" : "الملف غير موجود",
"Move or copy" : "إنقل أو انسخ",
"Download" : "تنزيل",
@@ -48,6 +45,7 @@ OC.L10N.register(
"Unable to determine date" : "تعذر تحديد التاريخ",
"This operation is forbidden" : "هذة العملية ممنوعة ",
"This directory is unavailable, please check the logs or contact the administrator" : "هذا المجلد غير متوفر, الرجاء مراجعة سجل الأخطاء أو الاتصال بمدير النظام",
+ "Storage is temporarily not available" : "وحدة التخزين غير متوفرة",
"Could not move \"{file}\", target exists" : "لا يمكن نقل \"{file}\", الملف موجود بالفعل هناك",
"Could not move \"{file}\"" : "لا يمكن نقل \"{file}\"",
"copy" : "أنسخ",
@@ -168,6 +166,7 @@ OC.L10N.register(
"Transfer" : "نقل ملكية",
"Transfer {path} to {userid}" : "نقل ملكية {path} إلى {userid}",
"Invalid path selected" : "المسار او الملف غير صحيح",
+ "Unknown error" : "خطأ غير معروف",
"Ownership transfer request sent" : "طلب نقل الملكية أرسل بنجاح",
"Show hidden files" : "عرض الملفات المخفية",
"Crop image previews" : "اقتصاص صورة العروض",
@@ -208,6 +207,7 @@ OC.L10N.register(
"Pending shares" : "انتظار المشاركات",
"Text file" : "ملف نصي",
"New text file.txt" : "ملف نصي جديد fille.txt",
+ "Storage invalid" : "وحدة تخزين غير صالحة",
"Select" : "إختر",
"You don’t have permission to upload or create files here" : "لا تملك الصلاحية لرفع او انشاء ملف هنا ",
"New" : "جديد",
diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json
index 44902471e21..1767ddebee8 100644
--- a/apps/files/l10n/ar.json
+++ b/apps/files/l10n/ar.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "وحدة التخزين غير متوفرة",
- "Storage invalid" : "وحدة تخزين غير صالحة",
- "Unknown error" : "خطأ غير معروف",
"File could not be found" : "الملف غير موجود",
"Move or copy" : "إنقل أو انسخ",
"Download" : "تنزيل",
@@ -46,6 +43,7 @@
"Unable to determine date" : "تعذر تحديد التاريخ",
"This operation is forbidden" : "هذة العملية ممنوعة ",
"This directory is unavailable, please check the logs or contact the administrator" : "هذا المجلد غير متوفر, الرجاء مراجعة سجل الأخطاء أو الاتصال بمدير النظام",
+ "Storage is temporarily not available" : "وحدة التخزين غير متوفرة",
"Could not move \"{file}\", target exists" : "لا يمكن نقل \"{file}\", الملف موجود بالفعل هناك",
"Could not move \"{file}\"" : "لا يمكن نقل \"{file}\"",
"copy" : "أنسخ",
@@ -166,6 +164,7 @@
"Transfer" : "نقل ملكية",
"Transfer {path} to {userid}" : "نقل ملكية {path} إلى {userid}",
"Invalid path selected" : "المسار او الملف غير صحيح",
+ "Unknown error" : "خطأ غير معروف",
"Ownership transfer request sent" : "طلب نقل الملكية أرسل بنجاح",
"Show hidden files" : "عرض الملفات المخفية",
"Crop image previews" : "اقتصاص صورة العروض",
@@ -206,6 +205,7 @@
"Pending shares" : "انتظار المشاركات",
"Text file" : "ملف نصي",
"New text file.txt" : "ملف نصي جديد fille.txt",
+ "Storage invalid" : "وحدة تخزين غير صالحة",
"Select" : "إختر",
"You don’t have permission to upload or create files here" : "لا تملك الصلاحية لرفع او انشاء ملف هنا ",
"New" : "جديد",
diff --git a/apps/files/l10n/bg.js b/apps/files/l10n/bg.js
index e5d3b6f06eb..e1cd4e51ebd 100644
--- a/apps/files/l10n/bg.js
+++ b/apps/files/l10n/bg.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Временно хранилището не е налично",
- "Storage invalid" : "Невалидно хранилище",
- "Unknown error" : "Неизвестна грешка",
"File could not be found" : "Файлът не може да бъде намерен",
"Move or copy" : "Премести или копирай",
"Download" : "Изтегли",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Неуспешно установяване на дата",
"This operation is forbidden" : "Операцията е забранена",
"This directory is unavailable, please check the logs or contact the administrator" : "Директорията не е налична. Проверете журнала или се свържете с администратора",
+ "Storage is temporarily not available" : "Временно хранилището не е налично",
"Could not move \"{file}\", target exists" : "Файлът \"{file}\" не може да бъде преместен, дестинацията съществува",
"Could not move \"{file}\"" : "Файлът \"{file}\" не може да бъде преместен",
"copy" : "Копиране",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Прехвърли",
"Transfer {path} to {userid}" : "Прехвърляне на {path} към {userid}",
"Invalid path selected" : "Предоставен е невалиден път до файл.",
+ "Unknown error" : "Неизвестна грешка",
"Ownership transfer request sent" : "Изпратена заявка за прехвърляне на собствеността",
"Cannot transfer ownership of a file or folder you do not own" : "Не можете да прехвърляте собственост върху файл или папка, които не притежавате",
"Open the files app settings" : "Отваряне на настройките на приложението за файлове",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Чакащи споделяния",
"Text file" : "Текстов файл",
"New text file.txt" : "Текстов файл.txt",
+ "Storage invalid" : "Невалидно хранилище",
"Select" : "Избери",
"You don’t have permission to upload or create files here" : "Нямаш разрешение да създаваш или качваш файлове тук.",
"New" : "Създай",
diff --git a/apps/files/l10n/bg.json b/apps/files/l10n/bg.json
index ed36f1dfd93..963bfacc95c 100644
--- a/apps/files/l10n/bg.json
+++ b/apps/files/l10n/bg.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Временно хранилището не е налично",
- "Storage invalid" : "Невалидно хранилище",
- "Unknown error" : "Неизвестна грешка",
"File could not be found" : "Файлът не може да бъде намерен",
"Move or copy" : "Премести или копирай",
"Download" : "Изтегли",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Неуспешно установяване на дата",
"This operation is forbidden" : "Операцията е забранена",
"This directory is unavailable, please check the logs or contact the administrator" : "Директорията не е налична. Проверете журнала или се свържете с администратора",
+ "Storage is temporarily not available" : "Временно хранилището не е налично",
"Could not move \"{file}\", target exists" : "Файлът \"{file}\" не може да бъде преместен, дестинацията съществува",
"Could not move \"{file}\"" : "Файлът \"{file}\" не може да бъде преместен",
"copy" : "Копиране",
@@ -176,6 +174,7 @@
"Transfer" : "Прехвърли",
"Transfer {path} to {userid}" : "Прехвърляне на {path} към {userid}",
"Invalid path selected" : "Предоставен е невалиден път до файл.",
+ "Unknown error" : "Неизвестна грешка",
"Ownership transfer request sent" : "Изпратена заявка за прехвърляне на собствеността",
"Cannot transfer ownership of a file or folder you do not own" : "Не можете да прехвърляте собственост върху файл или папка, които не притежавате",
"Open the files app settings" : "Отваряне на настройките на приложението за файлове",
@@ -223,6 +222,7 @@
"Pending shares" : "Чакащи споделяния",
"Text file" : "Текстов файл",
"New text file.txt" : "Текстов файл.txt",
+ "Storage invalid" : "Невалидно хранилище",
"Select" : "Избери",
"You don’t have permission to upload or create files here" : "Нямаш разрешение да създаваш или качваш файлове тук.",
"New" : "Създай",
diff --git a/apps/files/l10n/br.js b/apps/files/l10n/br.js
index 58312734c53..31344247f19 100644
--- a/apps/files/l10n/br.js
+++ b/apps/files/l10n/br.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "N'haller ket tizhout ar skor roadennoù evit ar poent",
- "Storage invalid" : "N'eo c'hall ket bezañ ar skor roadennoù-mañ",
- "Unknown error" : "Fazi dizanv",
"File could not be found" : "N'eo ket bet kavet ar restr",
"Move or copy" : "Dilec'hiañ pe eilañ",
"Download" : "Pellgargañ",
@@ -44,6 +41,7 @@ OC.L10N.register(
"Unable to determine date" : "Dibosupl eo resisaat an deiziat",
"This operation is forbidden" : "Difennet eo an ober-mañ",
"This directory is unavailable, please check the logs or contact the administrator" : "N'eus ket tu da dizhout an teuliad-mañ, lennit al logoù pe kit e darempred gant ar merour",
+ "Storage is temporarily not available" : "N'haller ket tizhout ar skor roadennoù evit ar poent",
"Could not move \"{file}\", target exists" : "Dibosupl eo diblasañ \"{file}\", ar bukenn zo anezhi",
"Could not move \"{file}\"" : "Dibosupl eo diblasañ \"{file}\"",
"copy" : "eilañ",
@@ -151,6 +149,7 @@ OC.L10N.register(
"Transfer" : "Treuzkas",
"Transfer {path} to {userid}" : "Treuzkas {path} da {userid}",
"Invalid path selected" : "An hent dibabet n'eus ket anezhañ",
+ "Unknown error" : "Fazi dizanv",
"Ownership transfer request sent" : "Kaset eo bet ar goulenn treuzkas perc'henniezh",
"Show hidden files" : "Diskouez ar restroù koachet",
"Additional settings" : "Stummoù ouzhpenn",
@@ -180,6 +179,7 @@ OC.L10N.register(
"Pending shares" : "Rannañ o c'hortoz",
"Text file" : "Restr testenn",
"New text file.txt" : "Restr testenn nevez rest.txt",
+ "Storage invalid" : "N'eo c'hall ket bezañ ar skor roadennoù-mañ",
"Select" : "Dibab",
"You don’t have permission to upload or create files here" : "N'och ket aotreet kas pe krouiñ restroù amañ",
"New" : "Nevez",
diff --git a/apps/files/l10n/br.json b/apps/files/l10n/br.json
index 2fb3d82db19..ce21edb2123 100644
--- a/apps/files/l10n/br.json
+++ b/apps/files/l10n/br.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "N'haller ket tizhout ar skor roadennoù evit ar poent",
- "Storage invalid" : "N'eo c'hall ket bezañ ar skor roadennoù-mañ",
- "Unknown error" : "Fazi dizanv",
"File could not be found" : "N'eo ket bet kavet ar restr",
"Move or copy" : "Dilec'hiañ pe eilañ",
"Download" : "Pellgargañ",
@@ -42,6 +39,7 @@
"Unable to determine date" : "Dibosupl eo resisaat an deiziat",
"This operation is forbidden" : "Difennet eo an ober-mañ",
"This directory is unavailable, please check the logs or contact the administrator" : "N'eus ket tu da dizhout an teuliad-mañ, lennit al logoù pe kit e darempred gant ar merour",
+ "Storage is temporarily not available" : "N'haller ket tizhout ar skor roadennoù evit ar poent",
"Could not move \"{file}\", target exists" : "Dibosupl eo diblasañ \"{file}\", ar bukenn zo anezhi",
"Could not move \"{file}\"" : "Dibosupl eo diblasañ \"{file}\"",
"copy" : "eilañ",
@@ -149,6 +147,7 @@
"Transfer" : "Treuzkas",
"Transfer {path} to {userid}" : "Treuzkas {path} da {userid}",
"Invalid path selected" : "An hent dibabet n'eus ket anezhañ",
+ "Unknown error" : "Fazi dizanv",
"Ownership transfer request sent" : "Kaset eo bet ar goulenn treuzkas perc'henniezh",
"Show hidden files" : "Diskouez ar restroù koachet",
"Additional settings" : "Stummoù ouzhpenn",
@@ -178,6 +177,7 @@
"Pending shares" : "Rannañ o c'hortoz",
"Text file" : "Restr testenn",
"New text file.txt" : "Restr testenn nevez rest.txt",
+ "Storage invalid" : "N'eo c'hall ket bezañ ar skor roadennoù-mañ",
"Select" : "Dibab",
"You don’t have permission to upload or create files here" : "N'och ket aotreet kas pe krouiñ restroù amañ",
"New" : "Nevez",
diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js
index 58004418dc0..30e50804d13 100644
--- a/apps/files/l10n/ca.js
+++ b/apps/files/l10n/ca.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "L'emmagatzematge no està disponible temporalment",
- "Storage invalid" : "L'emmagatzematge no és vàlid",
- "Unknown error" : "Error desconegut",
"File could not be found" : "No s'ha pogut trobar el fitxer",
"Move or copy" : "Mou o copia",
"Download" : "Baixa",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "No s'ha pogut determinar la data",
"This operation is forbidden" : "Aquesta operació no està permesa",
"This directory is unavailable, please check the logs or contact the administrator" : "Aquest directori no està disponible. Consulteu els registres o contacteu amb l'administrador",
+ "Storage is temporarily not available" : "L'emmagatzematge no està disponible temporalment",
"Could not move \"{file}\", target exists" : "No s'ha pogut desplaçar «{file}», el fitxer de destinació ja existeix",
"Could not move \"{file}\"" : "No s'ha pogut desplaçar «{file}»",
"copy" : "còpia",
@@ -177,6 +175,7 @@ OC.L10N.register(
"Transfer" : "Transfereix",
"Transfer {path} to {userid}" : "Transfereix {path} a {userid}",
"Invalid path selected" : "El camí seleccionat no és vàlid",
+ "Unknown error" : "Error desconegut",
"Ownership transfer request sent" : "S'ha enviat la sol·licitud de transferència de propietat",
"Cannot transfer ownership of a file or folder you do not own" : "No es pot transferir la propietat d'un fitxer o carpeta que no és vostre",
"Files settings" : "Paràmetres dels fitxers",
@@ -221,6 +220,7 @@ OC.L10N.register(
"Pending shares" : "Pendent",
"Text file" : "Fitxer de text",
"New text file.txt" : "Fitxer de text nou.txt",
+ "Storage invalid" : "L'emmagatzematge no és vàlid",
"Select" : "Selecciona",
"You don’t have permission to upload or create files here" : "No teniu permís per a pujar o crear fitxers aquí",
"New" : "Nou",
diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json
index efe149c5d8a..48b54e596c9 100644
--- a/apps/files/l10n/ca.json
+++ b/apps/files/l10n/ca.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "L'emmagatzematge no està disponible temporalment",
- "Storage invalid" : "L'emmagatzematge no és vàlid",
- "Unknown error" : "Error desconegut",
"File could not be found" : "No s'ha pogut trobar el fitxer",
"Move or copy" : "Mou o copia",
"Download" : "Baixa",
@@ -51,6 +48,7 @@
"Unable to determine date" : "No s'ha pogut determinar la data",
"This operation is forbidden" : "Aquesta operació no està permesa",
"This directory is unavailable, please check the logs or contact the administrator" : "Aquest directori no està disponible. Consulteu els registres o contacteu amb l'administrador",
+ "Storage is temporarily not available" : "L'emmagatzematge no està disponible temporalment",
"Could not move \"{file}\", target exists" : "No s'ha pogut desplaçar «{file}», el fitxer de destinació ja existeix",
"Could not move \"{file}\"" : "No s'ha pogut desplaçar «{file}»",
"copy" : "còpia",
@@ -175,6 +173,7 @@
"Transfer" : "Transfereix",
"Transfer {path} to {userid}" : "Transfereix {path} a {userid}",
"Invalid path selected" : "El camí seleccionat no és vàlid",
+ "Unknown error" : "Error desconegut",
"Ownership transfer request sent" : "S'ha enviat la sol·licitud de transferència de propietat",
"Cannot transfer ownership of a file or folder you do not own" : "No es pot transferir la propietat d'un fitxer o carpeta que no és vostre",
"Files settings" : "Paràmetres dels fitxers",
@@ -219,6 +218,7 @@
"Pending shares" : "Pendent",
"Text file" : "Fitxer de text",
"New text file.txt" : "Fitxer de text nou.txt",
+ "Storage invalid" : "L'emmagatzematge no és vàlid",
"Select" : "Selecciona",
"You don’t have permission to upload or create files here" : "No teniu permís per a pujar o crear fitxers aquí",
"New" : "Nou",
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index 0fe1ef62c96..3c7b4555af8 100644
--- a/apps/files/l10n/cs.js
+++ b/apps/files/l10n/cs.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
- "Storage invalid" : "Neplatné úložiště",
- "Unknown error" : "Neznámá chyba",
"File could not be found" : "Soubor se nedaří nalézt",
"Move or copy" : "Přesunout nebo zkopírovat",
"Download" : "Stáhnout",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Nelze určit datum",
"This operation is forbidden" : "Tato operace je zakázána",
"This directory is unavailable, please check the logs or contact the administrator" : "Tento adresář není dostupný, zkontrolujte záznamy událostí nebo se obraťte na správce",
+ "Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
"Could not move \"{file}\", target exists" : "„{file}“ nelze přesunout – cíl už existuje",
"Could not move \"{file}\"" : "„{file}“ nelze přesunout",
"copy" : "kopie",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Převést",
"Transfer {path} to {userid}" : "Převést {path} na {userid}",
"Invalid path selected" : "Vybrán neplatný popis umístění",
+ "Unknown error" : "Neznámá chyba",
"Ownership transfer request sent" : "Žádost o převedení vlastnictví zaslána",
"Cannot transfer ownership of a file or folder you do not own" : "Není možné převést vlastnictví souboru či složky, kterých nejste vlastníky",
"Files settings" : "Nastavení pro Soubory",
@@ -222,6 +221,7 @@ OC.L10N.register(
"Pending shares" : "Čekající sdílení",
"Text file" : "Textový soubor",
"New text file.txt" : "Nový textový soubor.txt",
+ "Storage invalid" : "Neplatné úložiště",
"Select" : "Vybrat",
"You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory",
"New" : "Nový",
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index 9957875c040..b2edcc7418e 100644
--- a/apps/files/l10n/cs.json
+++ b/apps/files/l10n/cs.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
- "Storage invalid" : "Neplatné úložiště",
- "Unknown error" : "Neznámá chyba",
"File could not be found" : "Soubor se nedaří nalézt",
"Move or copy" : "Přesunout nebo zkopírovat",
"Download" : "Stáhnout",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Nelze určit datum",
"This operation is forbidden" : "Tato operace je zakázána",
"This directory is unavailable, please check the logs or contact the administrator" : "Tento adresář není dostupný, zkontrolujte záznamy událostí nebo se obraťte na správce",
+ "Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
"Could not move \"{file}\", target exists" : "„{file}“ nelze přesunout – cíl už existuje",
"Could not move \"{file}\"" : "„{file}“ nelze přesunout",
"copy" : "kopie",
@@ -176,6 +174,7 @@
"Transfer" : "Převést",
"Transfer {path} to {userid}" : "Převést {path} na {userid}",
"Invalid path selected" : "Vybrán neplatný popis umístění",
+ "Unknown error" : "Neznámá chyba",
"Ownership transfer request sent" : "Žádost o převedení vlastnictví zaslána",
"Cannot transfer ownership of a file or folder you do not own" : "Není možné převést vlastnictví souboru či složky, kterých nejste vlastníky",
"Files settings" : "Nastavení pro Soubory",
@@ -220,6 +219,7 @@
"Pending shares" : "Čekající sdílení",
"Text file" : "Textový soubor",
"New text file.txt" : "Nový textový soubor.txt",
+ "Storage invalid" : "Neplatné úložiště",
"Select" : "Vybrat",
"You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory",
"New" : "Nový",
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index 55d83b9ed23..9f974935d49 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Lagerplads er midlertidigt ikke tilgængeligt",
- "Storage invalid" : "Lagerplads er ugyldig",
- "Unknown error" : "Ukendt fejl",
"File could not be found" : "Filen kunne ikke findes",
"Move or copy" : "Flyt eller kopier",
"Download" : "Hent",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Kan ikke fastslå datoen",
"This operation is forbidden" : "Denne operation er forbudt",
"This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig, tjek venligst loggene eller kontakt administratoren",
+ "Storage is temporarily not available" : "Lagerplads er midlertidigt ikke tilgængeligt",
"Could not move \"{file}\", target exists" : "Kunne ikke flytte \"{file}\" - der findes allerede en fil med dette navn",
"Could not move \"{file}\"" : "Kunne ikke flytte \"{file}\"",
"copy" : "kopiér",
@@ -177,6 +175,7 @@ OC.L10N.register(
"Transfer" : "Overfør",
"Transfer {path} to {userid}" : "Overfør {path} til {userid}",
"Invalid path selected" : "Ugyldig filsti valgt",
+ "Unknown error" : "Ukendt fejl",
"Ownership transfer request sent" : "Anmodning om ejerskabsoverdragelse sendt",
"Cannot transfer ownership of a file or folder you do not own" : "Kan ikke overføre ejerskab af en fil eller mappe, du ikke ejer",
"Files settings" : "indstillinger for filer",
@@ -220,6 +219,7 @@ OC.L10N.register(
"Pending shares" : "Afventende delinger",
"Text file" : "Tekstfil",
"New text file.txt" : "Ny tekst fil.txt",
+ "Storage invalid" : "Lagerplads er ugyldig",
"Select" : "Vælg",
"You don’t have permission to upload or create files here" : "Du har ikke tilladelse til at uploade eller oprette filer her",
"New" : "Ny",
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index e739c77c0c7..147d49be8b3 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Lagerplads er midlertidigt ikke tilgængeligt",
- "Storage invalid" : "Lagerplads er ugyldig",
- "Unknown error" : "Ukendt fejl",
"File could not be found" : "Filen kunne ikke findes",
"Move or copy" : "Flyt eller kopier",
"Download" : "Hent",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Kan ikke fastslå datoen",
"This operation is forbidden" : "Denne operation er forbudt",
"This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig, tjek venligst loggene eller kontakt administratoren",
+ "Storage is temporarily not available" : "Lagerplads er midlertidigt ikke tilgængeligt",
"Could not move \"{file}\", target exists" : "Kunne ikke flytte \"{file}\" - der findes allerede en fil med dette navn",
"Could not move \"{file}\"" : "Kunne ikke flytte \"{file}\"",
"copy" : "kopiér",
@@ -175,6 +173,7 @@
"Transfer" : "Overfør",
"Transfer {path} to {userid}" : "Overfør {path} til {userid}",
"Invalid path selected" : "Ugyldig filsti valgt",
+ "Unknown error" : "Ukendt fejl",
"Ownership transfer request sent" : "Anmodning om ejerskabsoverdragelse sendt",
"Cannot transfer ownership of a file or folder you do not own" : "Kan ikke overføre ejerskab af en fil eller mappe, du ikke ejer",
"Files settings" : "indstillinger for filer",
@@ -218,6 +217,7 @@
"Pending shares" : "Afventende delinger",
"Text file" : "Tekstfil",
"New text file.txt" : "Ny tekst fil.txt",
+ "Storage invalid" : "Lagerplads er ugyldig",
"Select" : "Vælg",
"You don’t have permission to upload or create files here" : "Du har ikke tilladelse til at uploade eller oprette filer her",
"New" : "Ny",
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 4819c185800..b56afcd1af0 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
- "Storage invalid" : "Speicher ungültig",
- "Unknown error" : "Unbekannter Fehler",
"File could not be found" : "Datei konnte nicht gefunden werden",
"Move or copy" : "Verschieben oder kopieren",
"Download" : "Herunterladen",
@@ -52,6 +49,7 @@ OC.L10N.register(
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
"This operation is forbidden" : "Diese Operation ist nicht erlaubt",
"This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte die Logdateien überprüfen oder den Administrator kontaktieren.",
+ "Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits",
"Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden",
"copy" : "Kopie",
@@ -174,6 +172,7 @@ OC.L10N.register(
"Transfer" : "Übertragen",
"Transfer {path} to {userid}" : "Übertrage {path} an {userid}",
"Invalid path selected" : "Ungültiger Dateipfad ausgewählt",
+ "Unknown error" : "Unbekannter Fehler",
"Ownership transfer request sent" : "Anforderung für die Übertragung des Besitzes gesendet",
"Cannot transfer ownership of a file or folder you do not own" : "Der Besitz an einer Datei oder einem Ordner, der dir nicht gehört, kann nicht übertragen werden",
"Files settings" : "Dateien-Einstellungen",
@@ -217,6 +216,7 @@ OC.L10N.register(
"Pending shares" : "Ausstehende Freigaben",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
+ "Storage invalid" : "Speicher ungültig",
"Select" : "Auswählen",
"You don’t have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"New" : "Neu",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index b7e8f820de9..38f4255744f 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
- "Storage invalid" : "Speicher ungültig",
- "Unknown error" : "Unbekannter Fehler",
"File could not be found" : "Datei konnte nicht gefunden werden",
"Move or copy" : "Verschieben oder kopieren",
"Download" : "Herunterladen",
@@ -50,6 +47,7 @@
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
"This operation is forbidden" : "Diese Operation ist nicht erlaubt",
"This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte die Logdateien überprüfen oder den Administrator kontaktieren.",
+ "Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits",
"Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden",
"copy" : "Kopie",
@@ -172,6 +170,7 @@
"Transfer" : "Übertragen",
"Transfer {path} to {userid}" : "Übertrage {path} an {userid}",
"Invalid path selected" : "Ungültiger Dateipfad ausgewählt",
+ "Unknown error" : "Unbekannter Fehler",
"Ownership transfer request sent" : "Anforderung für die Übertragung des Besitzes gesendet",
"Cannot transfer ownership of a file or folder you do not own" : "Der Besitz an einer Datei oder einem Ordner, der dir nicht gehört, kann nicht übertragen werden",
"Files settings" : "Dateien-Einstellungen",
@@ -215,6 +214,7 @@
"Pending shares" : "Ausstehende Freigaben",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
+ "Storage invalid" : "Speicher ungültig",
"Select" : "Auswählen",
"You don’t have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"New" : "Neu",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index f9f1f533643..a687808812c 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
- "Storage invalid" : "Speicher ungültig",
- "Unknown error" : "Unbekannter Fehler",
"File could not be found" : "Datei konnte nicht gefunden werden",
"Move or copy" : "Verschieben oder kopieren",
"Download" : "Herunterladen",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
"This operation is forbidden" : "Diese Operation ist nicht erlaubt",
"This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Protokolldateien oder kontaktieren Sie die Administration",
+ "Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits",
"Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden",
"copy" : "Kopie",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Übertragen",
"Transfer {path} to {userid}" : "Übertrage {path} an {userid}",
"Invalid path selected" : "Ungültiger Pfad ausgewählt",
+ "Unknown error" : "Unbekannter Fehler",
"Ownership transfer request sent" : "Anforderung für die Besitzübertragung versendet",
"Cannot transfer ownership of a file or folder you do not own" : "Sie können den Besitz von Dateien oder Ordnern, die Sie nicht besitzen, nicht übertragen",
"Open the files app settings" : "Einstellungen der Dateien-App öffnen",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Ausstehende Freigaben",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
+ "Storage invalid" : "Speicher ungültig",
"Select" : "Auswählen",
"You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"New" : "Neu",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 26183876ff7..5898cae0a38 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
- "Storage invalid" : "Speicher ungültig",
- "Unknown error" : "Unbekannter Fehler",
"File could not be found" : "Datei konnte nicht gefunden werden",
"Move or copy" : "Verschieben oder kopieren",
"Download" : "Herunterladen",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Datum konnte nicht ermittelt werden",
"This operation is forbidden" : "Diese Operation ist nicht erlaubt",
"This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Protokolldateien oder kontaktieren Sie die Administration",
+ "Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits",
"Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden",
"copy" : "Kopie",
@@ -176,6 +174,7 @@
"Transfer" : "Übertragen",
"Transfer {path} to {userid}" : "Übertrage {path} an {userid}",
"Invalid path selected" : "Ungültiger Pfad ausgewählt",
+ "Unknown error" : "Unbekannter Fehler",
"Ownership transfer request sent" : "Anforderung für die Besitzübertragung versendet",
"Cannot transfer ownership of a file or folder you do not own" : "Sie können den Besitz von Dateien oder Ordnern, die Sie nicht besitzen, nicht übertragen",
"Open the files app settings" : "Einstellungen der Dateien-App öffnen",
@@ -223,6 +222,7 @@
"Pending shares" : "Ausstehende Freigaben",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
+ "Storage invalid" : "Speicher ungültig",
"Select" : "Auswählen",
"You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"New" : "Neu",
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index 1633a98bd2f..6d068b4170f 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
- "Storage invalid" : "Μη έγκυρος αποθηκευτικός χώρος",
- "Unknown error" : "Άγνωστο σφάλμα",
"File could not be found" : "Δεν μπορεί να βρεθεί το αρχείο",
"Move or copy" : "Μετακίνηση ή αντιγραφή",
"Download" : "Λήψη",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Αδυναμία προσδιορισμού ημερομηνίας",
"This operation is forbidden" : "Αυτή η λειτουργία απαγορεύεται",
"This directory is unavailable, please check the logs or contact the administrator" : "Ο κατάλογος δεν είναι διαθέσιμος, παρακαλούμε ελέγξτε τα αρχεία καταγραφής ή επικοινωνήστε με το διαχειριστή",
+ "Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
"Could not move \"{file}\", target exists" : "Αδυναμία μετακίνησης του \"{file}\", υπάρχει ήδη αρχείο με αυτό το όνομα",
"Could not move \"{file}\"" : "Αδυναμία μετακίνησης του \"{file}\"",
"copy" : "αντιγραφή",
@@ -177,6 +175,7 @@ OC.L10N.register(
"Transfer" : "Μεταφορά",
"Transfer {path} to {userid}" : "Μεταφορά {path} στον {userid}",
"Invalid path selected" : "Επιλέχθηκε μη έγκυρη διαδρομή",
+ "Unknown error" : "Άγνωστο σφάλμα",
"Ownership transfer request sent" : "Αποστολή αίτησης μεταβίβασης κυριότητας",
"Cannot transfer ownership of a file or folder you do not own" : "Δεν είναι δυνατή η μεταβίβαση της κυριότητας ενός αρχείου ή φακέλου που δε σας ανήκει",
"Files settings" : "Ρυθμίσεις αρχείων",
@@ -221,6 +220,7 @@ OC.L10N.register(
"Pending shares" : "Κοινή χρήση σε εκκρεμότητα",
"Text file" : "Αρχείο κειμένου",
"New text file.txt" : "Νέο αρχείο file.txt",
+ "Storage invalid" : "Μη έγκυρος αποθηκευτικός χώρος",
"Select" : "Επιλογή",
"You don’t have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ",
"New" : "Νέο",
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index 05b027a09c9..deeac5cf4d8 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
- "Storage invalid" : "Μη έγκυρος αποθηκευτικός χώρος",
- "Unknown error" : "Άγνωστο σφάλμα",
"File could not be found" : "Δεν μπορεί να βρεθεί το αρχείο",
"Move or copy" : "Μετακίνηση ή αντιγραφή",
"Download" : "Λήψη",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Αδυναμία προσδιορισμού ημερομηνίας",
"This operation is forbidden" : "Αυτή η λειτουργία απαγορεύεται",
"This directory is unavailable, please check the logs or contact the administrator" : "Ο κατάλογος δεν είναι διαθέσιμος, παρακαλούμε ελέγξτε τα αρχεία καταγραφής ή επικοινωνήστε με το διαχειριστή",
+ "Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
"Could not move \"{file}\", target exists" : "Αδυναμία μετακίνησης του \"{file}\", υπάρχει ήδη αρχείο με αυτό το όνομα",
"Could not move \"{file}\"" : "Αδυναμία μετακίνησης του \"{file}\"",
"copy" : "αντιγραφή",
@@ -175,6 +173,7 @@
"Transfer" : "Μεταφορά",
"Transfer {path} to {userid}" : "Μεταφορά {path} στον {userid}",
"Invalid path selected" : "Επιλέχθηκε μη έγκυρη διαδρομή",
+ "Unknown error" : "Άγνωστο σφάλμα",
"Ownership transfer request sent" : "Αποστολή αίτησης μεταβίβασης κυριότητας",
"Cannot transfer ownership of a file or folder you do not own" : "Δεν είναι δυνατή η μεταβίβαση της κυριότητας ενός αρχείου ή φακέλου που δε σας ανήκει",
"Files settings" : "Ρυθμίσεις αρχείων",
@@ -219,6 +218,7 @@
"Pending shares" : "Κοινή χρήση σε εκκρεμότητα",
"Text file" : "Αρχείο κειμένου",
"New text file.txt" : "Νέο αρχείο file.txt",
+ "Storage invalid" : "Μη έγκυρος αποθηκευτικός χώρος",
"Select" : "Επιλογή",
"You don’t have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ",
"New" : "Νέο",
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index eac75c1036c..e02c2c9e540 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Storage is temporarily not available",
- "Storage invalid" : "Storage invalid",
- "Unknown error" : "Unknown error",
"File could not be found" : "File could not be found",
"Move or copy" : "Move or copy",
"Download" : "Download",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Unable to determine date",
"This operation is forbidden" : "This operation is forbidden",
"This directory is unavailable, please check the logs or contact the administrator" : "This directory is unavailable, please check the logs or contact the administrator",
+ "Storage is temporarily not available" : "Storage is temporarily not available",
"Could not move \"{file}\", target exists" : "Could not move \"{file}\", target exists",
"Could not move \"{file}\"" : "Could not move \"{file}\"",
"copy" : "copy",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Transfer",
"Transfer {path} to {userid}" : "Transfer {path} to {userid}",
"Invalid path selected" : "Invalid path selected",
+ "Unknown error" : "Unknown error",
"Ownership transfer request sent" : "Ownership transfer request sent",
"Cannot transfer ownership of a file or folder you do not own" : "Cannot transfer ownership of a file or folder you do not own",
"Open the files app settings" : "Open the files app settings",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Pending shares",
"Text file" : "Text file",
"New text file.txt" : "New text file.txt",
+ "Storage invalid" : "Storage invalid",
"Select" : "Select",
"You don’t have permission to upload or create files here" : "You don’t have permission to upload or create files here",
"New" : "New",
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index 0b9ed70cdd3..63d80a3315c 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Storage is temporarily not available",
- "Storage invalid" : "Storage invalid",
- "Unknown error" : "Unknown error",
"File could not be found" : "File could not be found",
"Move or copy" : "Move or copy",
"Download" : "Download",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Unable to determine date",
"This operation is forbidden" : "This operation is forbidden",
"This directory is unavailable, please check the logs or contact the administrator" : "This directory is unavailable, please check the logs or contact the administrator",
+ "Storage is temporarily not available" : "Storage is temporarily not available",
"Could not move \"{file}\", target exists" : "Could not move \"{file}\", target exists",
"Could not move \"{file}\"" : "Could not move \"{file}\"",
"copy" : "copy",
@@ -176,6 +174,7 @@
"Transfer" : "Transfer",
"Transfer {path} to {userid}" : "Transfer {path} to {userid}",
"Invalid path selected" : "Invalid path selected",
+ "Unknown error" : "Unknown error",
"Ownership transfer request sent" : "Ownership transfer request sent",
"Cannot transfer ownership of a file or folder you do not own" : "Cannot transfer ownership of a file or folder you do not own",
"Open the files app settings" : "Open the files app settings",
@@ -223,6 +222,7 @@
"Pending shares" : "Pending shares",
"Text file" : "Text file",
"New text file.txt" : "New text file.txt",
+ "Storage invalid" : "Storage invalid",
"Select" : "Select",
"You don’t have permission to upload or create files here" : "You don’t have permission to upload or create files here",
"New" : "New",
diff --git a/apps/files/l10n/eo.js b/apps/files/l10n/eo.js
index c8780cbb1e9..d663fcbd5bc 100644
--- a/apps/files/l10n/eo.js
+++ b/apps/files/l10n/eo.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Konservejo dumtempe ne disponeblas",
- "Storage invalid" : "Konservejo ne validas",
- "Unknown error" : "Nekonata eraro",
"File could not be found" : "Dosiero ne troveblas",
"Move or copy" : "Movi aŭ kopii",
"Download" : "Elŝuti",
@@ -45,6 +42,7 @@ OC.L10N.register(
"Unable to determine date" : "Ne eblas determini daton",
"This operation is forbidden" : "Ĉi tiu operacio malpermesatas",
"This directory is unavailable, please check the logs or contact the administrator" : "Ĉi tiu dosierujo maldisponeblas, bonvolu kontroli la protokolojn aŭ kontakti la administranton",
+ "Storage is temporarily not available" : "Konservejo dumtempe ne disponeblas",
"Could not move \"{file}\", target exists" : "Ne eblas movi la dosieron „{file}“, celo jam ekzistas",
"Could not move \"{file}\"" : "Ne eblas movi la dosieron „{file}“",
"copy" : "kopio",
@@ -134,6 +132,7 @@ OC.L10N.register(
"Change" : "Ŝanĝi",
"New owner" : "Nova posedanto",
"Search users" : "Serĉi uzantojn",
+ "Unknown error" : "Nekonata eraro",
"Show hidden files" : "Montri kaŝitajn dosierojn",
"Additional settings" : "Plia agordo",
"Copy to clipboard" : "Kopii tondejen",
@@ -163,6 +162,7 @@ OC.L10N.register(
"Deleted shares" : "Forigitaj kunhavigoj",
"Text file" : "Tekstodosiero",
"New text file.txt" : "Nova tekstodosiero.txt",
+ "Storage invalid" : "Konservejo ne validas",
"Select" : "Elekti",
"You don’t have permission to upload or create files here" : "Vi ne permesatas alŝuti aŭ krei dosierojn ĉi tie",
"New" : "Nova",
diff --git a/apps/files/l10n/eo.json b/apps/files/l10n/eo.json
index 111ee07a86b..d12d1fd8082 100644
--- a/apps/files/l10n/eo.json
+++ b/apps/files/l10n/eo.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Konservejo dumtempe ne disponeblas",
- "Storage invalid" : "Konservejo ne validas",
- "Unknown error" : "Nekonata eraro",
"File could not be found" : "Dosiero ne troveblas",
"Move or copy" : "Movi aŭ kopii",
"Download" : "Elŝuti",
@@ -43,6 +40,7 @@
"Unable to determine date" : "Ne eblas determini daton",
"This operation is forbidden" : "Ĉi tiu operacio malpermesatas",
"This directory is unavailable, please check the logs or contact the administrator" : "Ĉi tiu dosierujo maldisponeblas, bonvolu kontroli la protokolojn aŭ kontakti la administranton",
+ "Storage is temporarily not available" : "Konservejo dumtempe ne disponeblas",
"Could not move \"{file}\", target exists" : "Ne eblas movi la dosieron „{file}“, celo jam ekzistas",
"Could not move \"{file}\"" : "Ne eblas movi la dosieron „{file}“",
"copy" : "kopio",
@@ -132,6 +130,7 @@
"Change" : "Ŝanĝi",
"New owner" : "Nova posedanto",
"Search users" : "Serĉi uzantojn",
+ "Unknown error" : "Nekonata eraro",
"Show hidden files" : "Montri kaŝitajn dosierojn",
"Additional settings" : "Plia agordo",
"Copy to clipboard" : "Kopii tondejen",
@@ -161,6 +160,7 @@
"Deleted shares" : "Forigitaj kunhavigoj",
"Text file" : "Tekstodosiero",
"New text file.txt" : "Nova tekstodosiero.txt",
+ "Storage invalid" : "Konservejo ne validas",
"Select" : "Elekti",
"You don’t have permission to upload or create files here" : "Vi ne permesatas alŝuti aŭ krei dosierojn ĉi tie",
"New" : "Nova",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index e04bd3a8122..15568ff0d9d 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente",
- "Storage invalid" : "Almacenamiento no válido",
- "Unknown error" : "Error desconocido",
"File could not be found" : "El archivo no se ha encontrado",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "No se ha podido determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contacte con el administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente",
"Could not move \"{file}\", target exists" : "No se pudo mover \"{file}\", ya existe",
"Could not move \"{file}\"" : "No se pudo mover \"{file}\"",
"copy" : "copiar",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Transferir",
"Transfer {path} to {userid}" : "Transferir {path} a {userid}",
"Invalid path selected" : "Ruta de archivo seleccionada no válida.",
+ "Unknown error" : "Error desconocido",
"Ownership transfer request sent" : "Enviada la solicitud de transferencia de propiedad",
"Cannot transfer ownership of a file or folder you do not own" : "No puedes transferir la propiedad de un archivo o directorio del cual no eres propietario",
"Open the files app settings" : "Abrir la configuración de la app Archivos",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Recursos compartidos pendientes",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo archivo.txt",
+ "Storage invalid" : "Almacenamiento no válido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index e8702b87301..187b72f7f58 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente",
- "Storage invalid" : "Almacenamiento no válido",
- "Unknown error" : "Error desconocido",
"File could not be found" : "El archivo no se ha encontrado",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -51,6 +48,7 @@
"Unable to determine date" : "No se ha podido determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verifique los registros o contacte con el administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente",
"Could not move \"{file}\", target exists" : "No se pudo mover \"{file}\", ya existe",
"Could not move \"{file}\"" : "No se pudo mover \"{file}\"",
"copy" : "copiar",
@@ -176,6 +174,7 @@
"Transfer" : "Transferir",
"Transfer {path} to {userid}" : "Transferir {path} a {userid}",
"Invalid path selected" : "Ruta de archivo seleccionada no válida.",
+ "Unknown error" : "Error desconocido",
"Ownership transfer request sent" : "Enviada la solicitud de transferencia de propiedad",
"Cannot transfer ownership of a file or folder you do not own" : "No puedes transferir la propiedad de un archivo o directorio del cual no eres propietario",
"Open the files app settings" : "Abrir la configuración de la app Archivos",
@@ -223,6 +222,7 @@
"Pending shares" : "Recursos compartidos pendientes",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo archivo.txt",
+ "Storage invalid" : "Almacenamiento no válido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_419.js b/apps/files/l10n/es_419.js
index 5c77b7e2b03..3942aeb6693 100644
--- a/apps/files/l10n/es_419.js
+++ b/apps/files/l10n/es_419.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -108,6 +106,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -131,6 +130,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_419.json b/apps/files/l10n/es_419.json
index 680137b7937..da57eca50d8 100644
--- a/apps/files/l10n/es_419.json
+++ b/apps/files/l10n/es_419.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -106,6 +104,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -129,6 +128,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_AR.js b/apps/files/l10n/es_AR.js
index 1c156b3c47b..d1dcbd30200 100644
--- a/apps/files/l10n/es_AR.js
+++ b/apps/files/l10n/es_AR.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o Copiar",
"Download" : "Descargar",
@@ -40,6 +37,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, favor de verficiar las bitácoras o contacte al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"copy" : "copiar",
@@ -113,6 +111,7 @@ OC.L10N.register(
"in %s" : "en %s",
"File Management" : "Administración de Archivos",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -137,6 +136,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por link",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_AR.json b/apps/files/l10n/es_AR.json
index 986cf1cce4e..f62d5a4f3fe 100644
--- a/apps/files/l10n/es_AR.json
+++ b/apps/files/l10n/es_AR.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o Copiar",
"Download" : "Descargar",
@@ -38,6 +35,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, favor de verficiar las bitácoras o contacte al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"copy" : "copiar",
@@ -111,6 +109,7 @@
"in %s" : "en %s",
"File Management" : "Administración de Archivos",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -135,6 +134,7 @@
"Shared by link" : "Compartido por link",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_CL.js b/apps/files/l10n/es_CL.js
index 668b4123398..86b8cb54d0a 100644
--- a/apps/files/l10n/es_CL.js
+++ b/apps/files/l10n/es_CL.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -118,6 +116,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -141,6 +140,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_CL.json b/apps/files/l10n/es_CL.json
index e1589c7989e..78d080bf788 100644
--- a/apps/files/l10n/es_CL.json
+++ b/apps/files/l10n/es_CL.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -116,6 +114,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -139,6 +138,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_CO.js b/apps/files/l10n/es_CO.js
index e03e349afa9..33d7c8e9518 100644
--- a/apps/files/l10n/es_CO.js
+++ b/apps/files/l10n/es_CO.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"copy" : "Copiar",
@@ -118,6 +116,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -141,6 +140,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_CO.json b/apps/files/l10n/es_CO.json
index 8ffc9723cc1..f9719d08fcd 100644
--- a/apps/files/l10n/es_CO.json
+++ b/apps/files/l10n/es_CO.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"copy" : "Copiar",
@@ -116,6 +114,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -139,6 +138,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_CR.js b/apps/files/l10n/es_CR.js
index a0542cfad8a..56516a944b0 100644
--- a/apps/files/l10n/es_CR.js
+++ b/apps/files/l10n/es_CR.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -117,6 +115,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -140,6 +139,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_CR.json b/apps/files/l10n/es_CR.json
index fdcf1efe041..837325f245f 100644
--- a/apps/files/l10n/es_CR.json
+++ b/apps/files/l10n/es_CR.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -115,6 +113,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -138,6 +137,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_DO.js b/apps/files/l10n/es_DO.js
index a0542cfad8a..56516a944b0 100644
--- a/apps/files/l10n/es_DO.js
+++ b/apps/files/l10n/es_DO.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -117,6 +115,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -140,6 +139,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_DO.json b/apps/files/l10n/es_DO.json
index fdcf1efe041..837325f245f 100644
--- a/apps/files/l10n/es_DO.json
+++ b/apps/files/l10n/es_DO.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -115,6 +113,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -138,6 +137,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_EC.js b/apps/files/l10n/es_EC.js
index a0542cfad8a..56516a944b0 100644
--- a/apps/files/l10n/es_EC.js
+++ b/apps/files/l10n/es_EC.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -117,6 +115,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -140,6 +139,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_EC.json b/apps/files/l10n/es_EC.json
index fdcf1efe041..837325f245f 100644
--- a/apps/files/l10n/es_EC.json
+++ b/apps/files/l10n/es_EC.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -115,6 +113,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -138,6 +137,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_GT.js b/apps/files/l10n/es_GT.js
index a0542cfad8a..56516a944b0 100644
--- a/apps/files/l10n/es_GT.js
+++ b/apps/files/l10n/es_GT.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -117,6 +115,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -140,6 +139,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_GT.json b/apps/files/l10n/es_GT.json
index fdcf1efe041..837325f245f 100644
--- a/apps/files/l10n/es_GT.json
+++ b/apps/files/l10n/es_GT.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -115,6 +113,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -138,6 +137,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_HN.js b/apps/files/l10n/es_HN.js
index 5c77b7e2b03..3942aeb6693 100644
--- a/apps/files/l10n/es_HN.js
+++ b/apps/files/l10n/es_HN.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -108,6 +106,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -131,6 +130,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_HN.json b/apps/files/l10n/es_HN.json
index 680137b7937..da57eca50d8 100644
--- a/apps/files/l10n/es_HN.json
+++ b/apps/files/l10n/es_HN.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -106,6 +104,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -129,6 +128,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js
index bb369a8ffb1..074806866cc 100644
--- a/apps/files/l10n/es_MX.js
+++ b/apps/files/l10n/es_MX.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -119,6 +117,7 @@ OC.L10N.register(
"File Management" : "Administración de Archivos",
"Change" : "Cambiar",
"Transfer" : "Transferir",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -142,6 +141,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json
index 1d2a243a35d..954dda9363d 100644
--- a/apps/files/l10n/es_MX.json
+++ b/apps/files/l10n/es_MX.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -117,6 +115,7 @@
"File Management" : "Administración de Archivos",
"Change" : "Cambiar",
"Transfer" : "Transferir",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -140,6 +139,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_NI.js b/apps/files/l10n/es_NI.js
index 5c77b7e2b03..3942aeb6693 100644
--- a/apps/files/l10n/es_NI.js
+++ b/apps/files/l10n/es_NI.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -108,6 +106,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -131,6 +130,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_NI.json b/apps/files/l10n/es_NI.json
index 680137b7937..da57eca50d8 100644
--- a/apps/files/l10n/es_NI.json
+++ b/apps/files/l10n/es_NI.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -106,6 +104,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -129,6 +128,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_PA.js b/apps/files/l10n/es_PA.js
index 5c77b7e2b03..3942aeb6693 100644
--- a/apps/files/l10n/es_PA.js
+++ b/apps/files/l10n/es_PA.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -108,6 +106,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -131,6 +130,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_PA.json b/apps/files/l10n/es_PA.json
index 680137b7937..da57eca50d8 100644
--- a/apps/files/l10n/es_PA.json
+++ b/apps/files/l10n/es_PA.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -106,6 +104,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -129,6 +128,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_PE.js b/apps/files/l10n/es_PE.js
index 14d2bef6953..79191a34a6b 100644
--- a/apps/files/l10n/es_PE.js
+++ b/apps/files/l10n/es_PE.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -52,6 +49,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"copy" : "copiar",
@@ -132,6 +130,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -155,6 +154,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_PE.json b/apps/files/l10n/es_PE.json
index 2d32698e99b..3aee67c7b19 100644
--- a/apps/files/l10n/es_PE.json
+++ b/apps/files/l10n/es_PE.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -50,6 +47,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"copy" : "copiar",
@@ -130,6 +128,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -153,6 +152,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_PR.js b/apps/files/l10n/es_PR.js
index 5c77b7e2b03..3942aeb6693 100644
--- a/apps/files/l10n/es_PR.js
+++ b/apps/files/l10n/es_PR.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -108,6 +106,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -131,6 +130,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_PR.json b/apps/files/l10n/es_PR.json
index 680137b7937..da57eca50d8 100644
--- a/apps/files/l10n/es_PR.json
+++ b/apps/files/l10n/es_PR.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -106,6 +104,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -129,6 +128,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_PY.js b/apps/files/l10n/es_PY.js
index 99509268aab..1204f40a3f0 100644
--- a/apps/files/l10n/es_PY.js
+++ b/apps/files/l10n/es_PY.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -44,6 +41,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"copy" : "copiar",
@@ -123,6 +121,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -146,6 +145,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_PY.json b/apps/files/l10n/es_PY.json
index 172bb92f72d..838a7343988 100644
--- a/apps/files/l10n/es_PY.json
+++ b/apps/files/l10n/es_PY.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -42,6 +39,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"copy" : "copiar",
@@ -121,6 +119,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -144,6 +143,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_SV.js b/apps/files/l10n/es_SV.js
index a0542cfad8a..56516a944b0 100644
--- a/apps/files/l10n/es_SV.js
+++ b/apps/files/l10n/es_SV.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -117,6 +115,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -140,6 +139,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_SV.json b/apps/files/l10n/es_SV.json
index fdcf1efe041..837325f245f 100644
--- a/apps/files/l10n/es_SV.json
+++ b/apps/files/l10n/es_SV.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -115,6 +113,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -138,6 +137,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_UY.js b/apps/files/l10n/es_UY.js
index 5c77b7e2b03..3942aeb6693 100644
--- a/apps/files/l10n/es_UY.js
+++ b/apps/files/l10n/es_UY.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -108,6 +106,7 @@ OC.L10N.register(
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -131,6 +130,7 @@ OC.L10N.register(
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/es_UY.json b/apps/files/l10n/es_UY.json
index 680137b7937..da57eca50d8 100644
--- a/apps/files/l10n/es_UY.json
+++ b/apps/files/l10n/es_UY.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
- "Storage invalid" : "El almacenamiento es inválido",
- "Unknown error" : "Se presentó un error desconocido",
"File could not be found" : "No fue posible encontrar el archivo",
"Move or copy" : "Mover o copiar",
"Download" : "Descargar",
@@ -35,6 +32,7 @@
"Unable to determine date" : "No fue posible determinar la fecha",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
+ "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
"Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
"Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
"Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
@@ -106,6 +104,7 @@
"Accept" : "Aceptar",
"in %s" : "en %s",
"Change" : "Cambiar",
+ "Unknown error" : "Se presentó un error desconocido",
"Show hidden files" : "Mostrar archivos ocultos",
"Additional settings" : "Configuraciones adicionales",
"Copy to clipboard" : "Copiar al portapapeles",
@@ -129,6 +128,7 @@
"Shared by link" : "Compartido por liga",
"Text file" : "Archivo de texto",
"New text file.txt" : "Nuevo ArchivoDeTexto.txt",
+ "Storage invalid" : "El almacenamiento es inválido",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"New" : "Nuevo",
diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js
index af728466f1d..b15be13e866 100644
--- a/apps/files/l10n/et_EE.js
+++ b/apps/files/l10n/et_EE.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav",
- "Storage invalid" : "Vigane andmehoidla",
- "Unknown error" : "Tundmatu viga",
"File could not be found" : "Faili ei leitud",
"Move or copy" : "Liiguta või kopeeri",
"Download" : "Lae alla",
@@ -38,6 +35,7 @@ OC.L10N.register(
"Unable to determine date" : "Kuupäeva tuvastamine ei õnnestunud",
"This operation is forbidden" : "See toiming on keelatud",
"This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga",
+ "Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav",
"Could not move \"{file}\", target exists" : "\"{file}\" liigutamine ebaõnnestus, fail on juba olemas",
"Could not move \"{file}\"" : "\"{file}\" liigutamine ebaõnnestus",
"Could not copy \"{file}\", target exists" : "\"{file}\" kopeerimine ebaõnnestus, sihtfail on juba olemas",
@@ -114,6 +112,7 @@ OC.L10N.register(
"Reject" : "Keeldu",
"in %s" : "kaustas %s",
"Change" : "Muuda",
+ "Unknown error" : "Tundmatu viga",
"Show hidden files" : "Näita peidetud faile",
"Additional settings" : "Lisaseaded",
"Copy to clipboard" : "Kopeeri lõikepuhvrisse",
@@ -139,6 +138,7 @@ OC.L10N.register(
"Pending shares" : "Ootel jagamised",
"Text file" : "Tekstifail",
"New text file.txt" : "Uus tekstifail.txt",
+ "Storage invalid" : "Vigane andmehoidla",
"Select" : "Vali",
"You don’t have permission to upload or create files here" : "Sul puuduvad õigused siia failide üleslaadimiseks või tekitamiseks",
"New" : "Uus",
diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json
index 7b9b2256962..2a4f1c60913 100644
--- a/apps/files/l10n/et_EE.json
+++ b/apps/files/l10n/et_EE.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav",
- "Storage invalid" : "Vigane andmehoidla",
- "Unknown error" : "Tundmatu viga",
"File could not be found" : "Faili ei leitud",
"Move or copy" : "Liiguta või kopeeri",
"Download" : "Lae alla",
@@ -36,6 +33,7 @@
"Unable to determine date" : "Kuupäeva tuvastamine ei õnnestunud",
"This operation is forbidden" : "See toiming on keelatud",
"This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga",
+ "Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav",
"Could not move \"{file}\", target exists" : "\"{file}\" liigutamine ebaõnnestus, fail on juba olemas",
"Could not move \"{file}\"" : "\"{file}\" liigutamine ebaõnnestus",
"Could not copy \"{file}\", target exists" : "\"{file}\" kopeerimine ebaõnnestus, sihtfail on juba olemas",
@@ -112,6 +110,7 @@
"Reject" : "Keeldu",
"in %s" : "kaustas %s",
"Change" : "Muuda",
+ "Unknown error" : "Tundmatu viga",
"Show hidden files" : "Näita peidetud faile",
"Additional settings" : "Lisaseaded",
"Copy to clipboard" : "Kopeeri lõikepuhvrisse",
@@ -137,6 +136,7 @@
"Pending shares" : "Ootel jagamised",
"Text file" : "Tekstifail",
"New text file.txt" : "Uus tekstifail.txt",
+ "Storage invalid" : "Vigane andmehoidla",
"Select" : "Vali",
"You don’t have permission to upload or create files here" : "Sul puuduvad õigused siia failide üleslaadimiseks või tekitamiseks",
"New" : "Uus",
diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js
index 05a293ad8fa..b0daa0c5eb8 100644
--- a/apps/files/l10n/eu.js
+++ b/apps/files/l10n/eu.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Biltegia ez dago erabilgarri momentu honetan",
- "Storage invalid" : "Biltegi baliogabea",
- "Unknown error" : "Errore ezezaguna",
"File could not be found" : "Ezin izan da fitxategia aurkitu",
"Move or copy" : "Mugitu edo kopiatu",
"Download" : "Deskargatu",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Ezin izan da data zehaztu",
"This operation is forbidden" : "Eragiketa hau debekatuta dago",
"This directory is unavailable, please check the logs or contact the administrator" : "Direktorio hau ez dago erabilgarri, egiaztatu egunkariak edo jarri administratzailearekin harremanetan",
+ "Storage is temporarily not available" : "Biltegia ez dago erabilgarri momentu honetan",
"Could not move \"{file}\", target exists" : "Ezin izan da \"{file}\" lekuz aldatu, helburua existitzen da jadanik",
"Could not move \"{file}\"" : "Ezin izan da \"{file}\" lekuz aldatu",
"copy" : "kopia",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Transferitu",
"Transfer {path} to {userid}" : "Transfereritu {path} {userid} erabiltzaileari",
"Invalid path selected" : "Bide baliogabea hautatuta",
+ "Unknown error" : "Errore ezezaguna",
"Ownership transfer request sent" : "Jabetza transferentzia eskaera bidalita",
"Cannot transfer ownership of a file or folder you do not own" : "Ezin da zurea ez den fitxategi edo karpeta baten jabetza transferitu ",
"Open the files app settings" : "Ireki Fitxategiak aplikazioaren ezarpenak",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Zain dauden partekatzeak",
"Text file" : "Testu-fitxategia",
"New text file.txt" : "Testu-fitxategi berria.txt",
+ "Storage invalid" : "Biltegi baliogabea",
"Select" : "Hautatu",
"You don’t have permission to upload or create files here" : "Ez duzu baimenik fitxategiak hona kargatu edo hemen sortzeko",
"New" : "Berria",
diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json
index 6fefc93a09a..a68acc0d6d7 100644
--- a/apps/files/l10n/eu.json
+++ b/apps/files/l10n/eu.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Biltegia ez dago erabilgarri momentu honetan",
- "Storage invalid" : "Biltegi baliogabea",
- "Unknown error" : "Errore ezezaguna",
"File could not be found" : "Ezin izan da fitxategia aurkitu",
"Move or copy" : "Mugitu edo kopiatu",
"Download" : "Deskargatu",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Ezin izan da data zehaztu",
"This operation is forbidden" : "Eragiketa hau debekatuta dago",
"This directory is unavailable, please check the logs or contact the administrator" : "Direktorio hau ez dago erabilgarri, egiaztatu egunkariak edo jarri administratzailearekin harremanetan",
+ "Storage is temporarily not available" : "Biltegia ez dago erabilgarri momentu honetan",
"Could not move \"{file}\", target exists" : "Ezin izan da \"{file}\" lekuz aldatu, helburua existitzen da jadanik",
"Could not move \"{file}\"" : "Ezin izan da \"{file}\" lekuz aldatu",
"copy" : "kopia",
@@ -176,6 +174,7 @@
"Transfer" : "Transferitu",
"Transfer {path} to {userid}" : "Transfereritu {path} {userid} erabiltzaileari",
"Invalid path selected" : "Bide baliogabea hautatuta",
+ "Unknown error" : "Errore ezezaguna",
"Ownership transfer request sent" : "Jabetza transferentzia eskaera bidalita",
"Cannot transfer ownership of a file or folder you do not own" : "Ezin da zurea ez den fitxategi edo karpeta baten jabetza transferitu ",
"Open the files app settings" : "Ireki Fitxategiak aplikazioaren ezarpenak",
@@ -223,6 +222,7 @@
"Pending shares" : "Zain dauden partekatzeak",
"Text file" : "Testu-fitxategia",
"New text file.txt" : "Testu-fitxategi berria.txt",
+ "Storage invalid" : "Biltegi baliogabea",
"Select" : "Hautatu",
"You don’t have permission to upload or create files here" : "Ez duzu baimenik fitxategiak hona kargatu edo hemen sortzeko",
"New" : "Berria",
diff --git a/apps/files/l10n/fa.js b/apps/files/l10n/fa.js
index 769db028ad2..81b0d670200 100644
--- a/apps/files/l10n/fa.js
+++ b/apps/files/l10n/fa.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "ذخیره سازی به طور موقت در دسترس نیست",
- "Storage invalid" : "فضای ذخیره‌سازی نامعتبر",
- "Unknown error" : "خطای نامشخص",
"File could not be found" : "فایل پیدا نمی‌شود",
"Move or copy" : "انتقال یا کپی",
"Download" : "دانلود",
@@ -43,6 +40,7 @@ OC.L10N.register(
"Unable to determine date" : "امکان تعیین تاریخ وجود ندارد",
"This operation is forbidden" : "این عملیات غیرمجاز است",
"This directory is unavailable, please check the logs or contact the administrator" : "پوشه‌ در دسترس نیست، لطفا لاگ‌ها را بررسی کنید یا به مدیر سیستم اطلاع دهید",
+ "Storage is temporarily not available" : "ذخیره سازی به طور موقت در دسترس نیست",
"Could not move \"{file}\", target exists" : "انتقال\"{پرونده}\" امکان پذیر نیست ، هدف وجود دارد",
"Could not move \"{file}\"" : "فایل \"{file}\" منتقل نمی‌شود",
"copy" : "کپی",
@@ -100,6 +98,7 @@ OC.L10N.register(
"Change" : "تغییر",
"Transfer" : "انتقال",
"Invalid path selected" : "مسیر نامعتبر انتخاب شده است",
+ "Unknown error" : "خطای نامشخص",
"Show hidden files" : "نمایش فایل‌های مخفی",
"Additional settings" : "تنظیمات اضافی",
"Copy to clipboard" : "رونوشت به تخته‌گیره",
@@ -127,6 +126,7 @@ OC.L10N.register(
"Pending shares" : "اشتراک در حال انتظار ",
"Text file" : "فایل متنی",
"New text file.txt" : "فایل متنی جدید .txt",
+ "Storage invalid" : "فضای ذخیره‌سازی نامعتبر",
"Select" : "انتخاب",
"You don’t have permission to upload or create files here" : "شما دسترسی مجاز برای آپلود یا ایجاد فایل در اینجا را ندارید",
"New" : "جدید",
diff --git a/apps/files/l10n/fa.json b/apps/files/l10n/fa.json
index fc913b68660..48e7f695ec8 100644
--- a/apps/files/l10n/fa.json
+++ b/apps/files/l10n/fa.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "ذخیره سازی به طور موقت در دسترس نیست",
- "Storage invalid" : "فضای ذخیره‌سازی نامعتبر",
- "Unknown error" : "خطای نامشخص",
"File could not be found" : "فایل پیدا نمی‌شود",
"Move or copy" : "انتقال یا کپی",
"Download" : "دانلود",
@@ -41,6 +38,7 @@
"Unable to determine date" : "امکان تعیین تاریخ وجود ندارد",
"This operation is forbidden" : "این عملیات غیرمجاز است",
"This directory is unavailable, please check the logs or contact the administrator" : "پوشه‌ در دسترس نیست، لطفا لاگ‌ها را بررسی کنید یا به مدیر سیستم اطلاع دهید",
+ "Storage is temporarily not available" : "ذخیره سازی به طور موقت در دسترس نیست",
"Could not move \"{file}\", target exists" : "انتقال\"{پرونده}\" امکان پذیر نیست ، هدف وجود دارد",
"Could not move \"{file}\"" : "فایل \"{file}\" منتقل نمی‌شود",
"copy" : "کپی",
@@ -98,6 +96,7 @@
"Change" : "تغییر",
"Transfer" : "انتقال",
"Invalid path selected" : "مسیر نامعتبر انتخاب شده است",
+ "Unknown error" : "خطای نامشخص",
"Show hidden files" : "نمایش فایل‌های مخفی",
"Additional settings" : "تنظیمات اضافی",
"Copy to clipboard" : "رونوشت به تخته‌گیره",
@@ -125,6 +124,7 @@
"Pending shares" : "اشتراک در حال انتظار ",
"Text file" : "فایل متنی",
"New text file.txt" : "فایل متنی جدید .txt",
+ "Storage invalid" : "فضای ذخیره‌سازی نامعتبر",
"Select" : "انتخاب",
"You don’t have permission to upload or create files here" : "شما دسترسی مجاز برای آپلود یا ایجاد فایل در اینجا را ندارید",
"New" : "جدید",
diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js
index d0d5d940414..a5f8a147118 100644
--- a/apps/files/l10n/fi.js
+++ b/apps/files/l10n/fi.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Tallennustila on tilapäisesti pois käytöstä",
- "Storage invalid" : "Virheellinen tallennustila",
- "Unknown error" : "Tuntematon virhe",
"File could not be found" : "Tiedostoa ei löytynyt",
"Move or copy" : "Siirrä tai kopioi",
"Download" : "Lataa",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Päivämäärän määrittäminen epäonnistui",
"This operation is forbidden" : "Tämä toiminto on kielletty",
"This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.",
+ "Storage is temporarily not available" : "Tallennustila on tilapäisesti pois käytöstä",
"Could not move \"{file}\", target exists" : "Tiedoston \"{file}\" siirtäminen ei onnistunut, kohde on olemassa",
"Could not move \"{file}\"" : "Tiedoston \"{file}\" siirtäminen ei onnistunut",
"copy" : "kopio",
@@ -176,6 +174,7 @@ OC.L10N.register(
"Transfer" : "Siirrä",
"Transfer {path} to {userid}" : "Siirrä {path} käyttäjälle {userid}",
"Invalid path selected" : "Valittu virheellinen polku",
+ "Unknown error" : "Tuntematon virhe",
"Ownership transfer request sent" : "Pyyntö omistajuuden vaihdosta lähetetty",
"Cannot transfer ownership of a file or folder you do not own" : "Et voi siirtää sellaisen tiedoston tai kansion omistajuutta, jota et itse omista",
"Files settings" : "Tiedostojen asetukset",
@@ -219,6 +218,7 @@ OC.L10N.register(
"Pending shares" : "Odottavat jaot",
"Text file" : "Tekstitiedosto",
"New text file.txt" : "Uusi tekstitiedosto.txt",
+ "Storage invalid" : "Virheellinen tallennustila",
"Select" : "Valitse",
"You don’t have permission to upload or create files here" : "Käyttöoikeutesi eivät riitä tiedostojen lähettämiseen tai kansioiden luomiseen tähän sijaintiin",
"New" : "Uusi",
diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json
index 204f8186ffe..ba3ca4aaeb0 100644
--- a/apps/files/l10n/fi.json
+++ b/apps/files/l10n/fi.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Tallennustila on tilapäisesti pois käytöstä",
- "Storage invalid" : "Virheellinen tallennustila",
- "Unknown error" : "Tuntematon virhe",
"File could not be found" : "Tiedostoa ei löytynyt",
"Move or copy" : "Siirrä tai kopioi",
"Download" : "Lataa",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Päivämäärän määrittäminen epäonnistui",
"This operation is forbidden" : "Tämä toiminto on kielletty",
"This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.",
+ "Storage is temporarily not available" : "Tallennustila on tilapäisesti pois käytöstä",
"Could not move \"{file}\", target exists" : "Tiedoston \"{file}\" siirtäminen ei onnistunut, kohde on olemassa",
"Could not move \"{file}\"" : "Tiedoston \"{file}\" siirtäminen ei onnistunut",
"copy" : "kopio",
@@ -174,6 +172,7 @@
"Transfer" : "Siirrä",
"Transfer {path} to {userid}" : "Siirrä {path} käyttäjälle {userid}",
"Invalid path selected" : "Valittu virheellinen polku",
+ "Unknown error" : "Tuntematon virhe",
"Ownership transfer request sent" : "Pyyntö omistajuuden vaihdosta lähetetty",
"Cannot transfer ownership of a file or folder you do not own" : "Et voi siirtää sellaisen tiedoston tai kansion omistajuutta, jota et itse omista",
"Files settings" : "Tiedostojen asetukset",
@@ -217,6 +216,7 @@
"Pending shares" : "Odottavat jaot",
"Text file" : "Tekstitiedosto",
"New text file.txt" : "Uusi tekstitiedosto.txt",
+ "Storage invalid" : "Virheellinen tallennustila",
"Select" : "Valitse",
"You don’t have permission to upload or create files here" : "Käyttöoikeutesi eivät riitä tiedostojen lähettämiseen tai kansioiden luomiseen tähän sijaintiin",
"New" : "Uusi",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index 1ca4f1c88c2..130bd30075a 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
- "Storage invalid" : "Support de stockage invalide",
- "Unknown error" : "Erreur inconnue ",
"File could not be found" : "Fichier introuvable",
"Move or copy" : "Déplacer ou copier",
"Download" : "Télécharger",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Impossible de déterminer la date",
"This operation is forbidden" : "Cette opération est interdite",
"This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire est indisponible, merci de consulter les journaux ou de contacter votre administrateur",
+ "Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
"Could not move \"{file}\", target exists" : "Impossible de déplacer \"{file}\", la cible existe",
"Could not move \"{file}\"" : "Impossible de déplacer \"{file}\"",
"copy" : "copie",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Transférer",
"Transfer {path} to {userid}" : "Transférer {path} à {userid}",
"Invalid path selected" : "Chemin sélectionné non valide",
+ "Unknown error" : "Erreur inconnue ",
"Ownership transfer request sent" : "Requête de transfert de propriété envoyée",
"Cannot transfer ownership of a file or folder you do not own" : "Impossible de transférer la propriété d'un fichier ou d'un dossier que vous ne possédez pas",
"Open the files app settings" : "Ouvrir les paramètres de l'application Fichiers",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Partages en attente",
"Text file" : "Fichier texte",
"New text file.txt" : "Nouveau fichier texte.txt",
+ "Storage invalid" : "Support de stockage invalide",
"Select" : "Sélectionner",
"You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'envoyer ou de créer des fichiers ici",
"New" : "Nouveau",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index b103ebe498d..8bc08ab973c 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
- "Storage invalid" : "Support de stockage invalide",
- "Unknown error" : "Erreur inconnue ",
"File could not be found" : "Fichier introuvable",
"Move or copy" : "Déplacer ou copier",
"Download" : "Télécharger",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Impossible de déterminer la date",
"This operation is forbidden" : "Cette opération est interdite",
"This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire est indisponible, merci de consulter les journaux ou de contacter votre administrateur",
+ "Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
"Could not move \"{file}\", target exists" : "Impossible de déplacer \"{file}\", la cible existe",
"Could not move \"{file}\"" : "Impossible de déplacer \"{file}\"",
"copy" : "copie",
@@ -176,6 +174,7 @@
"Transfer" : "Transférer",
"Transfer {path} to {userid}" : "Transférer {path} à {userid}",
"Invalid path selected" : "Chemin sélectionné non valide",
+ "Unknown error" : "Erreur inconnue ",
"Ownership transfer request sent" : "Requête de transfert de propriété envoyée",
"Cannot transfer ownership of a file or folder you do not own" : "Impossible de transférer la propriété d'un fichier ou d'un dossier que vous ne possédez pas",
"Open the files app settings" : "Ouvrir les paramètres de l'application Fichiers",
@@ -223,6 +222,7 @@
"Pending shares" : "Partages en attente",
"Text file" : "Fichier texte",
"New text file.txt" : "Nouveau fichier texte.txt",
+ "Storage invalid" : "Support de stockage invalide",
"Select" : "Sélectionner",
"You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'envoyer ou de créer des fichiers ici",
"New" : "Nouveau",
diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js
index 31a1af7e9ec..1d4d00d797a 100644
--- a/apps/files/l10n/gl.js
+++ b/apps/files/l10n/gl.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "O almacenamento non está dispoñíbel temporalmente",
- "Storage invalid" : "Almacenamento incorrecto",
- "Unknown error" : "Erro descoñecido",
"File could not be found" : "Non foi posíbel atopar o ficheiro",
"Move or copy" : "Mover ou copiar",
"Download" : "Descargar",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Non é posíbel determinar a data",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Este directorio non está dispoñíbel, comprobe os rexistros ou póñase en contacto co administrador",
+ "Storage is temporarily not available" : "O almacenamento non está dispoñíbel temporalmente",
"Could not move \"{file}\", target exists" : "Non foi posíbel mover «{file}», o destino xa existe",
"Could not move \"{file}\"" : "Non foi posíbel mover «{file}»",
"copy" : "copiar",
@@ -176,6 +174,7 @@ OC.L10N.register(
"Transfer" : "Transferencia",
"Transfer {path} to {userid}" : "Transferir {path} cara a {userid}",
"Invalid path selected" : "Seleccionou unha ruta incorrecta.",
+ "Unknown error" : "Erro descoñecido",
"Ownership transfer request sent" : "Enviouse solicitude de transferencia da propiedade",
"Cannot transfer ownership of a file or folder you do not own" : "Non se pode transferir a propiedade dun ficheiro ou cartafol do que non eres propietario",
"Files settings" : "Axustes de ficheiros",
@@ -219,6 +218,7 @@ OC.L10N.register(
"Pending shares" : "Comparticións pendentes",
"Text file" : "Ficheiro de texto",
"New text file.txt" : "Novo ficheiro de texto.txt",
+ "Storage invalid" : "Almacenamento incorrecto",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "Non ten permiso para enviar ou crear ficheiros aquí.",
"New" : "Novo",
diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json
index f9573c02146..64f4d8aa109 100644
--- a/apps/files/l10n/gl.json
+++ b/apps/files/l10n/gl.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "O almacenamento non está dispoñíbel temporalmente",
- "Storage invalid" : "Almacenamento incorrecto",
- "Unknown error" : "Erro descoñecido",
"File could not be found" : "Non foi posíbel atopar o ficheiro",
"Move or copy" : "Mover ou copiar",
"Download" : "Descargar",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Non é posíbel determinar a data",
"This operation is forbidden" : "Esta operación está prohibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Este directorio non está dispoñíbel, comprobe os rexistros ou póñase en contacto co administrador",
+ "Storage is temporarily not available" : "O almacenamento non está dispoñíbel temporalmente",
"Could not move \"{file}\", target exists" : "Non foi posíbel mover «{file}», o destino xa existe",
"Could not move \"{file}\"" : "Non foi posíbel mover «{file}»",
"copy" : "copiar",
@@ -174,6 +172,7 @@
"Transfer" : "Transferencia",
"Transfer {path} to {userid}" : "Transferir {path} cara a {userid}",
"Invalid path selected" : "Seleccionou unha ruta incorrecta.",
+ "Unknown error" : "Erro descoñecido",
"Ownership transfer request sent" : "Enviouse solicitude de transferencia da propiedade",
"Cannot transfer ownership of a file or folder you do not own" : "Non se pode transferir a propiedade dun ficheiro ou cartafol do que non eres propietario",
"Files settings" : "Axustes de ficheiros",
@@ -217,6 +216,7 @@
"Pending shares" : "Comparticións pendentes",
"Text file" : "Ficheiro de texto",
"New text file.txt" : "Novo ficheiro de texto.txt",
+ "Storage invalid" : "Almacenamento incorrecto",
"Select" : "Seleccionar",
"You don’t have permission to upload or create files here" : "Non ten permiso para enviar ou crear ficheiros aquí.",
"New" : "Novo",
diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js
index 107abfbcb66..a4b4bedd68b 100644
--- a/apps/files/l10n/he.js
+++ b/apps/files/l10n/he.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "האחסון אינו זמין באופן זמני",
- "Storage invalid" : "אחסון לא חוקי",
- "Unknown error" : "שגיאה בלתי ידועה",
"File could not be found" : "הקובץ לא ניתן לאיתור",
"Move or copy" : "העברה או העתקה",
"Download" : "הורדה",
@@ -45,6 +42,7 @@ OC.L10N.register(
"Unable to determine date" : "לא ניתן לקבוע תאריך",
"This operation is forbidden" : "פעולה זו אסורה",
"This directory is unavailable, please check the logs or contact the administrator" : "תיקייה זו לא קיימת, יש לבדוק את הלוגים או ליצור קשר עם המנהל",
+ "Storage is temporarily not available" : "האחסון אינו זמין באופן זמני",
"Could not move \"{file}\", target exists" : "לא ניתן להעביר \"{file}\", קובץ מטרה קיים",
"Could not move \"{file}\"" : "לא ניתן להעביר \"{file}\"",
"copy" : "עותק",
@@ -154,6 +152,7 @@ OC.L10N.register(
"Transfer" : "העברה",
"Transfer {path} to {userid}" : "העברת {path} לידי {userid}",
"Invalid path selected" : "הנתיב שנבחר שגוי",
+ "Unknown error" : "שגיאה בלתי ידועה",
"Ownership transfer request sent" : "נשלחה בקשת העברת בעלות",
"Show hidden files" : "הצגת קבצים נסתרים",
"Crop image previews" : "חיתוך תצוגות מקדימות של תמונות",
@@ -185,6 +184,7 @@ OC.L10N.register(
"Pending shares" : "שיתופים ממתינים",
"Text file" : "קובץ טקסט",
"New text file.txt" : "קובץ טקסט חדש.txt",
+ "Storage invalid" : "אחסון לא חוקי",
"Select" : "בחר",
"You don’t have permission to upload or create files here" : "אין לך הרשאות להעלות או ליצור קבצים כאן",
"New" : "חדש",
diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json
index 0c6b4669cde..6cf2976e498 100644
--- a/apps/files/l10n/he.json
+++ b/apps/files/l10n/he.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "האחסון אינו זמין באופן זמני",
- "Storage invalid" : "אחסון לא חוקי",
- "Unknown error" : "שגיאה בלתי ידועה",
"File could not be found" : "הקובץ לא ניתן לאיתור",
"Move or copy" : "העברה או העתקה",
"Download" : "הורדה",
@@ -43,6 +40,7 @@
"Unable to determine date" : "לא ניתן לקבוע תאריך",
"This operation is forbidden" : "פעולה זו אסורה",
"This directory is unavailable, please check the logs or contact the administrator" : "תיקייה זו לא קיימת, יש לבדוק את הלוגים או ליצור קשר עם המנהל",
+ "Storage is temporarily not available" : "האחסון אינו זמין באופן זמני",
"Could not move \"{file}\", target exists" : "לא ניתן להעביר \"{file}\", קובץ מטרה קיים",
"Could not move \"{file}\"" : "לא ניתן להעביר \"{file}\"",
"copy" : "עותק",
@@ -152,6 +150,7 @@
"Transfer" : "העברה",
"Transfer {path} to {userid}" : "העברת {path} לידי {userid}",
"Invalid path selected" : "הנתיב שנבחר שגוי",
+ "Unknown error" : "שגיאה בלתי ידועה",
"Ownership transfer request sent" : "נשלחה בקשת העברת בעלות",
"Show hidden files" : "הצגת קבצים נסתרים",
"Crop image previews" : "חיתוך תצוגות מקדימות של תמונות",
@@ -183,6 +182,7 @@
"Pending shares" : "שיתופים ממתינים",
"Text file" : "קובץ טקסט",
"New text file.txt" : "קובץ טקסט חדש.txt",
+ "Storage invalid" : "אחסון לא חוקי",
"Select" : "בחר",
"You don’t have permission to upload or create files here" : "אין לך הרשאות להעלות או ליצור קבצים כאן",
"New" : "חדש",
diff --git a/apps/files/l10n/hr.js b/apps/files/l10n/hr.js
index 9c8e9175bc5..28a06126c4c 100644
--- a/apps/files/l10n/hr.js
+++ b/apps/files/l10n/hr.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Pohrana privremeno nije dostupna",
- "Storage invalid" : "Neispravna pohrana",
- "Unknown error" : "Nepoznata pogreška",
"File could not be found" : "Datoteka nije pronađena",
"Move or copy" : "Premjesti ili kopiraj",
"Download" : "Preuzmi",
@@ -45,6 +42,7 @@ OC.L10N.register(
"Unable to determine date" : "Nije moguće odrediti datum",
"This operation is forbidden" : "Ova radnja je zabranjena",
"This directory is unavailable, please check the logs or contact the administrator" : "Ovaj direktorij je nedostupan, provjerite zapise ili se obratite administratoru",
+ "Storage is temporarily not available" : "Pohrana privremeno nije dostupna",
"Could not move \"{file}\", target exists" : "Neuspješno premještanje „{file}”, ciljna datoteka postoji",
"Could not move \"{file}\"" : "Neuspješno premještanje „{file}”",
"copy" : "kopiraj",
@@ -165,6 +163,7 @@ OC.L10N.register(
"Transfer" : "Prijenos",
"Transfer {path} to {userid}" : "Prijenos {path} na {userid}",
"Invalid path selected" : "Odabran nevažeći put",
+ "Unknown error" : "Nepoznata pogreška",
"Ownership transfer request sent" : "Zahtjev za prijenos vlasništva je poslan",
"Show hidden files" : "Prikaz skrivenih datoteka",
"Crop image previews" : "Obreži pretpreglede slika",
@@ -205,6 +204,7 @@ OC.L10N.register(
"Pending shares" : "Dijeljenja na čekanju",
"Text file" : "Tekstna datoteka",
"New text file.txt" : "Nova tekstna datoteka.txt",
+ "Storage invalid" : "Neispravna pohrana",
"Select" : "Odaberi",
"You don’t have permission to upload or create files here" : "Ovdje ne smijete otpremati ili stvarati datoteke",
"New" : "Novo",
diff --git a/apps/files/l10n/hr.json b/apps/files/l10n/hr.json
index c2987da7b23..2497c7c989d 100644
--- a/apps/files/l10n/hr.json
+++ b/apps/files/l10n/hr.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Pohrana privremeno nije dostupna",
- "Storage invalid" : "Neispravna pohrana",
- "Unknown error" : "Nepoznata pogreška",
"File could not be found" : "Datoteka nije pronađena",
"Move or copy" : "Premjesti ili kopiraj",
"Download" : "Preuzmi",
@@ -43,6 +40,7 @@
"Unable to determine date" : "Nije moguće odrediti datum",
"This operation is forbidden" : "Ova radnja je zabranjena",
"This directory is unavailable, please check the logs or contact the administrator" : "Ovaj direktorij je nedostupan, provjerite zapise ili se obratite administratoru",
+ "Storage is temporarily not available" : "Pohrana privremeno nije dostupna",
"Could not move \"{file}\", target exists" : "Neuspješno premještanje „{file}”, ciljna datoteka postoji",
"Could not move \"{file}\"" : "Neuspješno premještanje „{file}”",
"copy" : "kopiraj",
@@ -163,6 +161,7 @@
"Transfer" : "Prijenos",
"Transfer {path} to {userid}" : "Prijenos {path} na {userid}",
"Invalid path selected" : "Odabran nevažeći put",
+ "Unknown error" : "Nepoznata pogreška",
"Ownership transfer request sent" : "Zahtjev za prijenos vlasništva je poslan",
"Show hidden files" : "Prikaz skrivenih datoteka",
"Crop image previews" : "Obreži pretpreglede slika",
@@ -203,6 +202,7 @@
"Pending shares" : "Dijeljenja na čekanju",
"Text file" : "Tekstna datoteka",
"New text file.txt" : "Nova tekstna datoteka.txt",
+ "Storage invalid" : "Neispravna pohrana",
"Select" : "Odaberi",
"You don’t have permission to upload or create files here" : "Ovdje ne smijete otpremati ili stvarati datoteke",
"New" : "Novo",
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index bd798e4d88f..b8fd7649148 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "A tároló átmenetileg nem érhető el",
- "Storage invalid" : "A tároló érvénytelen",
- "Unknown error" : "Ismeretlen hiba",
"File could not be found" : "Fájl nem található",
"Move or copy" : "Áthelyezés vagy másolás",
"Download" : "Letöltés",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Nem lehet meghatározni a dátumot",
"This operation is forbidden" : "Ez a művelet tiltott",
"This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem érhető el, nézze meg a naplófájlokat vagy lépjen kapcsolatba az adminisztrátorral",
+ "Storage is temporarily not available" : "A tároló átmenetileg nem érhető el",
"Could not move \"{file}\", target exists" : "A(z) „{file}” nem helyezhető át, mert a cél már létezik",
"Could not move \"{file}\"" : "A(z) „{file}” nem helyezhető át",
"copy" : "másolat",
@@ -177,6 +175,7 @@ OC.L10N.register(
"Transfer" : "Átruházás",
"Transfer {path} to {userid}" : "{path} átruházása {userid} számára",
"Invalid path selected" : "Érvénytelen útvonal kiválasztva",
+ "Unknown error" : "Ismeretlen hiba",
"Ownership transfer request sent" : "Tulajdonjog átruházási kérés elküldve",
"Cannot transfer ownership of a file or folder you do not own" : "Nem ruházható át olyan fájl vagy mappa tulajdonjoga, amely nem Öné",
"Files settings" : "Fájlok beállításai",
@@ -221,6 +220,7 @@ OC.L10N.register(
"Pending shares" : "Függőben lévő megosztások",
"Text file" : "Szövegfájl",
"New text file.txt" : "Új szövegfájl.txt",
+ "Storage invalid" : "A tároló érvénytelen",
"Select" : "Kiválasztás",
"You don’t have permission to upload or create files here" : "Nincs jogosultsága fájlok ide feltöltéséhez vagy létrehozásához",
"New" : "Új",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index 56aa1d565c8..b07c7635abc 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "A tároló átmenetileg nem érhető el",
- "Storage invalid" : "A tároló érvénytelen",
- "Unknown error" : "Ismeretlen hiba",
"File could not be found" : "Fájl nem található",
"Move or copy" : "Áthelyezés vagy másolás",
"Download" : "Letöltés",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Nem lehet meghatározni a dátumot",
"This operation is forbidden" : "Ez a művelet tiltott",
"This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem érhető el, nézze meg a naplófájlokat vagy lépjen kapcsolatba az adminisztrátorral",
+ "Storage is temporarily not available" : "A tároló átmenetileg nem érhető el",
"Could not move \"{file}\", target exists" : "A(z) „{file}” nem helyezhető át, mert a cél már létezik",
"Could not move \"{file}\"" : "A(z) „{file}” nem helyezhető át",
"copy" : "másolat",
@@ -175,6 +173,7 @@
"Transfer" : "Átruházás",
"Transfer {path} to {userid}" : "{path} átruházása {userid} számára",
"Invalid path selected" : "Érvénytelen útvonal kiválasztva",
+ "Unknown error" : "Ismeretlen hiba",
"Ownership transfer request sent" : "Tulajdonjog átruházási kérés elküldve",
"Cannot transfer ownership of a file or folder you do not own" : "Nem ruházható át olyan fájl vagy mappa tulajdonjoga, amely nem Öné",
"Files settings" : "Fájlok beállításai",
@@ -219,6 +218,7 @@
"Pending shares" : "Függőben lévő megosztások",
"Text file" : "Szövegfájl",
"New text file.txt" : "Új szövegfájl.txt",
+ "Storage invalid" : "A tároló érvénytelen",
"Select" : "Kiválasztás",
"You don’t have permission to upload or create files here" : "Nincs jogosultsága fájlok ide feltöltéséhez vagy létrehozásához",
"New" : "Új",
diff --git a/apps/files/l10n/ia.js b/apps/files/l10n/ia.js
index cf4bfa43a4b..2f4e29ca54d 100644
--- a/apps/files/l10n/ia.js
+++ b/apps/files/l10n/ia.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Immagazinage es provisorimente non disponibile",
- "Storage invalid" : "Immagazinage non valide",
- "Unknown error" : "Error incognite",
"File could not be found" : "Impossibile trovar le file",
"Download" : "Discargar",
"Delete" : "Deler",
@@ -31,6 +28,7 @@ OC.L10N.register(
"Unable to determine date" : "Impossibile determinar data",
"This operation is forbidden" : "Iste operation es prohibite",
"This directory is unavailable, please check the logs or contact the administrator" : "Iste directorio non es disponibile, per favor verifica le registros o contacta le administrator",
+ "Storage is temporarily not available" : "Immagazinage es provisorimente non disponibile",
"Could not move \"{file}\", target exists" : "Impossibile displaciar \"{file}\": le destination ja existe",
"Could not move \"{file}\"" : "Impossibile displaciar \"{file}\"",
"{newName} already exists" : "{newName} ja existe",
@@ -96,6 +94,7 @@ OC.L10N.register(
"Upload (max. %s)" : "Incarga (maxime %s)",
"Accept" : "Acceptar",
"in %s" : "in %s",
+ "Unknown error" : "Error incognite",
"Show hidden files" : "Monstrar files occultate",
"Cancel" : "Cancellar",
"Create" : "Crear",
@@ -115,6 +114,7 @@ OC.L10N.register(
"Shared by link" : "Compartite per ligamine",
"Text file" : "File de texto",
"New text file.txt" : "Nove texto file.txt",
+ "Storage invalid" : "Immagazinage non valide",
"Select" : "Selectionar",
"You don’t have permission to upload or create files here" : "Tu non ha permission pro incargar o crear files ci.",
"New" : "Nove",
diff --git a/apps/files/l10n/ia.json b/apps/files/l10n/ia.json
index 1322ea70042..e6bccc4d3fc 100644
--- a/apps/files/l10n/ia.json
+++ b/apps/files/l10n/ia.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Immagazinage es provisorimente non disponibile",
- "Storage invalid" : "Immagazinage non valide",
- "Unknown error" : "Error incognite",
"File could not be found" : "Impossibile trovar le file",
"Download" : "Discargar",
"Delete" : "Deler",
@@ -29,6 +26,7 @@
"Unable to determine date" : "Impossibile determinar data",
"This operation is forbidden" : "Iste operation es prohibite",
"This directory is unavailable, please check the logs or contact the administrator" : "Iste directorio non es disponibile, per favor verifica le registros o contacta le administrator",
+ "Storage is temporarily not available" : "Immagazinage es provisorimente non disponibile",
"Could not move \"{file}\", target exists" : "Impossibile displaciar \"{file}\": le destination ja existe",
"Could not move \"{file}\"" : "Impossibile displaciar \"{file}\"",
"{newName} already exists" : "{newName} ja existe",
@@ -94,6 +92,7 @@
"Upload (max. %s)" : "Incarga (maxime %s)",
"Accept" : "Acceptar",
"in %s" : "in %s",
+ "Unknown error" : "Error incognite",
"Show hidden files" : "Monstrar files occultate",
"Cancel" : "Cancellar",
"Create" : "Crear",
@@ -113,6 +112,7 @@
"Shared by link" : "Compartite per ligamine",
"Text file" : "File de texto",
"New text file.txt" : "Nove texto file.txt",
+ "Storage invalid" : "Immagazinage non valide",
"Select" : "Selectionar",
"You don’t have permission to upload or create files here" : "Tu non ha permission pro incargar o crear files ci.",
"New" : "Nove",
diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js
index b3754f8d02c..1cdcc286232 100644
--- a/apps/files/l10n/id.js
+++ b/apps/files/l10n/id.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Penyimpanan sementara tidak tersedia",
- "Storage invalid" : "Penyimpanan tidak sah",
- "Unknown error" : "Kesalahan tidak diketahui",
"File could not be found" : "Berkas tidak ditemukan",
"Move or copy" : "Pindah atau salin",
"Download" : "Unduh",
@@ -43,6 +40,7 @@ OC.L10N.register(
"Unable to determine date" : "Tidak dapat menentukan tanggal",
"This operation is forbidden" : "Operasi ini dilarang",
"This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak",
+ "Storage is temporarily not available" : "Penyimpanan sementara tidak tersedia",
"Could not move \"{file}\", target exists" : "Tidak dapat memindahkan \"{file}\", sudah ada",
"Could not move \"{file}\"" : "Tidak dapat memindahkan \"{file}\"",
"copy" : "salin",
@@ -146,6 +144,7 @@ OC.L10N.register(
"Transfer" : "Transfer",
"Transfer {path} to {userid}" : "Transfer {path} ke {user}",
"Invalid path selected" : "Jalur terpilih invalid",
+ "Unknown error" : "Kesalahan tidak diketahui",
"Ownership transfer request sent" : "Permintaan transfer kepemilikan terkirim",
"Show hidden files" : "Lihat berkas tersembunyi",
"Crop image previews" : "Pangkas pratinjau gambar",
@@ -176,6 +175,7 @@ OC.L10N.register(
"Pending shares" : "Berbagi tertunda",
"Text file" : "Berkas teks",
"New text file.txt" : "Teks baru file.txt",
+ "Storage invalid" : "Penyimpanan tidak sah",
"Select" : "Pilih",
"You don’t have permission to upload or create files here" : "Anda tidak memiliki akses untuk mengunggah atau membuat berkas disini",
"New" : "Baru",
diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json
index 0a23daba8c2..18f602de423 100644
--- a/apps/files/l10n/id.json
+++ b/apps/files/l10n/id.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Penyimpanan sementara tidak tersedia",
- "Storage invalid" : "Penyimpanan tidak sah",
- "Unknown error" : "Kesalahan tidak diketahui",
"File could not be found" : "Berkas tidak ditemukan",
"Move or copy" : "Pindah atau salin",
"Download" : "Unduh",
@@ -41,6 +38,7 @@
"Unable to determine date" : "Tidak dapat menentukan tanggal",
"This operation is forbidden" : "Operasi ini dilarang",
"This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak",
+ "Storage is temporarily not available" : "Penyimpanan sementara tidak tersedia",
"Could not move \"{file}\", target exists" : "Tidak dapat memindahkan \"{file}\", sudah ada",
"Could not move \"{file}\"" : "Tidak dapat memindahkan \"{file}\"",
"copy" : "salin",
@@ -144,6 +142,7 @@
"Transfer" : "Transfer",
"Transfer {path} to {userid}" : "Transfer {path} ke {user}",
"Invalid path selected" : "Jalur terpilih invalid",
+ "Unknown error" : "Kesalahan tidak diketahui",
"Ownership transfer request sent" : "Permintaan transfer kepemilikan terkirim",
"Show hidden files" : "Lihat berkas tersembunyi",
"Crop image previews" : "Pangkas pratinjau gambar",
@@ -174,6 +173,7 @@
"Pending shares" : "Berbagi tertunda",
"Text file" : "Berkas teks",
"New text file.txt" : "Teks baru file.txt",
+ "Storage invalid" : "Penyimpanan tidak sah",
"Select" : "Pilih",
"You don’t have permission to upload or create files here" : "Anda tidak memiliki akses untuk mengunggah atau membuat berkas disini",
"New" : "Baru",
diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js
index 078ec5a45c5..68008bfce96 100644
--- a/apps/files/l10n/is.js
+++ b/apps/files/l10n/is.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Gagnageymsla ekki tiltæk í augnablikinu",
- "Storage invalid" : "Ógild geymsla",
- "Unknown error" : "Óþekkt villa",
"File could not be found" : "Skrá finnst ekki",
"Move or copy" : "Færa eða afrita",
"Download" : "Niðurhal",
@@ -48,6 +45,7 @@ OC.L10N.register(
"Unable to determine date" : "Tókst ekki að ákvarða dagsetningu",
"This operation is forbidden" : "Þessi aðgerð er bönnuð",
"This directory is unavailable, please check the logs or contact the administrator" : "Þessi mappa er ekki tiltæk, athugaðu atvikaskrár eða hafðu samband við kerfissjóra",
+ "Storage is temporarily not available" : "Gagnageymsla ekki tiltæk í augnablikinu",
"Could not move \"{file}\", target exists" : "Gat ekki fært \"{file}\", markskrá er til",
"Could not move \"{file}\"" : "Gat ekki fært \"{file}\"",
"copy" : "afrit",
@@ -144,6 +142,7 @@ OC.L10N.register(
"Transfer" : "Færa",
"Transfer {path} to {userid}" : "Færa {path} til {userid}",
"Invalid path selected" : "Ógild slóð valin",
+ "Unknown error" : "Óþekkt villa",
"Ownership transfer request sent" : "Beiðni um millifærslu eignarhalds send",
"Show hidden files" : "Sýna faldar skrár",
"Crop image previews" : "Skera utan af forskoðun mynda",
@@ -181,6 +180,7 @@ OC.L10N.register(
"Pending shares" : "Sameignir í bið",
"Text file" : "Textaskrá",
"New text file.txt" : "Ný textaskrá.txt",
+ "Storage invalid" : "Ógild geymsla",
"Select" : "Velja",
"You don’t have permission to upload or create files here" : "Þú hefur ekki heimild til að hlaða inn eða búa til skjöl hér",
"New" : "Nýtt",
diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json
index 29f56b8ace1..60aa1721214 100644
--- a/apps/files/l10n/is.json
+++ b/apps/files/l10n/is.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Gagnageymsla ekki tiltæk í augnablikinu",
- "Storage invalid" : "Ógild geymsla",
- "Unknown error" : "Óþekkt villa",
"File could not be found" : "Skrá finnst ekki",
"Move or copy" : "Færa eða afrita",
"Download" : "Niðurhal",
@@ -46,6 +43,7 @@
"Unable to determine date" : "Tókst ekki að ákvarða dagsetningu",
"This operation is forbidden" : "Þessi aðgerð er bönnuð",
"This directory is unavailable, please check the logs or contact the administrator" : "Þessi mappa er ekki tiltæk, athugaðu atvikaskrár eða hafðu samband við kerfissjóra",
+ "Storage is temporarily not available" : "Gagnageymsla ekki tiltæk í augnablikinu",
"Could not move \"{file}\", target exists" : "Gat ekki fært \"{file}\", markskrá er til",
"Could not move \"{file}\"" : "Gat ekki fært \"{file}\"",
"copy" : "afrit",
@@ -142,6 +140,7 @@
"Transfer" : "Færa",
"Transfer {path} to {userid}" : "Færa {path} til {userid}",
"Invalid path selected" : "Ógild slóð valin",
+ "Unknown error" : "Óþekkt villa",
"Ownership transfer request sent" : "Beiðni um millifærslu eignarhalds send",
"Show hidden files" : "Sýna faldar skrár",
"Crop image previews" : "Skera utan af forskoðun mynda",
@@ -179,6 +178,7 @@
"Pending shares" : "Sameignir í bið",
"Text file" : "Textaskrá",
"New text file.txt" : "Ný textaskrá.txt",
+ "Storage invalid" : "Ógild geymsla",
"Select" : "Velja",
"You don’t have permission to upload or create files here" : "Þú hefur ekki heimild til að hlaða inn eða búa til skjöl hér",
"New" : "Nýtt",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 14a9ca26e59..6e517e1cb4c 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
- "Storage invalid" : "Archiviazione non valida",
- "Unknown error" : "Errore sconosciuto",
"File could not be found" : "Il file non può essere trovato",
"Move or copy" : "Sposta o copia",
"Download" : "Scarica",
@@ -51,6 +48,7 @@ OC.L10N.register(
"Unable to determine date" : "Impossibile determinare la data",
"This operation is forbidden" : "Questa operazione è vietata",
"This directory is unavailable, please check the logs or contact the administrator" : "Questa cartella non è disponibile, controlla i log o contatta l'amministratore",
+ "Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
"Could not move \"{file}\", target exists" : "Impossibile spostare \"{file}\", la destinazione esiste già",
"Could not move \"{file}\"" : "Impossibile spostare \"{file}\"",
"copy" : "copia",
@@ -171,6 +169,7 @@ OC.L10N.register(
"Transfer" : "Trasferisci",
"Transfer {path} to {userid}" : "Trasferisci {path} a {userid}",
"Invalid path selected" : "Percorso selezionato non valido",
+ "Unknown error" : "Errore sconosciuto",
"Ownership transfer request sent" : "Richiesta di trasferimento della proprietà inviata",
"Show hidden files" : "Mostra i file nascosti",
"Crop image previews" : "Ritaglia le anteprime delle immagini",
@@ -211,6 +210,7 @@ OC.L10N.register(
"Pending shares" : "Condivisioni in corso",
"Text file" : "File di testo",
"New text file.txt" : "Nuovo file di testo.txt",
+ "Storage invalid" : "Archiviazione non valida",
"Select" : "Seleziona",
"You don’t have permission to upload or create files here" : "Qui non hai i permessi per caricare o creare file",
"New" : "Nuovo",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index 508eb7f42b9..7f8c2a35983 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
- "Storage invalid" : "Archiviazione non valida",
- "Unknown error" : "Errore sconosciuto",
"File could not be found" : "Il file non può essere trovato",
"Move or copy" : "Sposta o copia",
"Download" : "Scarica",
@@ -49,6 +46,7 @@
"Unable to determine date" : "Impossibile determinare la data",
"This operation is forbidden" : "Questa operazione è vietata",
"This directory is unavailable, please check the logs or contact the administrator" : "Questa cartella non è disponibile, controlla i log o contatta l'amministratore",
+ "Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
"Could not move \"{file}\", target exists" : "Impossibile spostare \"{file}\", la destinazione esiste già",
"Could not move \"{file}\"" : "Impossibile spostare \"{file}\"",
"copy" : "copia",
@@ -169,6 +167,7 @@
"Transfer" : "Trasferisci",
"Transfer {path} to {userid}" : "Trasferisci {path} a {userid}",
"Invalid path selected" : "Percorso selezionato non valido",
+ "Unknown error" : "Errore sconosciuto",
"Ownership transfer request sent" : "Richiesta di trasferimento della proprietà inviata",
"Show hidden files" : "Mostra i file nascosti",
"Crop image previews" : "Ritaglia le anteprime delle immagini",
@@ -209,6 +208,7 @@
"Pending shares" : "Condivisioni in corso",
"Text file" : "File di testo",
"New text file.txt" : "Nuovo file di testo.txt",
+ "Storage invalid" : "Archiviazione non valida",
"Select" : "Seleziona",
"You don’t have permission to upload or create files here" : "Qui non hai i permessi per caricare o creare file",
"New" : "Nuovo",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index 98c999b22af..f61350a6f83 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "ストレージは一時的に利用できません",
- "Storage invalid" : "ストレージが無効です",
- "Unknown error" : "不明なエラー",
"File could not be found" : "ファイルを見つけられませんでした",
"Move or copy" : "移動またはコピー",
"Download" : "ダウンロード",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "更新日不明",
"This operation is forbidden" : "この操作は禁止されています",
"This directory is unavailable, please check the logs or contact the administrator" : "このディレクトリは利用できません。ログを確認するか管理者に問い合わせてください。",
+ "Storage is temporarily not available" : "ストレージは一時的に利用できません",
"Could not move \"{file}\", target exists" : "ターゲットが存在するため,ファイル \"{file}\"を移動できませんでした",
"Could not move \"{file}\"" : "\"{file}\" を移動できませんでした",
"copy" : "コピー",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "転送",
"Transfer {path} to {userid}" : "{path} を {userid} に転送する",
"Invalid path selected" : "無効なパスが選択されました",
+ "Unknown error" : "不明なエラー",
"Ownership transfer request sent" : "所有権転送のリクエストを送信しました",
"Cannot transfer ownership of a file or folder you do not own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません",
"Files settings" : "ファイル設定",
@@ -221,6 +220,7 @@ OC.L10N.register(
"Pending shares" : "保留中の共有",
"Text file" : "テキストファイル",
"New text file.txt" : "新規のテキストファイル作成",
+ "Storage invalid" : "ストレージが無効です",
"Select" : "選択",
"You don’t have permission to upload or create files here" : "ここにファイルをアップロードまたは作成する権限がありません",
"New" : "新規作成",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index 0934525ebf5..411268047d8 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "ストレージは一時的に利用できません",
- "Storage invalid" : "ストレージが無効です",
- "Unknown error" : "不明なエラー",
"File could not be found" : "ファイルを見つけられませんでした",
"Move or copy" : "移動またはコピー",
"Download" : "ダウンロード",
@@ -51,6 +48,7 @@
"Unable to determine date" : "更新日不明",
"This operation is forbidden" : "この操作は禁止されています",
"This directory is unavailable, please check the logs or contact the administrator" : "このディレクトリは利用できません。ログを確認するか管理者に問い合わせてください。",
+ "Storage is temporarily not available" : "ストレージは一時的に利用できません",
"Could not move \"{file}\", target exists" : "ターゲットが存在するため,ファイル \"{file}\"を移動できませんでした",
"Could not move \"{file}\"" : "\"{file}\" を移動できませんでした",
"copy" : "コピー",
@@ -176,6 +174,7 @@
"Transfer" : "転送",
"Transfer {path} to {userid}" : "{path} を {userid} に転送する",
"Invalid path selected" : "無効なパスが選択されました",
+ "Unknown error" : "不明なエラー",
"Ownership transfer request sent" : "所有権転送のリクエストを送信しました",
"Cannot transfer ownership of a file or folder you do not own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません",
"Files settings" : "ファイル設定",
@@ -219,6 +218,7 @@
"Pending shares" : "保留中の共有",
"Text file" : "テキストファイル",
"New text file.txt" : "新規のテキストファイル作成",
+ "Storage invalid" : "ストレージが無効です",
"Select" : "選択",
"You don’t have permission to upload or create files here" : "ここにファイルをアップロードまたは作成する権限がありません",
"New" : "新規作成",
diff --git a/apps/files/l10n/ka_GE.js b/apps/files/l10n/ka_GE.js
index 90c632feb02..4b1c72fd72b 100644
--- a/apps/files/l10n/ka_GE.js
+++ b/apps/files/l10n/ka_GE.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "საცავი დროებით ხელმიუწვდომელია",
- "Storage invalid" : "საცავი არასწორია",
- "Unknown error" : "უცნობი შეცდომა",
"File could not be found" : "ფაილი ვერ იქნა ნაპოვნი",
"Move or copy" : "გადაიტანეთ ან დააკოპირეთ",
"Download" : "ჩამოტვირთვა",
@@ -37,6 +34,7 @@ OC.L10N.register(
"Unable to determine date" : "თარიღის დადგენა შეუძლებელია",
"This operation is forbidden" : "ეს ოპერაცია აკრძალულია",
"This directory is unavailable, please check the logs or contact the administrator" : "დირექტორია ხელმიუწვდომელია, გთოხვთ შეამოწმოთ ლოგები ან დაუკავშირდეთ ადმინისტრატორს",
+ "Storage is temporarily not available" : "საცავი დროებით ხელმიუწვდომელია",
"Could not move \"{file}\", target exists" : "\"{file}\"-ის გადატანა ვერ მოხერხდა, დანიშნულება არსებობს",
"Could not move \"{file}\"" : "\"{file}\"-ის გადატანა ვერ მოხერხდა",
"Could not copy \"{file}\", target exists" : "\"{file}\"-ის კოპირება ვერ მოხერხდა, დანიშნულება არსებობს",
@@ -117,6 +115,7 @@ OC.L10N.register(
"Accept" : "მიღება",
"in %s" : "%s-ში",
"Change" : "შეცვლა",
+ "Unknown error" : "უცნობი შეცდომა",
"Show hidden files" : "დამალული ფაილების ჩვენება",
"Additional settings" : "დამატებითი პარამეტრები",
"Copy to clipboard" : "კოპირება ბუფერში",
@@ -140,6 +139,7 @@ OC.L10N.register(
"Shared by link" : "გაზიარდა ბმულით",
"Text file" : "ტექსტური ფაილი",
"New text file.txt" : "ახალი ტექსტი file.txt",
+ "Storage invalid" : "საცავი არასწორია",
"Select" : "არჩევა",
"You don’t have permission to upload or create files here" : "აქ ფაილების შექმნის ან ატვირთვის უფლება არ გაქვთ",
"New" : "ახალი",
diff --git a/apps/files/l10n/ka_GE.json b/apps/files/l10n/ka_GE.json
index e450ba5f564..7a9dcb4a750 100644
--- a/apps/files/l10n/ka_GE.json
+++ b/apps/files/l10n/ka_GE.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "საცავი დროებით ხელმიუწვდომელია",
- "Storage invalid" : "საცავი არასწორია",
- "Unknown error" : "უცნობი შეცდომა",
"File could not be found" : "ფაილი ვერ იქნა ნაპოვნი",
"Move or copy" : "გადაიტანეთ ან დააკოპირეთ",
"Download" : "ჩამოტვირთვა",
@@ -35,6 +32,7 @@
"Unable to determine date" : "თარიღის დადგენა შეუძლებელია",
"This operation is forbidden" : "ეს ოპერაცია აკრძალულია",
"This directory is unavailable, please check the logs or contact the administrator" : "დირექტორია ხელმიუწვდომელია, გთოხვთ შეამოწმოთ ლოგები ან დაუკავშირდეთ ადმინისტრატორს",
+ "Storage is temporarily not available" : "საცავი დროებით ხელმიუწვდომელია",
"Could not move \"{file}\", target exists" : "\"{file}\"-ის გადატანა ვერ მოხერხდა, დანიშნულება არსებობს",
"Could not move \"{file}\"" : "\"{file}\"-ის გადატანა ვერ მოხერხდა",
"Could not copy \"{file}\", target exists" : "\"{file}\"-ის კოპირება ვერ მოხერხდა, დანიშნულება არსებობს",
@@ -115,6 +113,7 @@
"Accept" : "მიღება",
"in %s" : "%s-ში",
"Change" : "შეცვლა",
+ "Unknown error" : "უცნობი შეცდომა",
"Show hidden files" : "დამალული ფაილების ჩვენება",
"Additional settings" : "დამატებითი პარამეტრები",
"Copy to clipboard" : "კოპირება ბუფერში",
@@ -138,6 +137,7 @@
"Shared by link" : "გაზიარდა ბმულით",
"Text file" : "ტექსტური ფაილი",
"New text file.txt" : "ახალი ტექსტი file.txt",
+ "Storage invalid" : "საცავი არასწორია",
"Select" : "არჩევა",
"You don’t have permission to upload or create files here" : "აქ ფაილების შექმნის ან ატვირთვის უფლება არ გაქვთ",
"New" : "ახალი",
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index 422707db086..3d1e5cd0eef 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없음",
- "Storage invalid" : "저장소가 잘못됨",
- "Unknown error" : "알 수 없는 오류",
"File could not be found" : "파일을 찾을 수 없음",
"Move or copy" : "이동이나 복사",
"Download" : "다운로드",
@@ -52,6 +49,7 @@ OC.L10N.register(
"Unable to determine date" : "날짜를 결정할 수 없음",
"This operation is forbidden" : "이 작업이 금지됨",
"This directory is unavailable, please check the logs or contact the administrator" : "디렉터리를 사용할 수 없습니다. 로그를 확인하거나 관리자에게 연락하십시오",
+ "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없음",
"Could not move \"{file}\", target exists" : "\"{file}\"을(를) 이동할 수 없음, 대상이 존재함",
"Could not move \"{file}\"" : "\"{file}\"을(를) 이동할 수 없음",
"copy" : "복사",
@@ -173,6 +171,7 @@ OC.L10N.register(
"Transfer" : "이전",
"Transfer {path} to {userid}" : "{path}을(를) {userid}에게 이전하기",
"Invalid path selected" : "잘못된 경로가 선택됨",
+ "Unknown error" : "알 수 없는 오류",
"Ownership transfer request sent" : "소유권 이전 요청이 전송됨",
"Cannot transfer ownership of a file or folder you do not own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음",
"Files settings" : "파일 설정",
@@ -213,6 +212,7 @@ OC.L10N.register(
"Pending shares" : "진행중인 공유",
"Text file" : "텍스트 파일",
"New text file.txt" : "새 텍스트 파일.txt",
+ "Storage invalid" : "저장소가 잘못됨",
"Select" : "선택",
"You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
"New" : "새로 만들기",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 8c7861e559a..f2d2d9e4f34 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없음",
- "Storage invalid" : "저장소가 잘못됨",
- "Unknown error" : "알 수 없는 오류",
"File could not be found" : "파일을 찾을 수 없음",
"Move or copy" : "이동이나 복사",
"Download" : "다운로드",
@@ -50,6 +47,7 @@
"Unable to determine date" : "날짜를 결정할 수 없음",
"This operation is forbidden" : "이 작업이 금지됨",
"This directory is unavailable, please check the logs or contact the administrator" : "디렉터리를 사용할 수 없습니다. 로그를 확인하거나 관리자에게 연락하십시오",
+ "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없음",
"Could not move \"{file}\", target exists" : "\"{file}\"을(를) 이동할 수 없음, 대상이 존재함",
"Could not move \"{file}\"" : "\"{file}\"을(를) 이동할 수 없음",
"copy" : "복사",
@@ -171,6 +169,7 @@
"Transfer" : "이전",
"Transfer {path} to {userid}" : "{path}을(를) {userid}에게 이전하기",
"Invalid path selected" : "잘못된 경로가 선택됨",
+ "Unknown error" : "알 수 없는 오류",
"Ownership transfer request sent" : "소유권 이전 요청이 전송됨",
"Cannot transfer ownership of a file or folder you do not own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음",
"Files settings" : "파일 설정",
@@ -211,6 +210,7 @@
"Pending shares" : "진행중인 공유",
"Text file" : "텍스트 파일",
"New text file.txt" : "새 텍스트 파일.txt",
+ "Storage invalid" : "저장소가 잘못됨",
"Select" : "선택",
"You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
"New" : "새로 만들기",
diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js
index 7e7c21394b0..ac25733abf3 100644
--- a/apps/files/l10n/lt_LT.js
+++ b/apps/files/l10n/lt_LT.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
- "Storage invalid" : "Saugykla netinkama naudoti",
- "Unknown error" : "Nežinoma klaida",
"File could not be found" : "Nepavyko rasti failo",
"Move or copy" : "Perkelti ar kopijuoti",
"Download" : "Atsisiųsti",
@@ -46,6 +43,7 @@ OC.L10N.register(
"Unable to determine date" : "Nepavyksta nustatyti datos",
"This operation is forbidden" : "Ši operacija yra uždrausta",
"This directory is unavailable, please check the logs or contact the administrator" : "Šis katalogas neprieinamas, peržiūrėkite žurnalo įrašus arba susisiekite su administratoriumi",
+ "Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
"Could not move \"{file}\", target exists" : "Nepavyko perkelti „{file}“, toks failas jau yra",
"Could not move \"{file}\"" : "Nepavyko perkelti „{file}“",
"copy" : "kopija",
@@ -161,6 +159,7 @@ OC.L10N.register(
"Transfer" : "Perduoti",
"Transfer {path} to {userid}" : "Perduoti {path} naudotojui {userid}",
"Invalid path selected" : "Pasirinktas neteisingas kelias",
+ "Unknown error" : "Nežinoma klaida",
"Ownership transfer request sent" : "Nuosavybės perdavimo užklausa išsiųsta",
"Files settings" : "Failų nustatymai",
"Show hidden files" : "Rodyti paslėptus failus",
@@ -201,6 +200,7 @@ OC.L10N.register(
"Pending shares" : "Laukiantys viešiniai",
"Text file" : "Tekstinis failas",
"New text file.txt" : "Naujas tekstinis failas.txt",
+ "Storage invalid" : "Saugykla netinkama naudoti",
"Select" : "Pasirinkti",
"You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus",
"New" : "Naujas",
diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json
index e7449f9cf14..d101e5fa6f4 100644
--- a/apps/files/l10n/lt_LT.json
+++ b/apps/files/l10n/lt_LT.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
- "Storage invalid" : "Saugykla netinkama naudoti",
- "Unknown error" : "Nežinoma klaida",
"File could not be found" : "Nepavyko rasti failo",
"Move or copy" : "Perkelti ar kopijuoti",
"Download" : "Atsisiųsti",
@@ -44,6 +41,7 @@
"Unable to determine date" : "Nepavyksta nustatyti datos",
"This operation is forbidden" : "Ši operacija yra uždrausta",
"This directory is unavailable, please check the logs or contact the administrator" : "Šis katalogas neprieinamas, peržiūrėkite žurnalo įrašus arba susisiekite su administratoriumi",
+ "Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
"Could not move \"{file}\", target exists" : "Nepavyko perkelti „{file}“, toks failas jau yra",
"Could not move \"{file}\"" : "Nepavyko perkelti „{file}“",
"copy" : "kopija",
@@ -159,6 +157,7 @@
"Transfer" : "Perduoti",
"Transfer {path} to {userid}" : "Perduoti {path} naudotojui {userid}",
"Invalid path selected" : "Pasirinktas neteisingas kelias",
+ "Unknown error" : "Nežinoma klaida",
"Ownership transfer request sent" : "Nuosavybės perdavimo užklausa išsiųsta",
"Files settings" : "Failų nustatymai",
"Show hidden files" : "Rodyti paslėptus failus",
@@ -199,6 +198,7 @@
"Pending shares" : "Laukiantys viešiniai",
"Text file" : "Tekstinis failas",
"New text file.txt" : "Naujas tekstinis failas.txt",
+ "Storage invalid" : "Saugykla netinkama naudoti",
"Select" : "Pasirinkti",
"You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus",
"New" : "Naujas",
diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js
index 050b8940e12..56b597a2f65 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
- "Storage invalid" : "Nepareiza glabātuve",
- "Unknown error" : "Nezināma kļūda",
"File could not be found" : "Datni nevar atrast",
"Move or copy" : "Pārvietot vai kopēt",
"Download" : "Lejupielādēt",
@@ -41,6 +38,7 @@ OC.L10N.register(
"Unable to determine date" : "Neizdevās noteikt datumu",
"This operation is forbidden" : "Šī darbība ir aizliegta",
"This directory is unavailable, please check the logs or contact the administrator" : "Šis direktorijs nav pieejams, lūdzu pārbaudiet žurnālus vai sazinieties ar administratoru",
+ "Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
"Could not move \"{file}\", target exists" : "Nevarēja pārvietot \"{file}\", mērķis eksistē",
"Could not move \"{file}\"" : "Nevarēja pārvietot \"{file}\"",
"copy" : "kopēt",
@@ -110,6 +108,7 @@ OC.L10N.register(
"Reject" : "Noraidīt",
"in %s" : "iekš %s",
"Change" : "Mainīt",
+ "Unknown error" : "Nezināma kļūda",
"Files settings" : "Failu iestatījumi",
"Show hidden files" : "Rādīt slēptās datnes",
"Crop image previews" : "Apgriezt attēlu priekšskatījumus",
@@ -138,6 +137,7 @@ OC.L10N.register(
"Pending shares" : "Gaidošie koplietojumi",
"Text file" : "Teksta datne",
"New text file.txt" : "Jauna teksta datne.txt",
+ "Storage invalid" : "Nepareiza glabātuve",
"Select" : "Norādīt",
"You don’t have permission to upload or create files here" : "Jums nav tiesību šeit augšupielādēt vai veidot datnes",
"New" : "Jauna",
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index 7ffb2511595..3cc484892c9 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
- "Storage invalid" : "Nepareiza glabātuve",
- "Unknown error" : "Nezināma kļūda",
"File could not be found" : "Datni nevar atrast",
"Move or copy" : "Pārvietot vai kopēt",
"Download" : "Lejupielādēt",
@@ -39,6 +36,7 @@
"Unable to determine date" : "Neizdevās noteikt datumu",
"This operation is forbidden" : "Šī darbība ir aizliegta",
"This directory is unavailable, please check the logs or contact the administrator" : "Šis direktorijs nav pieejams, lūdzu pārbaudiet žurnālus vai sazinieties ar administratoru",
+ "Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
"Could not move \"{file}\", target exists" : "Nevarēja pārvietot \"{file}\", mērķis eksistē",
"Could not move \"{file}\"" : "Nevarēja pārvietot \"{file}\"",
"copy" : "kopēt",
@@ -108,6 +106,7 @@
"Reject" : "Noraidīt",
"in %s" : "iekš %s",
"Change" : "Mainīt",
+ "Unknown error" : "Nezināma kļūda",
"Files settings" : "Failu iestatījumi",
"Show hidden files" : "Rādīt slēptās datnes",
"Crop image previews" : "Apgriezt attēlu priekšskatījumus",
@@ -136,6 +135,7 @@
"Pending shares" : "Gaidošie koplietojumi",
"Text file" : "Teksta datne",
"New text file.txt" : "Jauna teksta datne.txt",
+ "Storage invalid" : "Nepareiza glabātuve",
"Select" : "Norādīt",
"You don’t have permission to upload or create files here" : "Jums nav tiesību šeit augšupielādēt vai veidot datnes",
"New" : "Jauna",
diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js
index 99431e1caf1..c6de42ad598 100644
--- a/apps/files/l10n/mk.js
+++ b/apps/files/l10n/mk.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Складиштето моментално не е достапно",
- "Storage invalid" : "Невалидно складиште",
- "Unknown error" : "Непозната грешка",
"File could not be found" : "Неможе да се пронајде датотеката",
"Move or copy" : "Премести или копирај",
"Download" : "Преземи",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Неможе да се одреди датумот",
"This operation is forbidden" : "Операцијата не е дозволена",
"This directory is unavailable, please check the logs or contact the administrator" : "Овој директориум е недостапен, ве молиме проверете ги логовите или контактирајте со администраторот",
+ "Storage is temporarily not available" : "Складиштето моментално не е достапно",
"Could not move \"{file}\", target exists" : "Не може да се премести \"{file}\", веќе постои",
"Could not move \"{file}\"" : "Не може да се премести \"{file}\"",
"copy" : "копирај",
@@ -177,6 +175,7 @@ OC.L10N.register(
"Transfer" : "Трансфер",
"Transfer {path} to {userid}" : "Трансфер {path} до {userid}",
"Invalid path selected" : "Избрана невалидна патека",
+ "Unknown error" : "Непозната грешка",
"Ownership transfer request sent" : "Испратено барање за трансфер на сопственост",
"Cannot transfer ownership of a file or folder you do not own" : "Неможете да направите трансвер на сопственот на папка која не е ваша",
"Files settings" : "Параметри за датотеки",
@@ -221,6 +220,7 @@ OC.L10N.register(
"Pending shares" : "Споделувања на чекање",
"Text file" : "Текстуална датотека",
"New text file.txt" : "Нова текстуална датотека file.txt",
+ "Storage invalid" : "Невалидно складиште",
"Select" : "Избери",
"You don’t have permission to upload or create files here" : "Немате дозвола да прикачувате или да креирате датотеки",
"New" : "Ново",
diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json
index 2974f2e976a..6fb90e1c8e2 100644
--- a/apps/files/l10n/mk.json
+++ b/apps/files/l10n/mk.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Складиштето моментално не е достапно",
- "Storage invalid" : "Невалидно складиште",
- "Unknown error" : "Непозната грешка",
"File could not be found" : "Неможе да се пронајде датотеката",
"Move or copy" : "Премести или копирај",
"Download" : "Преземи",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Неможе да се одреди датумот",
"This operation is forbidden" : "Операцијата не е дозволена",
"This directory is unavailable, please check the logs or contact the administrator" : "Овој директориум е недостапен, ве молиме проверете ги логовите или контактирајте со администраторот",
+ "Storage is temporarily not available" : "Складиштето моментално не е достапно",
"Could not move \"{file}\", target exists" : "Не може да се премести \"{file}\", веќе постои",
"Could not move \"{file}\"" : "Не може да се премести \"{file}\"",
"copy" : "копирај",
@@ -175,6 +173,7 @@
"Transfer" : "Трансфер",
"Transfer {path} to {userid}" : "Трансфер {path} до {userid}",
"Invalid path selected" : "Избрана невалидна патека",
+ "Unknown error" : "Непозната грешка",
"Ownership transfer request sent" : "Испратено барање за трансфер на сопственост",
"Cannot transfer ownership of a file or folder you do not own" : "Неможете да направите трансвер на сопственот на папка која не е ваша",
"Files settings" : "Параметри за датотеки",
@@ -219,6 +218,7 @@
"Pending shares" : "Споделувања на чекање",
"Text file" : "Текстуална датотека",
"New text file.txt" : "Нова текстуална датотека file.txt",
+ "Storage invalid" : "Невалидно складиште",
"Select" : "Избери",
"You don’t have permission to upload or create files here" : "Немате дозвола да прикачувате или да креирате датотеки",
"New" : "Ново",
diff --git a/apps/files/l10n/mn.js b/apps/files/l10n/mn.js
index e1a57b00e8e..f1934d276b7 100644
--- a/apps/files/l10n/mn.js
+++ b/apps/files/l10n/mn.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Хадгалах төхөөрөмж нь түр хугацаанд ашиглах боломжгүй байна",
- "Storage invalid" : "Хадгалах төхөөрөмж буруу байна",
- "Unknown error" : "Үл мэдэгдэх алдаа",
"File could not be found" : "Файл олдсонгүй",
"Move or copy" : "Зөөх эсвэл хуулах",
"Download" : "Татаж авах ",
@@ -41,6 +38,7 @@ OC.L10N.register(
"Unable to determine date" : "Огноог тодорхойлох боломжгүй",
"This operation is forbidden" : "Энэ үйлдэл хориотой",
"This directory is unavailable, please check the logs or contact the administrator" : "Энэ хавтас байхгүй байна, үйлдлийн лог шалгах эсвэл админ хэрэглэгчтэй холбогдоно уу.",
+ "Storage is temporarily not available" : "Хадгалах төхөөрөмж нь түр хугацаанд ашиглах боломжгүй байна",
"Could not move \"{file}\", target exists" : "\"{file}\" -г зөөж чадсангүй, алдаа: target exists ",
"Could not move \"{file}\"" : "Файлыг зөөж чадсангүй: \"{file}\"",
"copy" : "Хуулах ",
@@ -111,6 +109,7 @@ OC.L10N.register(
"A file or folder has been <strong>changed</strong>" : "Файл эсвэл хавтас амжилттай <strong>солигдлоо</strong>",
"All files" : "Бүх файлууд",
"Accept" : "Хүлээн зөвшөөрөх",
+ "Unknown error" : "Үл мэдэгдэх алдаа",
"Show hidden files" : "Нууцлагдсан файлыг харах",
"Cancel" : "болиулах",
"Create" : "Үүсгэх",
@@ -127,6 +126,7 @@ OC.L10N.register(
"Shared by link" : "Холбоосоор түгээсэн",
"Text file" : "текст файл",
"New text file.txt" : "шинэ текст file.txt",
+ "Storage invalid" : "Хадгалах төхөөрөмж буруу байна",
"Select" : "Сонгох",
"You don’t have permission to upload or create files here" : "Та энэ байршилд файл үүсгэх эсвэл байршуулах эрхгүй байна.",
"New" : "Шинэ",
diff --git a/apps/files/l10n/mn.json b/apps/files/l10n/mn.json
index fc5c0e5e0a0..193e029863b 100644
--- a/apps/files/l10n/mn.json
+++ b/apps/files/l10n/mn.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Хадгалах төхөөрөмж нь түр хугацаанд ашиглах боломжгүй байна",
- "Storage invalid" : "Хадгалах төхөөрөмж буруу байна",
- "Unknown error" : "Үл мэдэгдэх алдаа",
"File could not be found" : "Файл олдсонгүй",
"Move or copy" : "Зөөх эсвэл хуулах",
"Download" : "Татаж авах ",
@@ -39,6 +36,7 @@
"Unable to determine date" : "Огноог тодорхойлох боломжгүй",
"This operation is forbidden" : "Энэ үйлдэл хориотой",
"This directory is unavailable, please check the logs or contact the administrator" : "Энэ хавтас байхгүй байна, үйлдлийн лог шалгах эсвэл админ хэрэглэгчтэй холбогдоно уу.",
+ "Storage is temporarily not available" : "Хадгалах төхөөрөмж нь түр хугацаанд ашиглах боломжгүй байна",
"Could not move \"{file}\", target exists" : "\"{file}\" -г зөөж чадсангүй, алдаа: target exists ",
"Could not move \"{file}\"" : "Файлыг зөөж чадсангүй: \"{file}\"",
"copy" : "Хуулах ",
@@ -109,6 +107,7 @@
"A file or folder has been <strong>changed</strong>" : "Файл эсвэл хавтас амжилттай <strong>солигдлоо</strong>",
"All files" : "Бүх файлууд",
"Accept" : "Хүлээн зөвшөөрөх",
+ "Unknown error" : "Үл мэдэгдэх алдаа",
"Show hidden files" : "Нууцлагдсан файлыг харах",
"Cancel" : "болиулах",
"Create" : "Үүсгэх",
@@ -125,6 +124,7 @@
"Shared by link" : "Холбоосоор түгээсэн",
"Text file" : "текст файл",
"New text file.txt" : "шинэ текст file.txt",
+ "Storage invalid" : "Хадгалах төхөөрөмж буруу байна",
"Select" : "Сонгох",
"You don’t have permission to upload or create files here" : "Та энэ байршилд файл үүсгэх эсвэл байршуулах эрхгүй байна.",
"New" : "Шинэ",
diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js
index d3791a4c777..ae624b1a43e 100644
--- a/apps/files/l10n/nb.js
+++ b/apps/files/l10n/nb.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
- "Storage invalid" : "Lagringsplass ugyldig",
- "Unknown error" : "Ukjent feil",
"File could not be found" : "Filen ble ikke funnet",
"Move or copy" : "Flytt eller kopier",
"Download" : "Last ned",
@@ -51,6 +48,7 @@ OC.L10N.register(
"Unable to determine date" : "Kan ikke fastslå datoen",
"This operation is forbidden" : "Operasjonen er forbudt",
"This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator",
+ "Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
"Could not move \"{file}\", target exists" : "Klarte ikke å flytte \"{file}\", målfilen finnes",
"Could not move \"{file}\"" : "Klarte ikke å flytte \"{file}\"",
"copy" : "kopier",
@@ -168,6 +166,7 @@ OC.L10N.register(
"Transfer" : "Overfør",
"Transfer {path} to {userid}" : "Overfør {path} til {userid}",
"Invalid path selected" : "Ugyldig angitt sti",
+ "Unknown error" : "Ukjent feil",
"Ownership transfer request sent" : "Forespørsel om overføring av eierskap er sendt",
"Files settings" : "Filinnstillinger",
"Show hidden files" : "Vis skjulte filer",
@@ -201,6 +200,7 @@ OC.L10N.register(
"Pending shares" : "Ventende delinger",
"Text file" : "Tekstfil",
"New text file.txt" : "Ny tekstfil.txt",
+ "Storage invalid" : "Lagringsplass ugyldig",
"Select" : "Velg",
"You don’t have permission to upload or create files here" : "Du har ikke tillatelse til å laste opp eller opprette filer her",
"New" : "Ny",
diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json
index 1dcaf334c44..a0ce6e35fe8 100644
--- a/apps/files/l10n/nb.json
+++ b/apps/files/l10n/nb.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
- "Storage invalid" : "Lagringsplass ugyldig",
- "Unknown error" : "Ukjent feil",
"File could not be found" : "Filen ble ikke funnet",
"Move or copy" : "Flytt eller kopier",
"Download" : "Last ned",
@@ -49,6 +46,7 @@
"Unable to determine date" : "Kan ikke fastslå datoen",
"This operation is forbidden" : "Operasjonen er forbudt",
"This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator",
+ "Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
"Could not move \"{file}\", target exists" : "Klarte ikke å flytte \"{file}\", målfilen finnes",
"Could not move \"{file}\"" : "Klarte ikke å flytte \"{file}\"",
"copy" : "kopier",
@@ -166,6 +164,7 @@
"Transfer" : "Overfør",
"Transfer {path} to {userid}" : "Overfør {path} til {userid}",
"Invalid path selected" : "Ugyldig angitt sti",
+ "Unknown error" : "Ukjent feil",
"Ownership transfer request sent" : "Forespørsel om overføring av eierskap er sendt",
"Files settings" : "Filinnstillinger",
"Show hidden files" : "Vis skjulte filer",
@@ -199,6 +198,7 @@
"Pending shares" : "Ventende delinger",
"Text file" : "Tekstfil",
"New text file.txt" : "Ny tekstfil.txt",
+ "Storage invalid" : "Lagringsplass ugyldig",
"Select" : "Velg",
"You don’t have permission to upload or create files here" : "Du har ikke tillatelse til å laste opp eller opprette filer her",
"New" : "Ny",
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index 12a4451b844..e3aaddfb146 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
- "Storage invalid" : "Opslag ongeldig",
- "Unknown error" : "Onbekende fout",
"File could not be found" : "Bestand kon niet worden gevonden",
"Move or copy" : "Verplaats of kopieer",
"Download" : "Downloaden",
@@ -52,6 +49,7 @@ OC.L10N.register(
"Unable to determine date" : "Kon datum niet vaststellen",
"This operation is forbidden" : "Deze taak is verboden",
"This directory is unavailable, please check the logs or contact the administrator" : "Deze map is niet beschikbaar. Verifieer de logs of neem contact op met de beheerder",
+ "Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
"Could not move \"{file}\", target exists" : "Kon \"{file}\" niet verplaatsen, doel bestaat al",
"Could not move \"{file}\"" : "Kon \"{file}\" niet verplaatsen",
"copy" : "kopie",
@@ -174,6 +172,7 @@ OC.L10N.register(
"Transfer" : "Overdragen",
"Transfer {path} to {userid}" : "Draag {path} over aan {userid}",
"Invalid path selected" : "Ongeldig pad geselecteerd",
+ "Unknown error" : "Onbekende fout",
"Ownership transfer request sent" : "Aanvraag eigendomsoverdracht verstuurd",
"Cannot transfer ownership of a file or folder you do not own" : "Kan de eigendom van een bestand of map waarvan u niet de eigenaar bent, niet overdragen",
"Show hidden files" : "Toon verborgen bestanden",
@@ -216,6 +215,7 @@ OC.L10N.register(
"Pending shares" : "Deellinks in behandeling",
"Text file" : "Tekstbestand",
"New text file.txt" : "Nieuw tekstbestand.txt",
+ "Storage invalid" : "Opslag ongeldig",
"Select" : "Selecteer",
"You don’t have permission to upload or create files here" : "Je hebt geen toestemming om hier te uploaden of bestanden te maken",
"New" : "Nieuw",
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index 265045b7544..9ff9205741e 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
- "Storage invalid" : "Opslag ongeldig",
- "Unknown error" : "Onbekende fout",
"File could not be found" : "Bestand kon niet worden gevonden",
"Move or copy" : "Verplaats of kopieer",
"Download" : "Downloaden",
@@ -50,6 +47,7 @@
"Unable to determine date" : "Kon datum niet vaststellen",
"This operation is forbidden" : "Deze taak is verboden",
"This directory is unavailable, please check the logs or contact the administrator" : "Deze map is niet beschikbaar. Verifieer de logs of neem contact op met de beheerder",
+ "Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
"Could not move \"{file}\", target exists" : "Kon \"{file}\" niet verplaatsen, doel bestaat al",
"Could not move \"{file}\"" : "Kon \"{file}\" niet verplaatsen",
"copy" : "kopie",
@@ -172,6 +170,7 @@
"Transfer" : "Overdragen",
"Transfer {path} to {userid}" : "Draag {path} over aan {userid}",
"Invalid path selected" : "Ongeldig pad geselecteerd",
+ "Unknown error" : "Onbekende fout",
"Ownership transfer request sent" : "Aanvraag eigendomsoverdracht verstuurd",
"Cannot transfer ownership of a file or folder you do not own" : "Kan de eigendom van een bestand of map waarvan u niet de eigenaar bent, niet overdragen",
"Show hidden files" : "Toon verborgen bestanden",
@@ -214,6 +213,7 @@
"Pending shares" : "Deellinks in behandeling",
"Text file" : "Tekstbestand",
"New text file.txt" : "Nieuw tekstbestand.txt",
+ "Storage invalid" : "Opslag ongeldig",
"Select" : "Selecteer",
"You don’t have permission to upload or create files here" : "Je hebt geen toestemming om hier te uploaden of bestanden te maken",
"New" : "Nieuw",
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 7af2d808ab1..989915002dc 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
- "Storage invalid" : "Nieprawidłowy magazyn",
- "Unknown error" : "Nieznany błąd",
"File could not be found" : "Nie można znaleźć pliku",
"Move or copy" : "Przenieś lub kopiuj",
"Download" : "Pobierz",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Nie można ustalić daty",
"This operation is forbidden" : "Ta operacja jest niedozwolona",
"This directory is unavailable, please check the logs or contact the administrator" : "Ten katalog jest niedostępny, sprawdź logi lub skontaktuj się z administratorem",
+ "Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
"Could not move \"{file}\", target exists" : "Nie można przenieść \"{file}\" - plik o takiej nazwie już istnieje",
"Could not move \"{file}\"" : "Nie można przenieść \"{file}\"",
"copy" : "kopia",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Przenieś",
"Transfer {path} to {userid}" : "Przenieś {path} do {userid}",
"Invalid path selected" : "Wybrano nieprawidłową ścieżkę",
+ "Unknown error" : "Nieznany błąd",
"Ownership transfer request sent" : "Wysłano żądanie przeniesienia własności",
"Cannot transfer ownership of a file or folder you do not own" : "Nie można przenieść prawa własności do pliku lub katalogu, którego nie jesteś właścicielem",
"Open the files app settings" : "Otwórz ustawienia aplikacji plików",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Oczekujące udostępnienia",
"Text file" : "Plik tekstowy",
"New text file.txt" : "Nowy plik tekstowy.txt",
+ "Storage invalid" : "Nieprawidłowy magazyn",
"Select" : "Wybierz",
"You don’t have permission to upload or create files here" : "Nie masz uprawnień do wysyłania lub tworzenia plików w tym miejscu",
"New" : "Nowy",
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index 050b7454d59..1f8c9d82b0d 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
- "Storage invalid" : "Nieprawidłowy magazyn",
- "Unknown error" : "Nieznany błąd",
"File could not be found" : "Nie można znaleźć pliku",
"Move or copy" : "Przenieś lub kopiuj",
"Download" : "Pobierz",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Nie można ustalić daty",
"This operation is forbidden" : "Ta operacja jest niedozwolona",
"This directory is unavailable, please check the logs or contact the administrator" : "Ten katalog jest niedostępny, sprawdź logi lub skontaktuj się z administratorem",
+ "Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
"Could not move \"{file}\", target exists" : "Nie można przenieść \"{file}\" - plik o takiej nazwie już istnieje",
"Could not move \"{file}\"" : "Nie można przenieść \"{file}\"",
"copy" : "kopia",
@@ -176,6 +174,7 @@
"Transfer" : "Przenieś",
"Transfer {path} to {userid}" : "Przenieś {path} do {userid}",
"Invalid path selected" : "Wybrano nieprawidłową ścieżkę",
+ "Unknown error" : "Nieznany błąd",
"Ownership transfer request sent" : "Wysłano żądanie przeniesienia własności",
"Cannot transfer ownership of a file or folder you do not own" : "Nie można przenieść prawa własności do pliku lub katalogu, którego nie jesteś właścicielem",
"Open the files app settings" : "Otwórz ustawienia aplikacji plików",
@@ -223,6 +222,7 @@
"Pending shares" : "Oczekujące udostępnienia",
"Text file" : "Plik tekstowy",
"New text file.txt" : "Nowy plik tekstowy.txt",
+ "Storage invalid" : "Nieprawidłowy magazyn",
"Select" : "Wybierz",
"You don’t have permission to upload or create files here" : "Nie masz uprawnień do wysyłania lub tworzenia plików w tym miejscu",
"New" : "Nowy",
diff --git a/apps/files/l10n/ps.js b/apps/files/l10n/ps.js
index 9685ef91cae..e824499a530 100644
--- a/apps/files/l10n/ps.js
+++ b/apps/files/l10n/ps.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "ذخیره د لنډې مودې لپاره نشته",
- "Storage invalid" : "ذخیره ناسمه ده",
- "Unknown error" : "نامعلومه ستونزه",
"File could not be found" : "فایل نشته",
"Move or copy" : "انتقال یا کاپي کول",
"Download" : "ښکته کول",
@@ -38,6 +35,7 @@ OC.L10N.register(
"Pending" : "د انتظار په حال کې",
"Unable to determine date" : "نېټه نه معلومېږي",
"This operation is forbidden" : "دا کړنه نشي کېدای",
+ "Storage is temporarily not available" : "ذخیره د لنډې مودې لپاره نشته",
"Could not move \"{file}\", target exists" : "\"{file}\" فایل نشي انتقالېدای ځکه هلته له مخه شتون لري",
"Could not move \"{file}\"" : "\"{file}\" فایل نشي انتقالېدای",
"copy" : "کاپي",
@@ -111,6 +109,7 @@ OC.L10N.register(
"Unlimited" : "نامحدود",
"Upload (max. %s)" : "پورته کول (%s نهايي)",
"File Management" : "فایلونه ترتیبول",
+ "Unknown error" : "نامعلومه ستونزه",
"Show hidden files" : "پټ فایلونه ليدل",
"Cancel" : "پرېښول",
"%s used" : "%sکارول شوې",
@@ -131,6 +130,7 @@ OC.L10N.register(
"Deleted shares" : "ړنګ شوي لېنکونه",
"Text file" : "متن فایل",
"New text file.txt" : "New text file.txt",
+ "Storage invalid" : "ذخیره ناسمه ده",
"Select" : "ټاکل",
"You don’t have permission to upload or create files here" : "تاسې په دې ځای کې د فایل يا فولډر جوړولو اجازه نلرئ",
"New" : "نوی",
diff --git a/apps/files/l10n/ps.json b/apps/files/l10n/ps.json
index 92d7a69b4f6..ff7d110c3de 100644
--- a/apps/files/l10n/ps.json
+++ b/apps/files/l10n/ps.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "ذخیره د لنډې مودې لپاره نشته",
- "Storage invalid" : "ذخیره ناسمه ده",
- "Unknown error" : "نامعلومه ستونزه",
"File could not be found" : "فایل نشته",
"Move or copy" : "انتقال یا کاپي کول",
"Download" : "ښکته کول",
@@ -36,6 +33,7 @@
"Pending" : "د انتظار په حال کې",
"Unable to determine date" : "نېټه نه معلومېږي",
"This operation is forbidden" : "دا کړنه نشي کېدای",
+ "Storage is temporarily not available" : "ذخیره د لنډې مودې لپاره نشته",
"Could not move \"{file}\", target exists" : "\"{file}\" فایل نشي انتقالېدای ځکه هلته له مخه شتون لري",
"Could not move \"{file}\"" : "\"{file}\" فایل نشي انتقالېدای",
"copy" : "کاپي",
@@ -109,6 +107,7 @@
"Unlimited" : "نامحدود",
"Upload (max. %s)" : "پورته کول (%s نهايي)",
"File Management" : "فایلونه ترتیبول",
+ "Unknown error" : "نامعلومه ستونزه",
"Show hidden files" : "پټ فایلونه ليدل",
"Cancel" : "پرېښول",
"%s used" : "%sکارول شوې",
@@ -129,6 +128,7 @@
"Deleted shares" : "ړنګ شوي لېنکونه",
"Text file" : "متن فایل",
"New text file.txt" : "New text file.txt",
+ "Storage invalid" : "ذخیره ناسمه ده",
"Select" : "ټاکل",
"You don’t have permission to upload or create files here" : "تاسې په دې ځای کې د فایل يا فولډر جوړولو اجازه نلرئ",
"New" : "نوی",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 3f12be1ace7..f77b8e06bbf 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "O armazenamento está temporariamente indisponível",
- "Storage invalid" : "Armazenamento inválido",
- "Unknown error" : "Erro desconhecido",
"File could not be found" : "O arquivo não foi encontrado",
"Move or copy" : "Mover ou copiar",
"Download" : "Baixar",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Impossível determinar a data",
"This operation is forbidden" : "Esta operação é proibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor verifique os logs ou contacte o administrador",
+ "Storage is temporarily not available" : "O armazenamento está temporariamente indisponível",
"Could not move \"{file}\", target exists" : "Não foi possível mover \"{file}\" pois o destino já existe",
"Could not move \"{file}\"" : "Não foi possível mover \"{file}\"",
"copy" : "copiar",
@@ -100,6 +98,7 @@ OC.L10N.register(
"Your storage is almost full ({usedSpacePercent}%)." : "Seu armazenamento está quase cheio ({usedSpacePercent}%).",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["coincide \"{filter}\"","coincide \"{filter}\"","coincide \"{filter}\""],
"View in folder" : "Exibir na pasta",
+ "Direct link was copied (only works for users who have access to this file/folder)" : "O link direto foi copiado (funciona apenas para usuários que têm acesso a este arquivo/pasta)",
"Path" : "Caminho",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"],
"Favorited" : "Favoritado",
@@ -177,15 +176,19 @@ OC.L10N.register(
"Transfer" : "Transferir",
"Transfer {path} to {userid}" : "Transferir {path} para {userid}",
"Invalid path selected" : "Caminho inválido selecionado",
+ "Unknown error" : "Erro desconhecido",
"Ownership transfer request sent" : "Solicitação de transferência de propriedade enviada",
"Cannot transfer ownership of a file or folder you do not own" : "Não é possível transferir a propriedade de um arquivo ou pasta que você não possui",
+ "Open the files app settings" : "Abra as configurações do aplicativo de arquivos",
"Files settings" : "Configurações de arquivos",
"Show hidden files" : "Mostrar arquivos ocultos",
"Crop image previews" : "Cortar visualizações de imagem",
"Additional settings" : "Configurações adicionais",
+ "Webdav" : "Webdav",
"Copy to clipboard" : "Copiar para área de transferência",
"Use this address to access your Files via WebDAV" : "Use este endereço para acessar seus Arquivos via WebDAV",
"Clipboard is not available" : "A área de transferência não está disponível",
+ "Webdav URL copied to clipboard" : "URL do Webdav copiado para a área de transferência",
"Unable to change the favourite state of the file" : "Não foi possível alterar o estado favorito do arquivo",
"Error while loading the file data" : "Erro ao carregar os dados do arquivo",
"Pick a template for {name}" : "Escolha um modelo para {name}",
@@ -221,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Compartilhamentos pendentes",
"Text file" : "Arquivo texto",
"New text file.txt" : "Novo arquivo.txt",
+ "Storage invalid" : "Armazenamento inválido",
"Select" : "Selecionar",
"You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui",
"New" : "Novo",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 904fa40b5c6..de9df775f8b 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "O armazenamento está temporariamente indisponível",
- "Storage invalid" : "Armazenamento inválido",
- "Unknown error" : "Erro desconhecido",
"File could not be found" : "O arquivo não foi encontrado",
"Move or copy" : "Mover ou copiar",
"Download" : "Baixar",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Impossível determinar a data",
"This operation is forbidden" : "Esta operação é proibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor verifique os logs ou contacte o administrador",
+ "Storage is temporarily not available" : "O armazenamento está temporariamente indisponível",
"Could not move \"{file}\", target exists" : "Não foi possível mover \"{file}\" pois o destino já existe",
"Could not move \"{file}\"" : "Não foi possível mover \"{file}\"",
"copy" : "copiar",
@@ -98,6 +96,7 @@
"Your storage is almost full ({usedSpacePercent}%)." : "Seu armazenamento está quase cheio ({usedSpacePercent}%).",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["coincide \"{filter}\"","coincide \"{filter}\"","coincide \"{filter}\""],
"View in folder" : "Exibir na pasta",
+ "Direct link was copied (only works for users who have access to this file/folder)" : "O link direto foi copiado (funciona apenas para usuários que têm acesso a este arquivo/pasta)",
"Path" : "Caminho",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"],
"Favorited" : "Favoritado",
@@ -175,15 +174,19 @@
"Transfer" : "Transferir",
"Transfer {path} to {userid}" : "Transferir {path} para {userid}",
"Invalid path selected" : "Caminho inválido selecionado",
+ "Unknown error" : "Erro desconhecido",
"Ownership transfer request sent" : "Solicitação de transferência de propriedade enviada",
"Cannot transfer ownership of a file or folder you do not own" : "Não é possível transferir a propriedade de um arquivo ou pasta que você não possui",
+ "Open the files app settings" : "Abra as configurações do aplicativo de arquivos",
"Files settings" : "Configurações de arquivos",
"Show hidden files" : "Mostrar arquivos ocultos",
"Crop image previews" : "Cortar visualizações de imagem",
"Additional settings" : "Configurações adicionais",
+ "Webdav" : "Webdav",
"Copy to clipboard" : "Copiar para área de transferência",
"Use this address to access your Files via WebDAV" : "Use este endereço para acessar seus Arquivos via WebDAV",
"Clipboard is not available" : "A área de transferência não está disponível",
+ "Webdav URL copied to clipboard" : "URL do Webdav copiado para a área de transferência",
"Unable to change the favourite state of the file" : "Não foi possível alterar o estado favorito do arquivo",
"Error while loading the file data" : "Erro ao carregar os dados do arquivo",
"Pick a template for {name}" : "Escolha um modelo para {name}",
@@ -219,6 +222,7 @@
"Pending shares" : "Compartilhamentos pendentes",
"Text file" : "Arquivo texto",
"New text file.txt" : "Novo arquivo.txt",
+ "Storage invalid" : "Armazenamento inválido",
"Select" : "Selecionar",
"You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui",
"New" : "Novo",
diff --git a/apps/files/l10n/pt_PT.js b/apps/files/l10n/pt_PT.js
index 43b29decf68..c10e1c39b00 100644
--- a/apps/files/l10n/pt_PT.js
+++ b/apps/files/l10n/pt_PT.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
- "Storage invalid" : "Armazenamento inválido",
- "Unknown error" : "Erro desconhecido",
"File could not be found" : "O ficheiro não foi encontrado",
"Move or copy" : "Mover ou copiar",
"Download" : "Transferir",
@@ -44,6 +41,7 @@ OC.L10N.register(
"Unable to determine date" : "Não é possível determinar a data",
"This operation is forbidden" : "Esta operação é proibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta diretoria está indisponível, por favor, verifique os registos ou contacte o administrador",
+ "Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
"Could not move \"{file}\", target exists" : "Não foi possível mover \"{file}\", destino já existe",
"Could not move \"{file}\"" : "Não foi possivel mover o ficheiro \"{file}\"",
"copy" : "copiar",
@@ -129,6 +127,7 @@ OC.L10N.register(
"Accept" : "Aceitar",
"in %s" : "em %s",
"Transfer" : "Transfere",
+ "Unknown error" : "Erro desconhecido",
"Show hidden files" : "Mostrar ficheiros ocultos",
"Additional settings" : "Definições adicionais",
"Copy to clipboard" : "Copiar para área de transferência",
@@ -153,6 +152,7 @@ OC.L10N.register(
"Shared by link" : "Partilhado por hiperligação",
"Text file" : "Ficheiro de Texto",
"New text file.txt" : "Novo texto ficheiro.txt",
+ "Storage invalid" : "Armazenamento inválido",
"Select" : "Selecionar",
"You don’t have permission to upload or create files here" : "Não tem permissão para enviar ou criar ficheiros aqui",
"New" : "Novo",
diff --git a/apps/files/l10n/pt_PT.json b/apps/files/l10n/pt_PT.json
index e15263f5718..471128a34a3 100644
--- a/apps/files/l10n/pt_PT.json
+++ b/apps/files/l10n/pt_PT.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
- "Storage invalid" : "Armazenamento inválido",
- "Unknown error" : "Erro desconhecido",
"File could not be found" : "O ficheiro não foi encontrado",
"Move or copy" : "Mover ou copiar",
"Download" : "Transferir",
@@ -42,6 +39,7 @@
"Unable to determine date" : "Não é possível determinar a data",
"This operation is forbidden" : "Esta operação é proibida",
"This directory is unavailable, please check the logs or contact the administrator" : "Esta diretoria está indisponível, por favor, verifique os registos ou contacte o administrador",
+ "Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
"Could not move \"{file}\", target exists" : "Não foi possível mover \"{file}\", destino já existe",
"Could not move \"{file}\"" : "Não foi possivel mover o ficheiro \"{file}\"",
"copy" : "copiar",
@@ -127,6 +125,7 @@
"Accept" : "Aceitar",
"in %s" : "em %s",
"Transfer" : "Transfere",
+ "Unknown error" : "Erro desconhecido",
"Show hidden files" : "Mostrar ficheiros ocultos",
"Additional settings" : "Definições adicionais",
"Copy to clipboard" : "Copiar para área de transferência",
@@ -151,6 +150,7 @@
"Shared by link" : "Partilhado por hiperligação",
"Text file" : "Ficheiro de Texto",
"New text file.txt" : "Novo texto ficheiro.txt",
+ "Storage invalid" : "Armazenamento inválido",
"Select" : "Selecionar",
"You don’t have permission to upload or create files here" : "Não tem permissão para enviar ou criar ficheiros aqui",
"New" : "Novo",
diff --git a/apps/files/l10n/ro.js b/apps/files/l10n/ro.js
index dec0bf0b68d..28d56aa0f86 100644
--- a/apps/files/l10n/ro.js
+++ b/apps/files/l10n/ro.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Spațiu de stocare este indisponibil temporar",
- "Storage invalid" : "Spațiu de stocare invalid",
- "Unknown error" : "Eroare necunoscută",
"File could not be found" : "Fișierul nu a fost găsit",
"Move or copy" : "Mută sau copiază",
"Download" : "Descarcă",
@@ -52,6 +49,7 @@ OC.L10N.register(
"Unable to determine date" : "Nu s-a putut determina data",
"This operation is forbidden" : "Operațiunea este interzisă",
"This directory is unavailable, please check the logs or contact the administrator" : "Acest director nu este disponibil, te rugăm verifică logurile sau contactează un administrator",
+ "Storage is temporarily not available" : "Spațiu de stocare este indisponibil temporar",
"Could not move \"{file}\", target exists" : "Nu s-a putut muta fișierul \"{file}\", există deja un altul cu același nume în directorul destinație",
"Could not move \"{file}\"" : "Nu s-a putut muta fișierul \"{file}\"",
"copy" : "copiază",
@@ -173,6 +171,7 @@ OC.L10N.register(
"Transfer" : "Transfer",
"Transfer {path} to {userid}" : "Transferă {path} către {userid}",
"Invalid path selected" : "Calea selectată este invalidă",
+ "Unknown error" : "Eroare necunoscută",
"Ownership transfer request sent" : "Cererea de transfer a fost trimisă",
"Cannot transfer ownership of a file or folder you do not own" : "Nu se poate transfera proprietatea unui fișier sau dosar daca nu le deții",
"Show hidden files" : "Arată fișierele ascunse",
@@ -213,6 +212,7 @@ OC.L10N.register(
"Pending shares" : "Partajări in asteptare",
"Text file" : "Fișier text",
"New text file.txt" : "Fișier nou.txt",
+ "Storage invalid" : "Spațiu de stocare invalid",
"Select" : "Alege",
"You don’t have permission to upload or create files here" : "Nu aveți permisiunea de a încărca sau crea fișiere aici",
"New" : "Nou",
diff --git a/apps/files/l10n/ro.json b/apps/files/l10n/ro.json
index e0ff2d5b1b6..01fe0140432 100644
--- a/apps/files/l10n/ro.json
+++ b/apps/files/l10n/ro.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Spațiu de stocare este indisponibil temporar",
- "Storage invalid" : "Spațiu de stocare invalid",
- "Unknown error" : "Eroare necunoscută",
"File could not be found" : "Fișierul nu a fost găsit",
"Move or copy" : "Mută sau copiază",
"Download" : "Descarcă",
@@ -50,6 +47,7 @@
"Unable to determine date" : "Nu s-a putut determina data",
"This operation is forbidden" : "Operațiunea este interzisă",
"This directory is unavailable, please check the logs or contact the administrator" : "Acest director nu este disponibil, te rugăm verifică logurile sau contactează un administrator",
+ "Storage is temporarily not available" : "Spațiu de stocare este indisponibil temporar",
"Could not move \"{file}\", target exists" : "Nu s-a putut muta fișierul \"{file}\", există deja un altul cu același nume în directorul destinație",
"Could not move \"{file}\"" : "Nu s-a putut muta fișierul \"{file}\"",
"copy" : "copiază",
@@ -171,6 +169,7 @@
"Transfer" : "Transfer",
"Transfer {path} to {userid}" : "Transferă {path} către {userid}",
"Invalid path selected" : "Calea selectată este invalidă",
+ "Unknown error" : "Eroare necunoscută",
"Ownership transfer request sent" : "Cererea de transfer a fost trimisă",
"Cannot transfer ownership of a file or folder you do not own" : "Nu se poate transfera proprietatea unui fișier sau dosar daca nu le deții",
"Show hidden files" : "Arată fișierele ascunse",
@@ -211,6 +210,7 @@
"Pending shares" : "Partajări in asteptare",
"Text file" : "Fișier text",
"New text file.txt" : "Fișier nou.txt",
+ "Storage invalid" : "Spațiu de stocare invalid",
"Select" : "Alege",
"You don’t have permission to upload or create files here" : "Nu aveți permisiunea de a încărca sau crea fișiere aici",
"New" : "Nou",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 95267ed56a7..6509fc9e171 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Хранилище временно недоступно",
- "Storage invalid" : "Хранилище неисправно",
- "Unknown error" : "Неизвестная ошибка",
"File could not be found" : "Невозможно найти файл",
"Move or copy" : "Переместить или копировать",
"Download" : "Скачать",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Невозможно определить дату",
"This operation is forbidden" : "Операция запрещена",
"This directory is unavailable, please check the logs or contact the administrator" : "Каталог недоступен. Проверьте журналы событий или свяжитесь с администратором",
+ "Storage is temporarily not available" : "Хранилище временно недоступно",
"Could not move \"{file}\", target exists" : "Невозможно переместить файл «{file}», он уже существует в каталоге назначения",
"Could not move \"{file}\"" : "Невозможно переместить файл «{file}»",
"copy" : "копия",
@@ -177,6 +175,7 @@ OC.L10N.register(
"Transfer" : "Передать",
"Transfer {path} to {userid}" : "Передать {path} пользователю {userid}",
"Invalid path selected" : "Указан некорректный путь",
+ "Unknown error" : "Неизвестная ошибка",
"Ownership transfer request sent" : "Запрос на передачу прав владения отправлен",
"Cannot transfer ownership of a file or folder you do not own" : "Невозможно передать право владения на файл или каталог, которые вам не принадлежат",
"Files settings" : "Настройки файлов",
@@ -221,6 +220,7 @@ OC.L10N.register(
"Pending shares" : "Ожидающие общие ресурсы",
"Text file" : "Текстовый файл",
"New text file.txt" : "Новый текстовый файл.txt",
+ "Storage invalid" : "Хранилище неисправно",
"Select" : "Выбрать",
"You don’t have permission to upload or create files here" : "У вас нет прав на создание или загрузку файлов в эту папку.",
"New" : "Новый",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 6d763ec04d6..fac6a73ed27 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Хранилище временно недоступно",
- "Storage invalid" : "Хранилище неисправно",
- "Unknown error" : "Неизвестная ошибка",
"File could not be found" : "Невозможно найти файл",
"Move or copy" : "Переместить или копировать",
"Download" : "Скачать",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Невозможно определить дату",
"This operation is forbidden" : "Операция запрещена",
"This directory is unavailable, please check the logs or contact the administrator" : "Каталог недоступен. Проверьте журналы событий или свяжитесь с администратором",
+ "Storage is temporarily not available" : "Хранилище временно недоступно",
"Could not move \"{file}\", target exists" : "Невозможно переместить файл «{file}», он уже существует в каталоге назначения",
"Could not move \"{file}\"" : "Невозможно переместить файл «{file}»",
"copy" : "копия",
@@ -175,6 +173,7 @@
"Transfer" : "Передать",
"Transfer {path} to {userid}" : "Передать {path} пользователю {userid}",
"Invalid path selected" : "Указан некорректный путь",
+ "Unknown error" : "Неизвестная ошибка",
"Ownership transfer request sent" : "Запрос на передачу прав владения отправлен",
"Cannot transfer ownership of a file or folder you do not own" : "Невозможно передать право владения на файл или каталог, которые вам не принадлежат",
"Files settings" : "Настройки файлов",
@@ -219,6 +218,7 @@
"Pending shares" : "Ожидающие общие ресурсы",
"Text file" : "Текстовый файл",
"New text file.txt" : "Новый текстовый файл.txt",
+ "Storage invalid" : "Хранилище неисправно",
"Select" : "Выбрать",
"You don’t have permission to upload or create files here" : "У вас нет прав на создание или загрузку файлов в эту папку.",
"New" : "Новый",
diff --git a/apps/files/l10n/sc.js b/apps/files/l10n/sc.js
index 0ba91d51baf..e9771bc48f2 100644
--- a/apps/files/l10n/sc.js
+++ b/apps/files/l10n/sc.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "S'archiviatzione immoe no est a disponimentu",
- "Storage invalid" : "Archiviatzione non vàlida",
- "Unknown error" : "Errore disconnotu",
"File could not be found" : "No at fatu a agatare s'archìviu",
"Move or copy" : "Tràmuda o còpia",
"Download" : "Iscàrriga",
@@ -47,6 +44,7 @@ OC.L10N.register(
"Unable to determine date" : "Non faghet a determinare sa data",
"This operation is forbidden" : "Custa operatzione no est permìtida",
"This directory is unavailable, please check the logs or contact the administrator" : "Custa cartella no est a disponimentu, controlla is informes o cuntata s'amministratzione",
+ "Storage is temporarily not available" : "S'archiviatzione immoe no est a disponimentu",
"Could not move \"{file}\", target exists" : "No at fatu a tramudare \"{file}\", sa destinatzione esistit giai",
"Could not move \"{file}\"" : "No at fatu a tramudare \"{file}\"",
"copy" : "còpia",
@@ -167,6 +165,7 @@ OC.L10N.register(
"Transfer" : "Tràmuda",
"Transfer {path} to {userid}" : "Tràmuda {path} a {userid}",
"Invalid path selected" : "Percursu seletzionadu non vàlidu",
+ "Unknown error" : "Errore disconnotu",
"Ownership transfer request sent" : "Dimanda de tràmuda de propriedade imbiada",
"Show hidden files" : "Mustra archìvios cuados",
"Crop image previews" : "Retàllia anteprimas de s'imàgine",
@@ -207,6 +206,7 @@ OC.L10N.register(
"Pending shares" : "Cumpartziduras in suspesu",
"Text file" : "Archìviu de testu",
"New text file.txt" : "Archìviu de testu .txt nou",
+ "Storage invalid" : "Archiviatzione non vàlida",
"Select" : "Seletziona",
"You don’t have permission to upload or create files here" : "Non tenes su permissu pro carrigare o creare archìvios inoghe",
"New" : "Nou",
diff --git a/apps/files/l10n/sc.json b/apps/files/l10n/sc.json
index 08fc98f837b..eefbdb93f10 100644
--- a/apps/files/l10n/sc.json
+++ b/apps/files/l10n/sc.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "S'archiviatzione immoe no est a disponimentu",
- "Storage invalid" : "Archiviatzione non vàlida",
- "Unknown error" : "Errore disconnotu",
"File could not be found" : "No at fatu a agatare s'archìviu",
"Move or copy" : "Tràmuda o còpia",
"Download" : "Iscàrriga",
@@ -45,6 +42,7 @@
"Unable to determine date" : "Non faghet a determinare sa data",
"This operation is forbidden" : "Custa operatzione no est permìtida",
"This directory is unavailable, please check the logs or contact the administrator" : "Custa cartella no est a disponimentu, controlla is informes o cuntata s'amministratzione",
+ "Storage is temporarily not available" : "S'archiviatzione immoe no est a disponimentu",
"Could not move \"{file}\", target exists" : "No at fatu a tramudare \"{file}\", sa destinatzione esistit giai",
"Could not move \"{file}\"" : "No at fatu a tramudare \"{file}\"",
"copy" : "còpia",
@@ -165,6 +163,7 @@
"Transfer" : "Tràmuda",
"Transfer {path} to {userid}" : "Tràmuda {path} a {userid}",
"Invalid path selected" : "Percursu seletzionadu non vàlidu",
+ "Unknown error" : "Errore disconnotu",
"Ownership transfer request sent" : "Dimanda de tràmuda de propriedade imbiada",
"Show hidden files" : "Mustra archìvios cuados",
"Crop image previews" : "Retàllia anteprimas de s'imàgine",
@@ -205,6 +204,7 @@
"Pending shares" : "Cumpartziduras in suspesu",
"Text file" : "Archìviu de testu",
"New text file.txt" : "Archìviu de testu .txt nou",
+ "Storage invalid" : "Archiviatzione non vàlida",
"Select" : "Seletziona",
"You don’t have permission to upload or create files here" : "Non tenes su permissu pro carrigare o creare archìvios inoghe",
"New" : "Nou",
diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js
index 11144a5791b..17ff3c83141 100644
--- a/apps/files/l10n/sk.js
+++ b/apps/files/l10n/sk.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
- "Storage invalid" : "Úložisko nie je platné",
- "Unknown error" : "Neznáma chyba",
"File could not be found" : "Súbor nie je možné nájsť",
"Move or copy" : "Presunúť alebo kopírovať",
"Download" : "Stiahnuť",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Nemožno určiť dátum",
"This operation is forbidden" : "Táto operácia je zakázaná",
"This directory is unavailable, please check the logs or contact the administrator" : "Priečinok je nedostupný, skontrolujte prosím logy, alebo kontaktujte správcu",
+ "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"Could not move \"{file}\", target exists" : "Nie je možné presunúť \"{file}\", cieľ už existuje",
"Could not move \"{file}\"" : "Nie je možné presunúť \"{file}\"",
"copy" : "kópia",
@@ -177,6 +175,7 @@ OC.L10N.register(
"Transfer" : "Prevod",
"Transfer {path} to {userid}" : "Previesť {path} na {userid}",
"Invalid path selected" : "Bola vybraná neplatná cesta",
+ "Unknown error" : "Neznáma chyba",
"Ownership transfer request sent" : "Žiadosť o prevod vlastníctva bola odoslaná",
"Cannot transfer ownership of a file or folder you do not own" : "Nie je možné preniesť vlastníctvo súboru alebo priečinka, ktorý nevlastníte",
"Files settings" : "Nastavenia súborov",
@@ -221,6 +220,7 @@ OC.L10N.register(
"Pending shares" : "Čakajúce prístupy",
"Text file" : "Textový súbor",
"New text file.txt" : "Nový text file.txt",
+ "Storage invalid" : "Úložisko nie je platné",
"Select" : "Vybrať",
"You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory",
"New" : "Nový",
diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json
index 60bd336ae52..865597fe494 100644
--- a/apps/files/l10n/sk.json
+++ b/apps/files/l10n/sk.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
- "Storage invalid" : "Úložisko nie je platné",
- "Unknown error" : "Neznáma chyba",
"File could not be found" : "Súbor nie je možné nájsť",
"Move or copy" : "Presunúť alebo kopírovať",
"Download" : "Stiahnuť",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Nemožno určiť dátum",
"This operation is forbidden" : "Táto operácia je zakázaná",
"This directory is unavailable, please check the logs or contact the administrator" : "Priečinok je nedostupný, skontrolujte prosím logy, alebo kontaktujte správcu",
+ "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"Could not move \"{file}\", target exists" : "Nie je možné presunúť \"{file}\", cieľ už existuje",
"Could not move \"{file}\"" : "Nie je možné presunúť \"{file}\"",
"copy" : "kópia",
@@ -175,6 +173,7 @@
"Transfer" : "Prevod",
"Transfer {path} to {userid}" : "Previesť {path} na {userid}",
"Invalid path selected" : "Bola vybraná neplatná cesta",
+ "Unknown error" : "Neznáma chyba",
"Ownership transfer request sent" : "Žiadosť o prevod vlastníctva bola odoslaná",
"Cannot transfer ownership of a file or folder you do not own" : "Nie je možné preniesť vlastníctvo súboru alebo priečinka, ktorý nevlastníte",
"Files settings" : "Nastavenia súborov",
@@ -219,6 +218,7 @@
"Pending shares" : "Čakajúce prístupy",
"Text file" : "Textový súbor",
"New text file.txt" : "Nový text file.txt",
+ "Storage invalid" : "Úložisko nie je platné",
"Select" : "Vybrať",
"You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory",
"New" : "Nový",
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index 1831baad82c..6389b54ccbb 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Shramba trenutno ni na voljo",
- "Storage invalid" : "Mesto shrambe ni veljavno",
- "Unknown error" : "Neznana napaka",
"File could not be found" : "Datoteke ni mogoče najti",
"Move or copy" : "Premakni ali kopiraj",
"Download" : "Prejmi",
@@ -47,6 +44,7 @@ OC.L10N.register(
"Unable to determine date" : "Ni mogoče določiti datuma",
"This operation is forbidden" : "To dejanje ni dovoljeno!",
"This directory is unavailable, please check the logs or contact the administrator" : "Mapa ni na voljo. Preverite dnevnik in stopite v stik s skrbnikom sistema.",
+ "Storage is temporarily not available" : "Shramba trenutno ni na voljo",
"Could not move \"{file}\", target exists" : "Datoteke »{file}« ni mogoče premakniti, ker na ciljnem mestu z istim imenom že obstaja.",
"Could not move \"{file}\"" : "Datoteke »{file}« ni mogoče premakniti",
"copy" : "kopija",
@@ -167,6 +165,7 @@ OC.L10N.register(
"Transfer" : "Prenos",
"Transfer {path} to {userid}" : "Prenesi pot {path} k uporabniku {userid}",
"Invalid path selected" : "Izbrana je neveljavna pot",
+ "Unknown error" : "Neznana napaka",
"Ownership transfer request sent" : "Zahteva za prenos lastništva je poslana",
"Show hidden files" : "Pokaži skrite datoteke",
"Crop image previews" : "Obreži slike predogleda",
@@ -207,6 +206,7 @@ OC.L10N.register(
"Pending shares" : "Predmeti za souporabo na čakanju",
"Text file" : "Besedilna datoteka",
"New text file.txt" : "nova_datoteka.txt",
+ "Storage invalid" : "Mesto shrambe ni veljavno",
"Select" : "Izbor",
"You don’t have permission to upload or create files here" : "Ni ustreznih dovoljenj za pošiljanje in ustvarjanje datotek na tem mestu.",
"New" : "Novo",
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index 05800da2566..871afb84289 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Shramba trenutno ni na voljo",
- "Storage invalid" : "Mesto shrambe ni veljavno",
- "Unknown error" : "Neznana napaka",
"File could not be found" : "Datoteke ni mogoče najti",
"Move or copy" : "Premakni ali kopiraj",
"Download" : "Prejmi",
@@ -45,6 +42,7 @@
"Unable to determine date" : "Ni mogoče določiti datuma",
"This operation is forbidden" : "To dejanje ni dovoljeno!",
"This directory is unavailable, please check the logs or contact the administrator" : "Mapa ni na voljo. Preverite dnevnik in stopite v stik s skrbnikom sistema.",
+ "Storage is temporarily not available" : "Shramba trenutno ni na voljo",
"Could not move \"{file}\", target exists" : "Datoteke »{file}« ni mogoče premakniti, ker na ciljnem mestu z istim imenom že obstaja.",
"Could not move \"{file}\"" : "Datoteke »{file}« ni mogoče premakniti",
"copy" : "kopija",
@@ -165,6 +163,7 @@
"Transfer" : "Prenos",
"Transfer {path} to {userid}" : "Prenesi pot {path} k uporabniku {userid}",
"Invalid path selected" : "Izbrana je neveljavna pot",
+ "Unknown error" : "Neznana napaka",
"Ownership transfer request sent" : "Zahteva za prenos lastništva je poslana",
"Show hidden files" : "Pokaži skrite datoteke",
"Crop image previews" : "Obreži slike predogleda",
@@ -205,6 +204,7 @@
"Pending shares" : "Predmeti za souporabo na čakanju",
"Text file" : "Besedilna datoteka",
"New text file.txt" : "nova_datoteka.txt",
+ "Storage invalid" : "Mesto shrambe ni veljavno",
"Select" : "Izbor",
"You don’t have permission to upload or create files here" : "Ni ustreznih dovoljenj za pošiljanje in ustvarjanje datotek na tem mestu.",
"New" : "Novo",
diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js
index 4ec9e843a1c..db6fe2d1e00 100644
--- a/apps/files/l10n/sq.js
+++ b/apps/files/l10n/sq.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Depozita përkohësisht nuk është në dispozicion",
- "Storage invalid" : "Depozitë e pavlefshme",
- "Unknown error" : "Gabim i panjohur",
"File could not be found" : "Skedari s’u gjet dot",
"Download" : "Shkarkoje",
"Delete" : "Fshije",
@@ -32,6 +29,7 @@ OC.L10N.register(
"Unable to determine date" : "S’arrihet të përcaktohet data",
"This operation is forbidden" : "Ky veprim është i ndaluar",
"This directory is unavailable, please check the logs or contact the administrator" : "Kjo drejtori nuk kapet, ju lutemi, kontrolloni regjistrat ose lidhuni me përgjegjësin",
+ "Storage is temporarily not available" : "Depozita përkohësisht nuk është në dispozicion",
"Could not move \"{file}\", target exists" : "S’u lëviz dot \"{file}\", objektivi ekziston",
"Could not move \"{file}\"" : "S’u lëviz dot \"{file}\"",
"copy" : "kopjo",
@@ -100,6 +98,7 @@ OC.L10N.register(
"Accept" : "Prano",
"in %s" : "në %s",
"Change" : "Ndrysho",
+ "Unknown error" : "Gabim i panjohur",
"Show hidden files" : "Shfaq kartela të fshehura",
"Additional settings" : "Konfigurime shtesë",
"Copy to clipboard" : "Kopjo në dërrasë ",
@@ -124,6 +123,7 @@ OC.L10N.register(
"Deleted shares" : "Fshi shpërndarjet",
"Text file" : "Kartelë tekst",
"New text file.txt" : "Kartelë e re file.txt",
+ "Storage invalid" : "Depozitë e pavlefshme",
"Select" : "Përzgjidhe",
"You don’t have permission to upload or create files here" : "S’keni leje për të ngarkuar apo krijuar kartela këtu",
"New" : "E re",
diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json
index c79c1399e6b..0af9649a529 100644
--- a/apps/files/l10n/sq.json
+++ b/apps/files/l10n/sq.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Depozita përkohësisht nuk është në dispozicion",
- "Storage invalid" : "Depozitë e pavlefshme",
- "Unknown error" : "Gabim i panjohur",
"File could not be found" : "Skedari s’u gjet dot",
"Download" : "Shkarkoje",
"Delete" : "Fshije",
@@ -30,6 +27,7 @@
"Unable to determine date" : "S’arrihet të përcaktohet data",
"This operation is forbidden" : "Ky veprim është i ndaluar",
"This directory is unavailable, please check the logs or contact the administrator" : "Kjo drejtori nuk kapet, ju lutemi, kontrolloni regjistrat ose lidhuni me përgjegjësin",
+ "Storage is temporarily not available" : "Depozita përkohësisht nuk është në dispozicion",
"Could not move \"{file}\", target exists" : "S’u lëviz dot \"{file}\", objektivi ekziston",
"Could not move \"{file}\"" : "S’u lëviz dot \"{file}\"",
"copy" : "kopjo",
@@ -98,6 +96,7 @@
"Accept" : "Prano",
"in %s" : "në %s",
"Change" : "Ndrysho",
+ "Unknown error" : "Gabim i panjohur",
"Show hidden files" : "Shfaq kartela të fshehura",
"Additional settings" : "Konfigurime shtesë",
"Copy to clipboard" : "Kopjo në dërrasë ",
@@ -122,6 +121,7 @@
"Deleted shares" : "Fshi shpërndarjet",
"Text file" : "Kartelë tekst",
"New text file.txt" : "Kartelë e re file.txt",
+ "Storage invalid" : "Depozitë e pavlefshme",
"Select" : "Përzgjidhe",
"You don’t have permission to upload or create files here" : "S’keni leje për të ngarkuar apo krijuar kartela këtu",
"New" : "E re",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index 6aed8491018..72aa61e7aad 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Складиште привремено није доступно",
- "Storage invalid" : "Неисправно складиште",
- "Unknown error" : "Непозната грешка",
"File could not be found" : "Фајл није нађен",
"Move or copy" : "Помери или копирај",
"Download" : "Преузми",
@@ -47,6 +44,7 @@ OC.L10N.register(
"Unable to determine date" : "Не могу да одредим датум",
"This operation is forbidden" : "Ова радња је забрањена",
"This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан, проверите дневник или контактирајте администратора",
+ "Storage is temporarily not available" : "Складиште привремено није доступно",
"Could not move \"{file}\", target exists" : "Не могу да преместим „{file}“. Одредиште већ постоји",
"Could not move \"{file}\"" : "Не могу да преместим „{file}“",
"copy" : "копиран",
@@ -156,6 +154,7 @@ OC.L10N.register(
"Transfer" : "Пренеси",
"Transfer {path} to {userid}" : "Пренеси {path} на корисника {userid}",
"Invalid path selected" : "Одабрана неисправна путања",
+ "Unknown error" : "Непозната грешка",
"Ownership transfer request sent" : "Послат захтев за пренос власништва",
"Show hidden files" : "Прикажи скривене фајлове",
"Additional settings" : "Додатне поставке",
@@ -186,6 +185,7 @@ OC.L10N.register(
"Pending shares" : "Дељења на чекању",
"Text file" : "Tекстуални фајл",
"New text file.txt" : "Нов текстуални фајл.txt",
+ "Storage invalid" : "Неисправно складиште",
"Select" : "Изабери",
"You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове",
"New" : "Ново",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index 11ba92fcede..9a38683d431 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Складиште привремено није доступно",
- "Storage invalid" : "Неисправно складиште",
- "Unknown error" : "Непозната грешка",
"File could not be found" : "Фајл није нађен",
"Move or copy" : "Помери или копирај",
"Download" : "Преузми",
@@ -45,6 +42,7 @@
"Unable to determine date" : "Не могу да одредим датум",
"This operation is forbidden" : "Ова радња је забрањена",
"This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан, проверите дневник или контактирајте администратора",
+ "Storage is temporarily not available" : "Складиште привремено није доступно",
"Could not move \"{file}\", target exists" : "Не могу да преместим „{file}“. Одредиште већ постоји",
"Could not move \"{file}\"" : "Не могу да преместим „{file}“",
"copy" : "копиран",
@@ -154,6 +152,7 @@
"Transfer" : "Пренеси",
"Transfer {path} to {userid}" : "Пренеси {path} на корисника {userid}",
"Invalid path selected" : "Одабрана неисправна путања",
+ "Unknown error" : "Непозната грешка",
"Ownership transfer request sent" : "Послат захтев за пренос власништва",
"Show hidden files" : "Прикажи скривене фајлове",
"Additional settings" : "Додатне поставке",
@@ -184,6 +183,7 @@
"Pending shares" : "Дељења на чекању",
"Text file" : "Tекстуални фајл",
"New text file.txt" : "Нов текстуални фајл.txt",
+ "Storage invalid" : "Неисправно складиште",
"Select" : "Изабери",
"You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове",
"New" : "Ново",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index 807d467e3da..40ed2e48ffd 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Lagring är tillfälligt inte tillgänglig",
- "Storage invalid" : "Lagring ogiltig",
- "Unknown error" : "Okänt fel",
"File could not be found" : "Fil kunde inte hittas",
"Move or copy" : "Flytta eller kopiera",
"Download" : "Hämta",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Misslyckades avgöra datum",
"This operation is forbidden" : "Denna operation är förbjuden",
"This directory is unavailable, please check the logs or contact the administrator" : "Denna katalog är inte tillgänglig, kontrollera loggarna eller kontakta administratören",
+ "Storage is temporarily not available" : "Lagring är tillfälligt inte tillgänglig",
"Could not move \"{file}\", target exists" : "Kunde inte flytta \"{file}\", filen existerar redan",
"Could not move \"{file}\"" : "Kunde inte flytta \"{file}\"",
"copy" : "kopia",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Överför",
"Transfer {path} to {userid}" : "Överför {path} till {userid}",
"Invalid path selected" : "Ogiltig sökväg vald",
+ "Unknown error" : "Okänt fel",
"Ownership transfer request sent" : "Förfrågan om ägaröverföring skickad",
"Cannot transfer ownership of a file or folder you do not own" : "Det går inte att överföra äganderätten till en fil eller mapp som du inte äger",
"Open the files app settings" : "Öppna filappens inställningar",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Väntande delningar",
"Text file" : "Textfil",
"New text file.txt" : "Ny textfil.txt",
+ "Storage invalid" : "Lagring ogiltig",
"Select" : "Välj",
"You don’t have permission to upload or create files here" : "Du har inte tillåtelse att ladda upp eller skapa filer här",
"New" : "Ny",
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index b5b765b043e..f2480fe01ed 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Lagring är tillfälligt inte tillgänglig",
- "Storage invalid" : "Lagring ogiltig",
- "Unknown error" : "Okänt fel",
"File could not be found" : "Fil kunde inte hittas",
"Move or copy" : "Flytta eller kopiera",
"Download" : "Hämta",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Misslyckades avgöra datum",
"This operation is forbidden" : "Denna operation är förbjuden",
"This directory is unavailable, please check the logs or contact the administrator" : "Denna katalog är inte tillgänglig, kontrollera loggarna eller kontakta administratören",
+ "Storage is temporarily not available" : "Lagring är tillfälligt inte tillgänglig",
"Could not move \"{file}\", target exists" : "Kunde inte flytta \"{file}\", filen existerar redan",
"Could not move \"{file}\"" : "Kunde inte flytta \"{file}\"",
"copy" : "kopia",
@@ -176,6 +174,7 @@
"Transfer" : "Överför",
"Transfer {path} to {userid}" : "Överför {path} till {userid}",
"Invalid path selected" : "Ogiltig sökväg vald",
+ "Unknown error" : "Okänt fel",
"Ownership transfer request sent" : "Förfrågan om ägaröverföring skickad",
"Cannot transfer ownership of a file or folder you do not own" : "Det går inte att överföra äganderätten till en fil eller mapp som du inte äger",
"Open the files app settings" : "Öppna filappens inställningar",
@@ -223,6 +222,7 @@
"Pending shares" : "Väntande delningar",
"Text file" : "Textfil",
"New text file.txt" : "Ny textfil.txt",
+ "Storage invalid" : "Lagring ogiltig",
"Select" : "Välj",
"You don’t have permission to upload or create files here" : "Du har inte tillåtelse att ladda upp eller skapa filer här",
"New" : "Ny",
diff --git a/apps/files/l10n/th.js b/apps/files/l10n/th.js
index e59ad4c4b50..e8a2b09a681 100644
--- a/apps/files/l10n/th.js
+++ b/apps/files/l10n/th.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "พื้นที่จัดเก็บข้อมูลไม่สามารถใช้งานได้ชั่วคราว",
- "Storage invalid" : "การจัดเก็บข้อมูลไม่ถูกต้อง",
- "Unknown error" : "ข้อผิดพลาดที่ไม่รู้จัก",
"File could not be found" : "ไม่พบไฟล์",
"Move or copy" : "ย้ายหรือคัดลอก",
"Download" : "ดาวน์โหลด",
@@ -52,6 +49,7 @@ OC.L10N.register(
"Unable to determine date" : "ไม่สามารถระบุวัน",
"This operation is forbidden" : "การดำเนินการนี้ถูกห้าม",
"This directory is unavailable, please check the logs or contact the administrator" : "ไม่สามารถใช้งานไดเรกทอรีนี้ โปรดตรวจสอบบันทึกหรือติดต่อผู้ดูแลระบบ",
+ "Storage is temporarily not available" : "พื้นที่จัดเก็บข้อมูลไม่สามารถใช้งานได้ชั่วคราว",
"Could not move \"{file}\", target exists" : "ไม่สามารถย้าย \"{file}\" เป้าหมายมีอยู่แล้ว",
"Could not move \"{file}\"" : "ไม่สามารถย้ายไฟล์ \"{file}\"",
"copy" : "คัดลอก",
@@ -173,6 +171,7 @@ OC.L10N.register(
"Transfer" : "โอนย้าย",
"Transfer {path} to {userid}" : "โอนย้าย {path} ไปยัง {userid}",
"Invalid path selected" : "เลือกเส้นทางไม่ถูกต้อง",
+ "Unknown error" : "ข้อผิดพลาดที่ไม่รู้จัก",
"Ownership transfer request sent" : "ส่งคำขอโอนย้ายความเป็นเจ้าของแล้ว",
"Cannot transfer ownership of a file or folder you do not own" : "ไม่สามารถโอนย้ายความเป็นเจ้าของไฟล์หรือโฟลเดอร์ที่คุณไม่ได้เป็นเจ้าของ",
"Files settings" : "การตั้งค่าไฟล์",
@@ -214,6 +213,7 @@ OC.L10N.register(
"Pending shares" : "การแชร์ที่กำลังดำเนินการ",
"Text file" : "ไฟล์ข้อความ",
"New text file.txt" : "ไฟล์ข้อความใหม่.txt",
+ "Storage invalid" : "การจัดเก็บข้อมูลไม่ถูกต้อง",
"Select" : "เลือก",
"You don’t have permission to upload or create files here" : "คุณไม่ได้รับอนุญาตให้อัปโหลดหรือสร้างไฟล์ที่นี่",
"New" : "สร้างใหม่",
diff --git a/apps/files/l10n/th.json b/apps/files/l10n/th.json
index 37703332009..c4718948c82 100644
--- a/apps/files/l10n/th.json
+++ b/apps/files/l10n/th.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "พื้นที่จัดเก็บข้อมูลไม่สามารถใช้งานได้ชั่วคราว",
- "Storage invalid" : "การจัดเก็บข้อมูลไม่ถูกต้อง",
- "Unknown error" : "ข้อผิดพลาดที่ไม่รู้จัก",
"File could not be found" : "ไม่พบไฟล์",
"Move or copy" : "ย้ายหรือคัดลอก",
"Download" : "ดาวน์โหลด",
@@ -50,6 +47,7 @@
"Unable to determine date" : "ไม่สามารถระบุวัน",
"This operation is forbidden" : "การดำเนินการนี้ถูกห้าม",
"This directory is unavailable, please check the logs or contact the administrator" : "ไม่สามารถใช้งานไดเรกทอรีนี้ โปรดตรวจสอบบันทึกหรือติดต่อผู้ดูแลระบบ",
+ "Storage is temporarily not available" : "พื้นที่จัดเก็บข้อมูลไม่สามารถใช้งานได้ชั่วคราว",
"Could not move \"{file}\", target exists" : "ไม่สามารถย้าย \"{file}\" เป้าหมายมีอยู่แล้ว",
"Could not move \"{file}\"" : "ไม่สามารถย้ายไฟล์ \"{file}\"",
"copy" : "คัดลอก",
@@ -171,6 +169,7 @@
"Transfer" : "โอนย้าย",
"Transfer {path} to {userid}" : "โอนย้าย {path} ไปยัง {userid}",
"Invalid path selected" : "เลือกเส้นทางไม่ถูกต้อง",
+ "Unknown error" : "ข้อผิดพลาดที่ไม่รู้จัก",
"Ownership transfer request sent" : "ส่งคำขอโอนย้ายความเป็นเจ้าของแล้ว",
"Cannot transfer ownership of a file or folder you do not own" : "ไม่สามารถโอนย้ายความเป็นเจ้าของไฟล์หรือโฟลเดอร์ที่คุณไม่ได้เป็นเจ้าของ",
"Files settings" : "การตั้งค่าไฟล์",
@@ -212,6 +211,7 @@
"Pending shares" : "การแชร์ที่กำลังดำเนินการ",
"Text file" : "ไฟล์ข้อความ",
"New text file.txt" : "ไฟล์ข้อความใหม่.txt",
+ "Storage invalid" : "การจัดเก็บข้อมูลไม่ถูกต้อง",
"Select" : "เลือก",
"You don’t have permission to upload or create files here" : "คุณไม่ได้รับอนุญาตให้อัปโหลดหรือสร้างไฟล์ที่นี่",
"New" : "สร้างใหม่",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index e715d5bb021..0e80bd5d742 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor",
- "Storage invalid" : "Depolama geçersiz",
- "Unknown error" : "Bilinmeyen sorun",
"File could not be found" : "Dosya bulunamadı",
"Move or copy" : "Taşı ya da kopyala",
"Download" : "İndir",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Tarih belirlenemedi",
"This operation is forbidden" : "Bu işleme izin verilmiyor",
"This directory is unavailable, please check the logs or contact the administrator" : "Bu klasör yazılabilir değil. Lütfen günlük kayıtlarına bakın ya da BT yöneticiniz ile görüşün",
+ "Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor",
"Could not move \"{file}\", target exists" : "\"{file}\" taşınamadı, hedef zaten var",
"Could not move \"{file}\"" : "\"{file}\" taşınamadı",
"copy" : "kopya",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Sahipliği aktar",
"Transfer {path} to {userid}" : "{path} yolunun sahipliğini {userid} kullanıcısına aktar",
"Invalid path selected" : "Seçilen yol geçersiz",
+ "Unknown error" : "Bilinmeyen sorun",
"Ownership transfer request sent" : "Sahiplik aktarımı isteği gönderildi",
"Cannot transfer ownership of a file or folder you do not own" : "Sahibi olmadığınız bir dosya ya da klasörün sahipliğini aktaramazsınız",
"Open the files app settings" : "Dosyalar uygulaması ayarlarını aç",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Bekleyen paylaşımlar",
"Text file" : "Metin dosyası",
"New text file.txt" : "Yeni metin dosyası.txt",
+ "Storage invalid" : "Depolama geçersiz",
"Select" : "Seçin",
"You don’t have permission to upload or create files here" : "Buraya dosya yükleme ya da ekleme izniniz yok",
"New" : "Yeni",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 09bdb85cf9e..89070ffb746 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor",
- "Storage invalid" : "Depolama geçersiz",
- "Unknown error" : "Bilinmeyen sorun",
"File could not be found" : "Dosya bulunamadı",
"Move or copy" : "Taşı ya da kopyala",
"Download" : "İndir",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Tarih belirlenemedi",
"This operation is forbidden" : "Bu işleme izin verilmiyor",
"This directory is unavailable, please check the logs or contact the administrator" : "Bu klasör yazılabilir değil. Lütfen günlük kayıtlarına bakın ya da BT yöneticiniz ile görüşün",
+ "Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor",
"Could not move \"{file}\", target exists" : "\"{file}\" taşınamadı, hedef zaten var",
"Could not move \"{file}\"" : "\"{file}\" taşınamadı",
"copy" : "kopya",
@@ -176,6 +174,7 @@
"Transfer" : "Sahipliği aktar",
"Transfer {path} to {userid}" : "{path} yolunun sahipliğini {userid} kullanıcısına aktar",
"Invalid path selected" : "Seçilen yol geçersiz",
+ "Unknown error" : "Bilinmeyen sorun",
"Ownership transfer request sent" : "Sahiplik aktarımı isteği gönderildi",
"Cannot transfer ownership of a file or folder you do not own" : "Sahibi olmadığınız bir dosya ya da klasörün sahipliğini aktaramazsınız",
"Open the files app settings" : "Dosyalar uygulaması ayarlarını aç",
@@ -223,6 +222,7 @@
"Pending shares" : "Bekleyen paylaşımlar",
"Text file" : "Metin dosyası",
"New text file.txt" : "Yeni metin dosyası.txt",
+ "Storage invalid" : "Depolama geçersiz",
"Select" : "Seçin",
"You don’t have permission to upload or create files here" : "Buraya dosya yükleme ya da ekleme izniniz yok",
"New" : "Yeni",
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index 14a8425b001..f68f05336a0 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Сховище тимчасово недоступне",
- "Storage invalid" : "Некоректне сховище",
- "Unknown error" : "Невідома помилка",
"File could not be found" : "Неможливо знайти файл",
"Move or copy" : "Перемістити або копіювати",
"Download" : "Звантажити",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "Неможливо визначити дату",
"This operation is forbidden" : "Операцію заборонено",
"This directory is unavailable, please check the logs or contact the administrator" : "Каталог недоступний, будь ласка, перевірте файл журналу або зверніться до адміністратора ",
+ "Storage is temporarily not available" : "Сховище тимчасово недоступне",
"Could not move \"{file}\", target exists" : "Не вдається перемістити файл \"{file}\", оскільк він існує в точці призначення",
"Could not move \"{file}\"" : "Неможливо перемістити файл \"{file}\"",
"copy" : "копія",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "Передати",
"Transfer {path} to {userid}" : "Передати {path} користувачеві {userid}",
"Invalid path selected" : "Вибрано неправильний шлях",
+ "Unknown error" : "Невідома помилка",
"Ownership transfer request sent" : "Запит на передачу прав власності надіслано",
"Cannot transfer ownership of a file or folder you do not own" : "Неможливо передати права власності на файл або каталог, якими ви не володієте",
"Open the files app settings" : "Перейти до налаштувань застосунку файлів",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "Запити на доступ",
"Text file" : "Текстовий файл",
"New text file.txt" : "Новий текстовий файл.txt",
+ "Storage invalid" : "Некоректне сховище",
"Select" : "Вибрати",
"You don’t have permission to upload or create files here" : "У вас недостатньо прав для завантаження або створення файлів тут",
"New" : "Створити",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index 7ddce513d8a..07e00ac2b95 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Сховище тимчасово недоступне",
- "Storage invalid" : "Некоректне сховище",
- "Unknown error" : "Невідома помилка",
"File could not be found" : "Неможливо знайти файл",
"Move or copy" : "Перемістити або копіювати",
"Download" : "Звантажити",
@@ -51,6 +48,7 @@
"Unable to determine date" : "Неможливо визначити дату",
"This operation is forbidden" : "Операцію заборонено",
"This directory is unavailable, please check the logs or contact the administrator" : "Каталог недоступний, будь ласка, перевірте файл журналу або зверніться до адміністратора ",
+ "Storage is temporarily not available" : "Сховище тимчасово недоступне",
"Could not move \"{file}\", target exists" : "Не вдається перемістити файл \"{file}\", оскільк він існує в точці призначення",
"Could not move \"{file}\"" : "Неможливо перемістити файл \"{file}\"",
"copy" : "копія",
@@ -176,6 +174,7 @@
"Transfer" : "Передати",
"Transfer {path} to {userid}" : "Передати {path} користувачеві {userid}",
"Invalid path selected" : "Вибрано неправильний шлях",
+ "Unknown error" : "Невідома помилка",
"Ownership transfer request sent" : "Запит на передачу прав власності надіслано",
"Cannot transfer ownership of a file or folder you do not own" : "Неможливо передати права власності на файл або каталог, якими ви не володієте",
"Open the files app settings" : "Перейти до налаштувань застосунку файлів",
@@ -223,6 +222,7 @@
"Pending shares" : "Запити на доступ",
"Text file" : "Текстовий файл",
"New text file.txt" : "Новий текстовий файл.txt",
+ "Storage invalid" : "Некоректне сховище",
"Select" : "Вибрати",
"You don’t have permission to upload or create files here" : "У вас недостатньо прав для завантаження або створення файлів тут",
"New" : "Створити",
diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js
index c55a29dbdce..6d23974442c 100644
--- a/apps/files/l10n/vi.js
+++ b/apps/files/l10n/vi.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "Kho lưu trữ tạm thời không khả dụng",
- "Storage invalid" : "Lưu trữ không hợp lệ",
- "Unknown error" : "Lỗi chưa biết",
"File could not be found" : "Tệp tin không tồn tại",
"Move or copy" : "Di chuyển hoặc sao chép",
"Download" : "Tải về",
@@ -47,6 +44,7 @@ OC.L10N.register(
"Unable to determine date" : "Không thể xác định ngày",
"This operation is forbidden" : "Thao tác bị cấm",
"This directory is unavailable, please check the logs or contact the administrator" : "Thư mục này không sẵn có, hãy kiểm tra log hoặc liên hệ người quản lý",
+ "Storage is temporarily not available" : "Kho lưu trữ tạm thời không khả dụng",
"Could not move \"{file}\", target exists" : "Không thể di chuyển \"{file}\", trùng đích đến",
"Could not move \"{file}\"" : "Không thể di chuyển \"{file}\"",
"copy" : "sao chép",
@@ -167,6 +165,7 @@ OC.L10N.register(
"Transfer" : "‎Chuyển‎",
"Transfer {path} to {userid}" : "‎Chuyển {path} sang {userid}‎",
"Invalid path selected" : "‎Đường dẫn không hợp lệ được chọn‎",
+ "Unknown error" : "Lỗi chưa biết",
"Ownership transfer request sent" : "‎Yêu cầu chuyển quyền sở hữu đã được gửi‎",
"Show hidden files" : "Hiển thị các file bị ẩn",
"Crop image previews" : "‎Xén ảnh ‎bản xem trước",
@@ -204,6 +203,7 @@ OC.L10N.register(
"Pending shares" : "Chia sẻ đang chờ xử lý‎",
"Text file" : "Tập tin văn bản",
"New text file.txt" : "‎Tệp văn bản mới.txt‎",
+ "Storage invalid" : "Lưu trữ không hợp lệ",
"Select" : "Chọn",
"You don’t have permission to upload or create files here" : "Bạn không có quyền upload hoặc tạo files ở đây",
"New" : "Tạo mới",
diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json
index 2e2cfcf5953..5e268675280 100644
--- a/apps/files/l10n/vi.json
+++ b/apps/files/l10n/vi.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "Kho lưu trữ tạm thời không khả dụng",
- "Storage invalid" : "Lưu trữ không hợp lệ",
- "Unknown error" : "Lỗi chưa biết",
"File could not be found" : "Tệp tin không tồn tại",
"Move or copy" : "Di chuyển hoặc sao chép",
"Download" : "Tải về",
@@ -45,6 +42,7 @@
"Unable to determine date" : "Không thể xác định ngày",
"This operation is forbidden" : "Thao tác bị cấm",
"This directory is unavailable, please check the logs or contact the administrator" : "Thư mục này không sẵn có, hãy kiểm tra log hoặc liên hệ người quản lý",
+ "Storage is temporarily not available" : "Kho lưu trữ tạm thời không khả dụng",
"Could not move \"{file}\", target exists" : "Không thể di chuyển \"{file}\", trùng đích đến",
"Could not move \"{file}\"" : "Không thể di chuyển \"{file}\"",
"copy" : "sao chép",
@@ -165,6 +163,7 @@
"Transfer" : "‎Chuyển‎",
"Transfer {path} to {userid}" : "‎Chuyển {path} sang {userid}‎",
"Invalid path selected" : "‎Đường dẫn không hợp lệ được chọn‎",
+ "Unknown error" : "Lỗi chưa biết",
"Ownership transfer request sent" : "‎Yêu cầu chuyển quyền sở hữu đã được gửi‎",
"Show hidden files" : "Hiển thị các file bị ẩn",
"Crop image previews" : "‎Xén ảnh ‎bản xem trước",
@@ -202,6 +201,7 @@
"Pending shares" : "Chia sẻ đang chờ xử lý‎",
"Text file" : "Tập tin văn bản",
"New text file.txt" : "‎Tệp văn bản mới.txt‎",
+ "Storage invalid" : "Lưu trữ không hợp lệ",
"Select" : "Chọn",
"You don’t have permission to upload or create files here" : "Bạn không có quyền upload hoặc tạo files ở đây",
"New" : "Tạo mới",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index ebc19a5d652..5147135e254 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "存储空间暂时不可用",
- "Storage invalid" : "存储空间无效",
- "Unknown error" : "未知错误",
"File could not be found" : "文件未找到",
"Move or copy" : "移动或复制",
"Download" : "下载",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "无法确定日期",
"This operation is forbidden" : "该操作被禁止",
"This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
+ "Storage is temporarily not available" : "存储空间暂时不可用",
"Could not move \"{file}\", target exists" : "无法移动 \"{file}\",目标已存在",
"Could not move \"{file}\"" : "无法移动 \"{file}\"",
"copy" : "复制",
@@ -177,6 +175,7 @@ OC.L10N.register(
"Transfer" : "转移",
"Transfer {path} to {userid}" : "将 {path} 转移给 {userid}",
"Invalid path selected" : "选择的路径无效",
+ "Unknown error" : "未知错误",
"Ownership transfer request sent" : "所有权转移请求已发送",
"Cannot transfer ownership of a file or folder you do not own" : "无法转让您未拥有的文件或文件夹的所有权",
"Files settings" : "文件设置",
@@ -220,6 +219,7 @@ OC.L10N.register(
"Pending shares" : "待定共享",
"Text file" : "文本文件",
"New text file.txt" : "新建文本文档.txt",
+ "Storage invalid" : "存储空间无效",
"Select" : "选择",
"You don’t have permission to upload or create files here" : "您没有权限在此上传或创建文件",
"New" : "新建",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 817fbdcc863..a12d760ef0d 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "存储空间暂时不可用",
- "Storage invalid" : "存储空间无效",
- "Unknown error" : "未知错误",
"File could not be found" : "文件未找到",
"Move or copy" : "移动或复制",
"Download" : "下载",
@@ -51,6 +48,7 @@
"Unable to determine date" : "无法确定日期",
"This operation is forbidden" : "该操作被禁止",
"This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员",
+ "Storage is temporarily not available" : "存储空间暂时不可用",
"Could not move \"{file}\", target exists" : "无法移动 \"{file}\",目标已存在",
"Could not move \"{file}\"" : "无法移动 \"{file}\"",
"copy" : "复制",
@@ -175,6 +173,7 @@
"Transfer" : "转移",
"Transfer {path} to {userid}" : "将 {path} 转移给 {userid}",
"Invalid path selected" : "选择的路径无效",
+ "Unknown error" : "未知错误",
"Ownership transfer request sent" : "所有权转移请求已发送",
"Cannot transfer ownership of a file or folder you do not own" : "无法转让您未拥有的文件或文件夹的所有权",
"Files settings" : "文件设置",
@@ -218,6 +217,7 @@
"Pending shares" : "待定共享",
"Text file" : "文本文件",
"New text file.txt" : "新建文本文档.txt",
+ "Storage invalid" : "存储空间无效",
"Select" : "选择",
"You don’t have permission to upload or create files here" : "您没有权限在此上传或创建文件",
"New" : "新建",
diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js
index cca88016de0..8b2d5743593 100644
--- a/apps/files/l10n/zh_HK.js
+++ b/apps/files/l10n/zh_HK.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "儲存空間暫時無法使用",
- "Storage invalid" : "無效的儲存空間",
- "Unknown error" : "未知錯誤",
"File could not be found" : "找不到檔案",
"Move or copy" : "移動或複製",
"Download" : "下載",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "無法確定日期",
"This operation is forbidden" : "此操作被禁止",
"This directory is unavailable, please check the logs or contact the administrator" : "這個目錄無法存取,請檢查伺服器記錄檔或聯絡管理員",
+ "Storage is temporarily not available" : "儲存空間暫時無法使用",
"Could not move \"{file}\", target exists" : "無法移動「{file}」,目標已經存在",
"Could not move \"{file}\"" : "無法移動 \"{file}\"",
"copy" : "複製",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "轉移",
"Transfer {path} to {userid}" : "轉移 \"{path}\" 給 {userid}",
"Invalid path selected" : "所選的路徑無效",
+ "Unknown error" : "未知錯誤",
"Ownership transfer request sent" : "已送出擁有權轉移的請求",
"Cannot transfer ownership of a file or folder you do not own" : "無法轉移您未擁有的檔案或是資料夾所有權",
"Open the files app settings" : "開啟 Files 應用程式設定",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Pending shares" : "等待分享",
"Text file" : "文字檔",
"New text file.txt" : "新文字檔.txt",
+ "Storage invalid" : "無效的儲存空間",
"Select" : "選擇",
"You don’t have permission to upload or create files here" : "您無權限上傳或建立檔案",
"New" : "新增",
diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json
index d71fcf7b930..e5decda01ea 100644
--- a/apps/files/l10n/zh_HK.json
+++ b/apps/files/l10n/zh_HK.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "儲存空間暫時無法使用",
- "Storage invalid" : "無效的儲存空間",
- "Unknown error" : "未知錯誤",
"File could not be found" : "找不到檔案",
"Move or copy" : "移動或複製",
"Download" : "下載",
@@ -51,6 +48,7 @@
"Unable to determine date" : "無法確定日期",
"This operation is forbidden" : "此操作被禁止",
"This directory is unavailable, please check the logs or contact the administrator" : "這個目錄無法存取,請檢查伺服器記錄檔或聯絡管理員",
+ "Storage is temporarily not available" : "儲存空間暫時無法使用",
"Could not move \"{file}\", target exists" : "無法移動「{file}」,目標已經存在",
"Could not move \"{file}\"" : "無法移動 \"{file}\"",
"copy" : "複製",
@@ -176,6 +174,7 @@
"Transfer" : "轉移",
"Transfer {path} to {userid}" : "轉移 \"{path}\" 給 {userid}",
"Invalid path selected" : "所選的路徑無效",
+ "Unknown error" : "未知錯誤",
"Ownership transfer request sent" : "已送出擁有權轉移的請求",
"Cannot transfer ownership of a file or folder you do not own" : "無法轉移您未擁有的檔案或是資料夾所有權",
"Open the files app settings" : "開啟 Files 應用程式設定",
@@ -223,6 +222,7 @@
"Pending shares" : "等待分享",
"Text file" : "文字檔",
"New text file.txt" : "新文字檔.txt",
+ "Storage invalid" : "無效的儲存空間",
"Select" : "選擇",
"You don’t have permission to upload or create files here" : "您無權限上傳或建立檔案",
"New" : "新增",
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index 3b33918cfc7..7c9f69e1384 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -1,9 +1,6 @@
OC.L10N.register(
"files",
{
- "Storage is temporarily not available" : "儲存空間暫時無法使用",
- "Storage invalid" : "無效的儲存空間",
- "Unknown error" : "未知的錯誤",
"File could not be found" : "找不到檔案",
"Move or copy" : "移動或複製",
"Download" : "下載",
@@ -53,6 +50,7 @@ OC.L10N.register(
"Unable to determine date" : "無法確定日期",
"This operation is forbidden" : "此動作被禁止",
"This directory is unavailable, please check the logs or contact the administrator" : "這個目錄無法存取,請檢查伺服器記錄檔或聯絡管理員",
+ "Storage is temporarily not available" : "儲存空間暫時無法使用",
"Could not move \"{file}\", target exists" : "無法移動「{file}」,目標已經存在",
"Could not move \"{file}\"" : "無法移動「{file}」",
"copy" : "複製",
@@ -178,6 +176,7 @@ OC.L10N.register(
"Transfer" : "轉移",
"Transfer {path} to {userid}" : "轉移 {path} 給 {userid}",
"Invalid path selected" : "所選的路徑無效",
+ "Unknown error" : "未知的錯誤",
"Ownership transfer request sent" : "已送出所有權轉移的請求",
"Cannot transfer ownership of a file or folder you do not own" : "無法轉移您未擁有的檔案或資料夾的所有權",
"Files settings" : "檔案設定",
@@ -222,6 +221,7 @@ OC.L10N.register(
"Pending shares" : "等待分享",
"Text file" : "文字檔案",
"New text file.txt" : "新文字檔案.txt",
+ "Storage invalid" : "無效的儲存空間",
"Select" : "選取",
"You don’t have permission to upload or create files here" : "您沒有權限在這裡上傳或建立檔案",
"New" : "新增",
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index f4b3cb65076..20f415d98a7 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -1,7 +1,4 @@
{ "translations": {
- "Storage is temporarily not available" : "儲存空間暫時無法使用",
- "Storage invalid" : "無效的儲存空間",
- "Unknown error" : "未知的錯誤",
"File could not be found" : "找不到檔案",
"Move or copy" : "移動或複製",
"Download" : "下載",
@@ -51,6 +48,7 @@
"Unable to determine date" : "無法確定日期",
"This operation is forbidden" : "此動作被禁止",
"This directory is unavailable, please check the logs or contact the administrator" : "這個目錄無法存取,請檢查伺服器記錄檔或聯絡管理員",
+ "Storage is temporarily not available" : "儲存空間暫時無法使用",
"Could not move \"{file}\", target exists" : "無法移動「{file}」,目標已經存在",
"Could not move \"{file}\"" : "無法移動「{file}」",
"copy" : "複製",
@@ -176,6 +174,7 @@
"Transfer" : "轉移",
"Transfer {path} to {userid}" : "轉移 {path} 給 {userid}",
"Invalid path selected" : "所選的路徑無效",
+ "Unknown error" : "未知的錯誤",
"Ownership transfer request sent" : "已送出所有權轉移的請求",
"Cannot transfer ownership of a file or folder you do not own" : "無法轉移您未擁有的檔案或資料夾的所有權",
"Files settings" : "檔案設定",
@@ -220,6 +219,7 @@
"Pending shares" : "等待分享",
"Text file" : "文字檔案",
"New text file.txt" : "新文字檔案.txt",
+ "Storage invalid" : "無效的儲存空間",
"Select" : "選取",
"You don’t have permission to upload or create files here" : "您沒有權限在這裡上傳或建立檔案",
"New" : "新增",
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 65990a9c600..5a916f896c6 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -207,6 +207,7 @@ OC.L10N.register(
"Share link" : "Link teilen",
"Copy public link to clipboard" : "Öffentlichen Link in die Zwischenablage kopieren",
"Error, please enter proper password and/or expiration date" : "Fehler. Bitte gebe das richtige Passwort und/oder Ablaufdatum ein",
+ "Link share created" : "Link-Freigabe erstellt",
"Error while creating the share" : "Fehler beim Erstellen der Freigabe",
"Search for share recipients" : "Nach Freigabeempfängern suchen",
"No recommendations. Start typing." : "Keine Empfehlungen. Beginnen Sie mit der Eingabe.",
@@ -233,9 +234,11 @@ OC.L10N.register(
"Error updating the share" : "Fehler beim Aktualisieren der Freigabe",
"File \"{path}\" has been unshared" : "Freigabe für die Datei \"{path}\" wurde entfernt",
"Folder \"{path}\" has been unshared" : "Freigabe für den Ordner \"{path}\" wurde entfernt",
+ "Share {propertyName} saved" : "Freigabe {propertyName} gespeichert",
"Shared" : "Geteilt",
"Share" : "Teilen",
"Shared with" : "Geteilt mit",
+ "Password created successfully" : "Passwort erstellt",
"Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Ihnen und der Gruppe {group} geteilt",
"Shared with you and {circle} by {owner}" : "{owner} hat dies mit Dir und dem Kreis {circle} geteilt",
"Shared with you and the conversation {conversation} by {owner}" : "{owner} hat diese mit Ihnen und der Unterhaltung {conversation} geteilt",
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 00b201800eb..0d3f3a8a0e7 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -205,6 +205,7 @@
"Share link" : "Link teilen",
"Copy public link to clipboard" : "Öffentlichen Link in die Zwischenablage kopieren",
"Error, please enter proper password and/or expiration date" : "Fehler. Bitte gebe das richtige Passwort und/oder Ablaufdatum ein",
+ "Link share created" : "Link-Freigabe erstellt",
"Error while creating the share" : "Fehler beim Erstellen der Freigabe",
"Search for share recipients" : "Nach Freigabeempfängern suchen",
"No recommendations. Start typing." : "Keine Empfehlungen. Beginnen Sie mit der Eingabe.",
@@ -231,9 +232,11 @@
"Error updating the share" : "Fehler beim Aktualisieren der Freigabe",
"File \"{path}\" has been unshared" : "Freigabe für die Datei \"{path}\" wurde entfernt",
"Folder \"{path}\" has been unshared" : "Freigabe für den Ordner \"{path}\" wurde entfernt",
+ "Share {propertyName} saved" : "Freigabe {propertyName} gespeichert",
"Shared" : "Geteilt",
"Share" : "Teilen",
"Shared with" : "Geteilt mit",
+ "Password created successfully" : "Passwort erstellt",
"Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Ihnen und der Gruppe {group} geteilt",
"Shared with you and {circle} by {owner}" : "{owner} hat dies mit Dir und dem Kreis {circle} geteilt",
"Shared with you and the conversation {conversation} by {owner}" : "{owner} hat diese mit Ihnen und der Unterhaltung {conversation} geteilt",
diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js
index 1c0180a7c4e..04b68c6bfa6 100644
--- a/apps/files_sharing/l10n/en_GB.js
+++ b/apps/files_sharing/l10n/en_GB.js
@@ -207,6 +207,7 @@ OC.L10N.register(
"Share link" : "Share link",
"Copy public link to clipboard" : "Copy public link to clipboard",
"Error, please enter proper password and/or expiration date" : "Error, please enter proper password and/or expiration date",
+ "Link share created" : "Link share created",
"Error while creating the share" : "Error while creating the share",
"Search for share recipients" : "Search for share recipients",
"No recommendations. Start typing." : "No recommendations. Start typing.",
@@ -233,9 +234,11 @@ OC.L10N.register(
"Error updating the share" : "Error updating the share",
"File \"{path}\" has been unshared" : "File \"{path}\" has been unshared",
"Folder \"{path}\" has been unshared" : "Folder \"{path}\" has been unshared",
+ "Share {propertyName} saved" : "Share {propertyName} saved",
"Shared" : "Shared",
"Share" : "Share",
"Shared with" : "Shared with",
+ "Password created successfully" : "Password created successfully",
"Shared with you and the group {group} by {owner}" : "Shared with you and the group {group} by {owner}",
"Shared with you and {circle} by {owner}" : "Shared with you and {circle} by {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Shared with you and the conversation {conversation} by {owner}",
diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json
index 4b60e2932eb..9de041a8986 100644
--- a/apps/files_sharing/l10n/en_GB.json
+++ b/apps/files_sharing/l10n/en_GB.json
@@ -205,6 +205,7 @@
"Share link" : "Share link",
"Copy public link to clipboard" : "Copy public link to clipboard",
"Error, please enter proper password and/or expiration date" : "Error, please enter proper password and/or expiration date",
+ "Link share created" : "Link share created",
"Error while creating the share" : "Error while creating the share",
"Search for share recipients" : "Search for share recipients",
"No recommendations. Start typing." : "No recommendations. Start typing.",
@@ -231,9 +232,11 @@
"Error updating the share" : "Error updating the share",
"File \"{path}\" has been unshared" : "File \"{path}\" has been unshared",
"Folder \"{path}\" has been unshared" : "Folder \"{path}\" has been unshared",
+ "Share {propertyName} saved" : "Share {propertyName} saved",
"Shared" : "Shared",
"Share" : "Share",
"Shared with" : "Shared with",
+ "Password created successfully" : "Password created successfully",
"Shared with you and the group {group} by {owner}" : "Shared with you and the group {group} by {owner}",
"Shared with you and {circle} by {owner}" : "Shared with you and {circle} by {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Shared with you and the conversation {conversation} by {owner}",
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index 80be77d382e..597bbbc1416 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -207,6 +207,7 @@ OC.L10N.register(
"Share link" : "Lien de partage",
"Copy public link to clipboard" : "Copier le lien public dans le presse-papiers",
"Error, please enter proper password and/or expiration date" : "Erreur. Merci d'entrer un mot de passe valide et/ou une date d'expiration",
+ "Link share created" : "Partage de lien créé",
"Error while creating the share" : "Erreur lors de la création du partage",
"Search for share recipients" : "Recherche de destinataires de partages",
"No recommendations. Start typing." : "Aucune recommandation. Commencez à écrire.",
@@ -233,9 +234,11 @@ OC.L10N.register(
"Error updating the share" : "Erreur lors de la mise à jour du partage",
"File \"{path}\" has been unshared" : "Le partage du fichier \"{path}\" a été retiré",
"Folder \"{path}\" has been unshared" : "Le partage du dossier \"{path}\" a été retiré",
+ "Share {propertyName} saved" : "Le partage {nom de la propriété} a été enregistré",
"Shared" : "Partagé",
"Share" : "Partager",
"Shared with" : "Partagé avec",
+ "Password created successfully" : "Mot de passe créé avec succès",
"Shared with you and the group {group} by {owner}" : "Partagé avec vous et le groupe {group} par {owner}",
"Shared with you and {circle} by {owner}" : "Partagé avec vous et {circle} par {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Partagé avec vous et la conversation {conversation} par {owner}",
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index f14d0196964..1e5889c8f0e 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -205,6 +205,7 @@
"Share link" : "Lien de partage",
"Copy public link to clipboard" : "Copier le lien public dans le presse-papiers",
"Error, please enter proper password and/or expiration date" : "Erreur. Merci d'entrer un mot de passe valide et/ou une date d'expiration",
+ "Link share created" : "Partage de lien créé",
"Error while creating the share" : "Erreur lors de la création du partage",
"Search for share recipients" : "Recherche de destinataires de partages",
"No recommendations. Start typing." : "Aucune recommandation. Commencez à écrire.",
@@ -231,9 +232,11 @@
"Error updating the share" : "Erreur lors de la mise à jour du partage",
"File \"{path}\" has been unshared" : "Le partage du fichier \"{path}\" a été retiré",
"Folder \"{path}\" has been unshared" : "Le partage du dossier \"{path}\" a été retiré",
+ "Share {propertyName} saved" : "Le partage {nom de la propriété} a été enregistré",
"Shared" : "Partagé",
"Share" : "Partager",
"Shared with" : "Partagé avec",
+ "Password created successfully" : "Mot de passe créé avec succès",
"Shared with you and the group {group} by {owner}" : "Partagé avec vous et le groupe {group} par {owner}",
"Shared with you and {circle} by {owner}" : "Partagé avec vous et {circle} par {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Partagé avec vous et la conversation {conversation} par {owner}",
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index 17a05397dcd..7e23a09166f 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -207,6 +207,9 @@ OC.L10N.register(
"Share link" : "Link de compartilhamento",
"Copy public link to clipboard" : "Copie o link público para a área de transferência",
"Error, please enter proper password and/or expiration date" : "Erro, digite a senha correta e/ou a data de validade",
+ "Link share created" : "Compartilhamento de link criado",
+ "Error while creating the share" : "Erro ao criar o compartilhamento",
+ "Search for share recipients" : "Pesquisar destinatários de compartilhamento",
"No recommendations. Start typing." : "Sem recomendações. Inicie a digitação.",
"Resharing is not allowed" : "Recompartilhamento não é permitido",
"Name or email …" : "Nome ou e-mail...",
@@ -229,9 +232,13 @@ OC.L10N.register(
"Error creating the share" : "Erro ao criar o compartilhamento",
"Error updating the share: {errorMessage}" : "Erro ao atualizar o compartilhamento: {errorMessage}",
"Error updating the share" : "Erro ao atualizar o compartilhamento",
+ "File \"{path}\" has been unshared" : "O arquivo \"{path}\" não foi compartilhado",
+ "Folder \"{path}\" has been unshared" : "A pasta \"{path}\" foi descompartilhada",
+ "Share {propertyName} saved" : "Compartilhe {propertyName} salvo",
"Shared" : "Compartilhado",
"Share" : "Compartilhar",
"Shared with" : "Compartilhado com",
+ "Password created successfully" : "Senha criada com sucesso",
"Shared with you and the group {group} by {owner}" : "Compartilhado com você e o grupo {group} por {owner}",
"Shared with you and {circle} by {owner}" : "Compartilhado com você e {circle} por {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Compartilhado com você e a conversa {conversation} por {owner}",
@@ -258,6 +265,9 @@ OC.L10N.register(
"One or more of your shares will expire tomorrow" : "Um ou mais de seus compartilhamentos irão expirar amanhã",
"Copy to clipboard" : "Copiar para a área de transferência",
"Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não funcionar mais.",
- "Toggle grid view" : "Alternar a visão em grade"
+ "Toggle grid view" : "Alternar a visão em grade",
+ "Share label saved" : "Marcador de compartilhamento salvo",
+ "Share password saved" : "Compartilhar senha salva",
+ "Share note saved" : "Compartilhar nota salva"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index ea29728a9e2..1a02533e16f 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -205,6 +205,9 @@
"Share link" : "Link de compartilhamento",
"Copy public link to clipboard" : "Copie o link público para a área de transferência",
"Error, please enter proper password and/or expiration date" : "Erro, digite a senha correta e/ou a data de validade",
+ "Link share created" : "Compartilhamento de link criado",
+ "Error while creating the share" : "Erro ao criar o compartilhamento",
+ "Search for share recipients" : "Pesquisar destinatários de compartilhamento",
"No recommendations. Start typing." : "Sem recomendações. Inicie a digitação.",
"Resharing is not allowed" : "Recompartilhamento não é permitido",
"Name or email …" : "Nome ou e-mail...",
@@ -227,9 +230,13 @@
"Error creating the share" : "Erro ao criar o compartilhamento",
"Error updating the share: {errorMessage}" : "Erro ao atualizar o compartilhamento: {errorMessage}",
"Error updating the share" : "Erro ao atualizar o compartilhamento",
+ "File \"{path}\" has been unshared" : "O arquivo \"{path}\" não foi compartilhado",
+ "Folder \"{path}\" has been unshared" : "A pasta \"{path}\" foi descompartilhada",
+ "Share {propertyName} saved" : "Compartilhe {propertyName} salvo",
"Shared" : "Compartilhado",
"Share" : "Compartilhar",
"Shared with" : "Compartilhado com",
+ "Password created successfully" : "Senha criada com sucesso",
"Shared with you and the group {group} by {owner}" : "Compartilhado com você e o grupo {group} por {owner}",
"Shared with you and {circle} by {owner}" : "Compartilhado com você e {circle} por {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Compartilhado com você e a conversa {conversation} por {owner}",
@@ -256,6 +263,9 @@
"One or more of your shares will expire tomorrow" : "Um ou mais de seus compartilhamentos irão expirar amanhã",
"Copy to clipboard" : "Copiar para a área de transferência",
"Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não funcionar mais.",
- "Toggle grid view" : "Alternar a visão em grade"
+ "Toggle grid view" : "Alternar a visão em grade",
+ "Share label saved" : "Marcador de compartilhamento salvo",
+ "Share password saved" : "Compartilhar senha salva",
+ "Share note saved" : "Compartilhar nota salva"
},"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/apps/files_sharing/l10n/zh_HK.js b/apps/files_sharing/l10n/zh_HK.js
index 4a7c17fda29..a3481b856a7 100644
--- a/apps/files_sharing/l10n/zh_HK.js
+++ b/apps/files_sharing/l10n/zh_HK.js
@@ -207,6 +207,7 @@ OC.L10N.register(
"Share link" : "分享連結",
"Copy public link to clipboard" : "將公共連結複製到剪貼簿",
"Error, please enter proper password and/or expiration date" : "錯誤,請輸入正確的密碼和/或有效期",
+ "Link share created" : "創建了連結分享",
"Error while creating the share" : "創建分享出錯",
"Search for share recipients" : "搜尋分享參與者",
"No recommendations. Start typing." : "沒有建議。開始輸入。",
@@ -233,9 +234,11 @@ OC.L10N.register(
"Error updating the share" : "更新分享出錯",
"File \"{path}\" has been unshared" : "檔案 “{path}” 已取消共享",
"Folder \"{path}\" has been unshared" : "資料夾 “{path}” 已取消共享",
+ "Share {propertyName} saved" : "分享 {propertyName} 已保存",
"Shared" : "已分享",
"Share" : "分享",
"Shared with" : "分享給",
+ "Password created successfully" : "成功創建了密碼",
"Shared with you and the group {group} by {owner}" : "由 {owner} 分享給您和 {group}群組",
"Shared with you and {circle} by {owner}" : "{owner} 分享給您和 {circle}",
"Shared with you and the conversation {conversation} by {owner}" : "{owner} 分享給您和 {conversation} 對話",
diff --git a/apps/files_sharing/l10n/zh_HK.json b/apps/files_sharing/l10n/zh_HK.json
index 2cc8444ec81..9c289170734 100644
--- a/apps/files_sharing/l10n/zh_HK.json
+++ b/apps/files_sharing/l10n/zh_HK.json
@@ -205,6 +205,7 @@
"Share link" : "分享連結",
"Copy public link to clipboard" : "將公共連結複製到剪貼簿",
"Error, please enter proper password and/or expiration date" : "錯誤,請輸入正確的密碼和/或有效期",
+ "Link share created" : "創建了連結分享",
"Error while creating the share" : "創建分享出錯",
"Search for share recipients" : "搜尋分享參與者",
"No recommendations. Start typing." : "沒有建議。開始輸入。",
@@ -231,9 +232,11 @@
"Error updating the share" : "更新分享出錯",
"File \"{path}\" has been unshared" : "檔案 “{path}” 已取消共享",
"Folder \"{path}\" has been unshared" : "資料夾 “{path}” 已取消共享",
+ "Share {propertyName} saved" : "分享 {propertyName} 已保存",
"Shared" : "已分享",
"Share" : "分享",
"Shared with" : "分享給",
+ "Password created successfully" : "成功創建了密碼",
"Shared with you and the group {group} by {owner}" : "由 {owner} 分享給您和 {group}群組",
"Shared with you and {circle} by {owner}" : "{owner} 分享給您和 {circle}",
"Shared with you and the conversation {conversation} by {owner}" : "{owner} 分享給您和 {conversation} 對話",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index bf4129e76f5..eeb81ee533b 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -38,6 +38,8 @@ OC.L10N.register(
"{actor} changed your email address" : "{actor} alterou seu endereço de e-mail",
"You changed your email address" : "Você alterou seu e-mail",
"Your email address was changed by an administrator" : "Seu e-mail foi alterado pelo administrador",
+ "You created an app password for a session named \"{token}\"" : "Você criou uma senha de aplicativo para uma sessão chamada \"{token}\"",
+ "An administrator created an app password for a session named \"{token}\"" : "Um administrador criou uma senha de aplicativo para uma sessão chamada \"{token}\"",
"You deleted app password \"{token}\"" : "Você excluiu a senha de aplicativo \"{token}\"",
"You renamed app password \"{token}\" to \"{newToken}\"" : "Você renomeou a senha do aplicativo \"{token}\" para \"{newToken}\"",
"You granted filesystem access to app password \"{token}\"" : "Você concedeu acesso ao sistema de arquivos para a senha do aplicativo \"{token}\"",
@@ -301,6 +303,7 @@ OC.L10N.register(
"Unable to delete additional email address" : "Incapaz de deletar endereços de e-mail adicionais",
"No email address set" : "Nenhum endereço de e-mail foi configurado",
"Additional emails" : "E-mails adicionais",
+ "Your handle" : "Seu identificador",
"Your headline" : "Seu título",
"Language" : "Idioma",
"Help translate" : "Ajude a traduzir",
@@ -408,6 +411,7 @@ OC.L10N.register(
"Phone number" : "Número de telefone",
"Role" : "Função",
"Twitter" : "Twitter",
+ "Fediverse (e.g. Mastodon)" : "Fediverse (e.x. Mastodon)",
"Website" : "Website",
"Profile visibility" : "Visibilidade do perfil",
"Not available as this property is required for core functionality including file sharing and calendar invitations" : "Não disponível porque esta propriedade é necessária para a funcionalidade principal, incluindo compartilhamento de arquivos e convites de calendário",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index 4eb7d1da5f2..04f4491d13a 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -36,6 +36,8 @@
"{actor} changed your email address" : "{actor} alterou seu endereço de e-mail",
"You changed your email address" : "Você alterou seu e-mail",
"Your email address was changed by an administrator" : "Seu e-mail foi alterado pelo administrador",
+ "You created an app password for a session named \"{token}\"" : "Você criou uma senha de aplicativo para uma sessão chamada \"{token}\"",
+ "An administrator created an app password for a session named \"{token}\"" : "Um administrador criou uma senha de aplicativo para uma sessão chamada \"{token}\"",
"You deleted app password \"{token}\"" : "Você excluiu a senha de aplicativo \"{token}\"",
"You renamed app password \"{token}\" to \"{newToken}\"" : "Você renomeou a senha do aplicativo \"{token}\" para \"{newToken}\"",
"You granted filesystem access to app password \"{token}\"" : "Você concedeu acesso ao sistema de arquivos para a senha do aplicativo \"{token}\"",
@@ -299,6 +301,7 @@
"Unable to delete additional email address" : "Incapaz de deletar endereços de e-mail adicionais",
"No email address set" : "Nenhum endereço de e-mail foi configurado",
"Additional emails" : "E-mails adicionais",
+ "Your handle" : "Seu identificador",
"Your headline" : "Seu título",
"Language" : "Idioma",
"Help translate" : "Ajude a traduzir",
@@ -406,6 +409,7 @@
"Phone number" : "Número de telefone",
"Role" : "Função",
"Twitter" : "Twitter",
+ "Fediverse (e.g. Mastodon)" : "Fediverse (e.x. Mastodon)",
"Website" : "Website",
"Profile visibility" : "Visibilidade do perfil",
"Not available as this property is required for core functionality including file sharing and calendar invitations" : "Não disponível porque esta propriedade é necessária para a funcionalidade principal, incluindo compartilhamento de arquivos e convites de calendário",
diff --git a/apps/settings/src/components/AppList/AppItem.vue b/apps/settings/src/components/AppList/AppItem.vue
index 7ff256378c2..cede668d51f 100644
--- a/apps/settings/src/components/AppList/AppItem.vue
+++ b/apps/settings/src/components/AppList/AppItem.vue
@@ -53,11 +53,13 @@
<div class="app-level">
<span v-if="app.level === 300"
- v-tooltip.auto="t('settings', 'This app is supported via your current Nextcloud subscription.')"
+ :title="t('settings', 'This app is supported via your current Nextcloud subscription.')"
+ :aria-label="t('settings', 'This app is supported via your current Nextcloud subscription.')"
class="supported icon-checkmark-color">
{{ t('settings', 'Supported') }}</span>
<span v-if="app.level === 200"
- v-tooltip.auto="t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')"
+ :title="t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')"
+ :aria-label="t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')"
class="official icon-checkmark">
{{ t('settings', 'Featured') }}</span>
<AppScore v-if="hasRating && !listView" :score="app.score" />
@@ -87,14 +89,16 @@
{{ t('settings','Disable') }}
</NcButton>
<NcButton v-if="!app.active && (app.canInstall || app.isCompatible)"
- v-tooltip.auto="enableButtonTooltip"
+ :title="enableButtonTooltip"
+ :aria-label="enableButtonTooltip"
type="primary"
:disabled="!app.canInstall || installing || isLoading"
@click.stop="enable(app.id)">
{{ enableButtonText }}
</NcButton>
<NcButton v-else-if="!app.active"
- v-tooltip.auto="forceEnableButtonTooltip"
+ :title="forceEnableButtonTooltip"
+ :aria-label="forceEnableButtonTooltip"
type="secondary"
:disabled="installing || isLoading"
@click.stop="forceEnable(app.id)">
diff --git a/apps/settings/src/views/Apps.vue b/apps/settings/src/views/Apps.vue
index 874724f73a6..1ba74c08ac5 100644
--- a/apps/settings/src/views/Apps.vue
+++ b/apps/settings/src/views/Apps.vue
@@ -98,11 +98,11 @@
<!-- Featured/Supported badges -->
<div v-if="app.level === 300 || app.level === 200 || hasRating" class="app-level">
<span v-if="app.level === 300"
- v-tooltip.auto="t('settings', 'This app is supported via your current Nextcloud subscription.')"
+ :title="t('settings', 'This app is supported via your current Nextcloud subscription.')"
class="supported icon-checkmark-color">
{{ t('settings', 'Supported') }}</span>
<span v-if="app.level === 200"
- v-tooltip.auto="t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')"
+ :title="t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')"
class="official icon-checkmark">
{{ t('settings', 'Featured') }}</span>
<AppScore v-if="hasRating" :score="app.appstoreData.ratingOverall" />
diff --git a/apps/theming/l10n/de_DE.js b/apps/theming/l10n/de_DE.js
index 3d807c489dc..166499ffe04 100644
--- a/apps/theming/l10n/de_DE.js
+++ b/apps/theming/l10n/de_DE.js
@@ -22,7 +22,7 @@ OC.L10N.register(
"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",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "Ordner 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." : "Sie benutzen bereits ein benutzerdefiniertes Design. Die App \"Theming\" würde dies überschreiben.",
"Theming" : "Design",
"Appearance and accessibility" : "Aussehen und Zugänglichkeit",
@@ -57,7 +57,7 @@ OC.L10N.register(
"Color" : "Farbe",
"Logo" : "Logo",
"Upload new logo" : "Neues Logo hochladen",
- "Background and login image" : "Hintergrund und Login-Bild",
+ "Background and login image" : "Hintergrund und Anmeldebild",
"Upload new background and login image" : "Ein neues Hintergrund- und Anmeldebild hochladen",
"Legal notice link" : "Link zum Impressum",
"Privacy policy link" : "Link zu den Datenschutzbestimmungen",
@@ -67,12 +67,12 @@ OC.L10N.register(
"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." : "Trotz der von Ihnen vorgenommenen Auswahl und Anpassung , können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn Sie Ihre Anpassung erzwingen möchten, können Sie dies hier aktivieren.",
+ "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." : "Trotz der von Ihnen vorgenommenen Auswahl und Anpassung, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn Sie Ihre Anpassung erzwingen möchten, können Sie dies hier aktivieren.",
"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 Sie sich richtig auf Ihr Werkzeug konzentrieren können, können Sie 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" : "Diese Anpassungsmöglichkeit wurde von Ihrem Administrator deaktiviert",
+ "Customization has been disabled by your administrator" : "Diese Anpassungsmöglichkeit wurde von Ihrer Administration 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 universelle 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 Sie Fehler finden, melden Sie diese bitte in {issuetracker}unserem Issue Tracker{linkend}. Und wenn Sie mithelfen möchten, treten Sie dem {designteam}Designteam{linkend} bei!",
diff --git a/apps/theming/l10n/de_DE.json b/apps/theming/l10n/de_DE.json
index 9feb8c3c875..240a17f9926 100644
--- a/apps/theming/l10n/de_DE.json
+++ b/apps/theming/l10n/de_DE.json
@@ -20,7 +20,7 @@
"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",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "Ordner 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." : "Sie benutzen bereits ein benutzerdefiniertes Design. Die App \"Theming\" würde dies überschreiben.",
"Theming" : "Design",
"Appearance and accessibility" : "Aussehen und Zugänglichkeit",
@@ -55,7 +55,7 @@
"Color" : "Farbe",
"Logo" : "Logo",
"Upload new logo" : "Neues Logo hochladen",
- "Background and login image" : "Hintergrund und Login-Bild",
+ "Background and login image" : "Hintergrund und Anmeldebild",
"Upload new background and login image" : "Ein neues Hintergrund- und Anmeldebild hochladen",
"Legal notice link" : "Link zum Impressum",
"Privacy policy link" : "Link zu den Datenschutzbestimmungen",
@@ -65,12 +65,12 @@
"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." : "Trotz der von Ihnen vorgenommenen Auswahl und Anpassung , können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn Sie Ihre Anpassung erzwingen möchten, können Sie dies hier aktivieren.",
+ "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." : "Trotz der von Ihnen vorgenommenen Auswahl und Anpassung, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn Sie Ihre Anpassung erzwingen möchten, können Sie dies hier aktivieren.",
"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 Sie sich richtig auf Ihr Werkzeug konzentrieren können, können Sie 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" : "Diese Anpassungsmöglichkeit wurde von Ihrem Administrator deaktiviert",
+ "Customization has been disabled by your administrator" : "Diese Anpassungsmöglichkeit wurde von Ihrer Administration 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 universelle 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 Sie Fehler finden, melden Sie diese bitte in {issuetracker}unserem Issue Tracker{linkend}. Und wenn Sie mithelfen möchten, treten Sie dem {designteam}Designteam{linkend} bei!",
diff --git a/apps/theming/lib/Jobs/MigrateBackgroundImages.php b/apps/theming/lib/Jobs/MigrateBackgroundImages.php
index 54c0d591e40..97665d1179f 100644
--- a/apps/theming/lib/Jobs/MigrateBackgroundImages.php
+++ b/apps/theming/lib/Jobs/MigrateBackgroundImages.php
@@ -68,10 +68,9 @@ class MigrateBackgroundImages extends QueuedJob {
$this->logger = $logger;
}
- protected function run($argument): void {
- if (!isset($argument['stage'])) {
- // not executed in 25.0.0?!
- $argument['stage'] = self::STAGE_PREPARE;
+ protected function run(mixed $argument): void {
+ if (!is_array($argument) || !isset($argument['stage'])) {
+ throw new \Exception('Job '.self::class.' called with wrong argument');
}
switch ($argument['stage']) {
@@ -99,10 +98,10 @@ class MigrateBackgroundImages extends QueuedJob {
$userIds = $result->fetchAll(\PDO::FETCH_COLUMN);
$this->storeUserIdsToProcess($userIds);
} catch (\Throwable $t) {
- $this->jobList->add(self::class, self::STAGE_PREPARE);
+ $this->jobList->add(self::class, ['stage' => self::STAGE_PREPARE]);
throw $t;
}
- $this->jobList->add(self::class, self::STAGE_EXECUTE);
+ $this->jobList->add(self::class, ['stage' => self::STAGE_EXECUTE]);
}
/**
diff --git a/apps/updatenotification/l10n/pt_BR.js b/apps/updatenotification/l10n/pt_BR.js
index b4235ce36b7..66048897efa 100644
--- a/apps/updatenotification/l10n/pt_BR.js
+++ b/apps/updatenotification/l10n/pt_BR.js
@@ -8,6 +8,7 @@ OC.L10N.register(
"The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.",
"Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ",
"Update to %1$s is available." : "Atualização para %1$s está disponível.",
+ "Update to {serverAndVersion} is available." : "A atualização para {serverAndVersion} está disponível.",
"Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.",
"Update notification" : "Notificação de atualização",
"Displays update notifications for Nextcloud and provides the SSO for the updater." : "Exibe notificações de atualização para o Nextcloud e fornece o SSO para o atualizador.",
diff --git a/apps/updatenotification/l10n/pt_BR.json b/apps/updatenotification/l10n/pt_BR.json
index a5cee01893a..63206f79982 100644
--- a/apps/updatenotification/l10n/pt_BR.json
+++ b/apps/updatenotification/l10n/pt_BR.json
@@ -6,6 +6,7 @@
"The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.",
"Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ",
"Update to %1$s is available." : "Atualização para %1$s está disponível.",
+ "Update to {serverAndVersion} is available." : "A atualização para {serverAndVersion} está disponível.",
"Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.",
"Update notification" : "Notificação de atualização",
"Displays update notifications for Nextcloud and provides the SSO for the updater." : "Exibe notificações de atualização para o Nextcloud e fornece o SSO para o atualizador.",
diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js
index ae3367e3c77..a0c9a79f02c 100644
--- a/apps/user_ldap/l10n/fr.js
+++ b/apps/user_ldap/l10n/fr.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"No action specified" : "Aucune action spécifiée",
"No configuration specified" : "Aucune configuration spécifiée",
"No data specified" : "Aucune donnée spécifiée",
+ "Invalid data specified" : "Données spécifiées invalides",
" Could not set configuration %s" : "Impossible d'appliquer la configuration %s",
"Action does not exist" : "L'action n'existe pas",
"Renewing …" : "Renouvellement en cours...",
diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json
index 064fa3e9e6e..bbaaf94c185 100644
--- a/apps/user_ldap/l10n/fr.json
+++ b/apps/user_ldap/l10n/fr.json
@@ -8,6 +8,7 @@
"No action specified" : "Aucune action spécifiée",
"No configuration specified" : "Aucune configuration spécifiée",
"No data specified" : "Aucune donnée spécifiée",
+ "Invalid data specified" : "Données spécifiées invalides",
" Could not set configuration %s" : "Impossible d'appliquer la configuration %s",
"Action does not exist" : "L'action n'existe pas",
"Renewing …" : "Renouvellement en cours...",
diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js
index 17ab6885797..3113866cd83 100644
--- a/apps/user_ldap/l10n/pt_BR.js
+++ b/apps/user_ldap/l10n/pt_BR.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhum dado especificado",
+ "Invalid data specified" : "Dados inválidos especificados",
" Could not set configuration %s" : "Não foi possível definir a configuração %s",
"Action does not exist" : "A ação não existe",
"Renewing …" : "Renovando...",
diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json
index 1471118c394..5622016391b 100644
--- a/apps/user_ldap/l10n/pt_BR.json
+++ b/apps/user_ldap/l10n/pt_BR.json
@@ -8,6 +8,7 @@
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhum dado especificado",
+ "Invalid data specified" : "Dados inválidos especificados",
" Could not set configuration %s" : "Não foi possível definir a configuração %s",
"Action does not exist" : "A ação não existe",
"Renewing …" : "Renovando...",
diff --git a/build/ca-bundle-etag.txt b/build/ca-bundle-etag.txt
index ea1dcbf2cad..2ece7ac0157 100644
--- a/build/ca-bundle-etag.txt
+++ b/build/ca-bundle-etag.txt
@@ -1 +1 @@
-"3707b-5eab9a4124dc3"
+"34e07-5f1e11637ec19"
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 5344330aa58..431f6c58039 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -31,6 +31,7 @@ OC.L10N.register(
"Password reset is disabled" : "A redefinição de senha está desabilitada",
"Could not reset password because the token is expired" : "Não foi possível redefinir a senha porque o token expirou",
"Could not reset password because the token is invalid" : "Não foi possível redefinir a senha porque o token é inválido",
+ "Password is too long. Maximum allowed length is 469 characters." : "A senha é muito longa. O comprimento máximo permitido é de 469 caracteres.",
"%s password reset" : "%s redefinir senha",
"Password reset" : "Redefinir a senha",
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Clique no botão abaixo para redefinir sua senha. Se você não solicitou isso, ignore este e-mail.",
@@ -342,6 +343,7 @@ OC.L10N.register(
"See the documentation" : "Veja a documentação",
"It looks like you are trying to reinstall your Nextcloud. However the file CAN_INSTALL is missing from your config directory. Please create the file CAN_INSTALL in your config folder to continue." : "Parece que você está tentando reinstalar o Nextcloud. No entanto, o arquivo CAN_INSTALL está faltando no diretório de configuração. Crie o arquivo CAN_INSTALL na pasta de configuração para continuar.",
"Could not remove CAN_INSTALL from the config folder. Please remove this file manually." : "Não foi possível remover CAN_INSTALL da pasta de configuração. Remova este arquivo manualmente.",
+ "%s logo" : "%s logo",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Este aplicativo requer JavaScript para sua correta operação. Por favor {linkstart}habilite o JavaScript{linkend} e recarregue a página.",
"Skip to main content" : "Ir ao conteúdo principal",
"Skip to navigation of app" : "Ir à navegação do aplicativo",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 3e56a282546..62e07043521 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -29,6 +29,7 @@
"Password reset is disabled" : "A redefinição de senha está desabilitada",
"Could not reset password because the token is expired" : "Não foi possível redefinir a senha porque o token expirou",
"Could not reset password because the token is invalid" : "Não foi possível redefinir a senha porque o token é inválido",
+ "Password is too long. Maximum allowed length is 469 characters." : "A senha é muito longa. O comprimento máximo permitido é de 469 caracteres.",
"%s password reset" : "%s redefinir senha",
"Password reset" : "Redefinir a senha",
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Clique no botão abaixo para redefinir sua senha. Se você não solicitou isso, ignore este e-mail.",
@@ -340,6 +341,7 @@
"See the documentation" : "Veja a documentação",
"It looks like you are trying to reinstall your Nextcloud. However the file CAN_INSTALL is missing from your config directory. Please create the file CAN_INSTALL in your config folder to continue." : "Parece que você está tentando reinstalar o Nextcloud. No entanto, o arquivo CAN_INSTALL está faltando no diretório de configuração. Crie o arquivo CAN_INSTALL na pasta de configuração para continuar.",
"Could not remove CAN_INSTALL from the config folder. Please remove this file manually." : "Não foi possível remover CAN_INSTALL da pasta de configuração. Remova este arquivo manualmente.",
+ "%s logo" : "%s logo",
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Este aplicativo requer JavaScript para sua correta operação. Por favor {linkstart}habilite o JavaScript{linkend} e recarregue a página.",
"Skip to main content" : "Ir ao conteúdo principal",
"Skip to navigation of app" : "Ir à navegação do aplicativo",
diff --git a/core/src/views/Login.vue b/core/src/views/Login.vue
index 588369e5408..4afa81d0dfa 100644
--- a/core/src/views/Login.vue
+++ b/core/src/views/Login.vue
@@ -109,8 +109,7 @@
:wide="true"
:class="[alternativeLogin.class]"
role="link"
- :href="alternativeLogin.href"
- @click="goTo(alternativeLogin.href)">
+ :href="alternativeLogin.href">
{{ alternativeLogin.name }}
</NcButton>
</div>
@@ -184,9 +183,6 @@ export default {
this.resetPasswordTarget = ''
this.directLogin = true
},
- goTo(href) {
- window.location.href = href
- },
},
}
</script>
diff --git a/dist/core-login.js b/dist/core-login.js
index 2a0cd0211db..6d8632f1a27 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={83468:function(e,o,r){"use strict";var i=r(20144),a=r(78595),s=r(19755),l=r.n(s),c=r(79753),u={},d=[],f=r(18181),p=r(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||!Mt.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})):Mt.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=r(72316),C=r.n(P),A=r(76591),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 r=o;o in e&&(r=e[o]),n[r]=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 j(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var r=e[n],i=t[n];r||(console.warn('No matching DAV property for property "'+n),r=n),(f.ZP.isBoolean(i)||f.ZP.isNumber(i))&&(i=""+i),o[r]=i}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 E=C().noConflict();Object.assign(E,{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?j(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(r){T(r.status)?j(t,e,n,o):f.ZP.isFunction(e.error)&&e.error(r)}))}(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(),r=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&r&&(o.id=O(r)),void e.success(o)}if(207===t.status){var i=f.ZP.invert(e.davProperties);e.success(x(t.body,i))}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 r={type:k[e]||e},i=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?r.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(r.type="PUT")),o.url||(r.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||(r.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==r.type&&(r.processData=!1),"PROPFIND"===r.type||"PROPPATCH"===r.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(f.ZP.isFunction(a)?r.davProperties=a.call(n):r.davProperties=a),r.davProperties=f.ZP.extend(r.davProperties||{},o.davProperties),f.ZP.isUndefined(o.depth)&&(o.depth=i?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(r,o),n);return n.trigger("request",n,l,o),l}}(E)});var S=E,L=r(65358),N=window._oc_config||{},I=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)}}),$=P.Collection.extend({model:I}),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:r(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:r(95386),error:r(20421),menu:r(66115),list:r(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:Mt.generateUrl("/apps/contacts"),canInstallApp:Mt.isUserAdmin(),contactsAppMgmtURL:Mt.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),Mt.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=Mt.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 $(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){return q="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},q(t)}function H(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,(void 0,r=function(t,e){if("object"!==q(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==q(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(o.key,"string"),"symbol"===q(r)?r:String(r)),o)}var r}function Y(t,e,n){return e&&H(t.prototype,e),n&&H(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var K={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")}))},V=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key};function G(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}function W(t){return function(){var e=this,n=arguments;return new Promise((function(o,r){var i=t.apply(e,n);function a(t){G(i,o,r,a,s,"next",t)}function s(t){G(i,o,r,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 Q,X,tt,et,nt={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",nt.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",nt.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",nt.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,r){return this.message(t,e,"none",n,o,void 0===r||r)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",nt.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,r,i,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+nt.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",i);var h=l()("<label/>").attr("for",c+"-input").text(i+": ");d.append(h),d.append(p),void 0===r&&(r=!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:r,buttons:m,close:function(){void 0!==o&&o(!1,p.val())}}),p.focus(),nt.dialogsCounter++}))},filepicker:function(e,n,o,r,i,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=K.Sharing&&K.Sharing.PublicApp&&K.Sharing.PublicApp.fileList?K.Sharing.PublicApp.fileList.filesClient:Mt.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==r&&(r=[]),"string"==typeof r&&(r=[r]),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",r).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===i&&(i=!1),void 0===o&&(o=!1),l()("body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){V(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")})),Mt.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){V(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(Mt.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)})),Mt.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){V(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){V(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(V(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 r=u.$filelist.find("tr.filepicker_element_selected").data("entryname");r&&(e+="/"+r)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];a===nt.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){y(nt.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===nt.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){w.push({text:t.text,click:function(){y(t.type)},defaultButton:t.defaultButton})})):(a!==nt.FILEPICKER_TYPE_COPY&&a!==nt.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){y(nt.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==nt.FILEPICKER_TYPE_MOVE&&a!==nt.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){y(nt.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:i,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,r,i,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+nt.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(r){case nt.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case nt.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==i&&i()},defaultButton:!0};break;default:"object"===J(r)&&r.type===nt.YES_NO_BUTTONS&&(p=[{text:r.cancel||t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:r.confirm||t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:r.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){i&&i(!1)},modal:a,buttons:p}),nt.dialogsCounter++})).fail((function(o,r){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:r}))}))},_fileexistsshown:!1,fileexists:function(e,o,r,i){var a=this,s=new(l().Deferred),c=function(t,e,n,o,r){o=Math.round(o),r=Math.round(r);for(var i=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,r),s=i.data,l=a.data,c=e/o,u=n/r,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<r;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 j=Math.abs(x-(T+.5))/d,E=Math.sqrt(O+j*j);E>=-1&&E<=1&&(g=2*E*E*E-3*E*E+1)>0&&(P+=g*s[3+(j=4*(T+A*e))],y+=g,s[j+3]<255&&(g=g*s[j+3]/250),w+=g*s[j],b+=g*s[j+1],_+=g*s[j+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,r)),t.width=o,t.height=r,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,r){var i=n.find(".template").clone().removeClass("template").addClass("conflict"),a=i.find(".original"),s=i.find(".replacement");i.data("data",e),i.find(".filename").text(o.name),a.find(".size").text(Mt.Util.humanFileSize(o.size)),a.find(".mtime").text(Mt.Util.formatDate(o.mtime)),r.size&&r.lastModified&&(s.find(".size").text(Mt.Util.humanFileSize(r.size)),s.find(".mtime").text(Mt.Util.formatDate(r.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),r=new Image;r.src=o,r.onload=function(){var t,n,o,i,a,s,l,u=(t=r,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),i=Math.min(s,l),a.width=i,a.height=i,a.getContext("2d").drawImage(t,n,o,i,i,0,0,i,i),c(a,i,i,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Mt.MimeType.getIconUrl(r.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(i),r.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):r.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),r.size&&r.size>o.size?s.find(".size").css("font-weight","bold"):r.size&&r.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,r);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&&r){var h=p.find(".conflicts");u(h,o,r)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==i.onCancel&&i.onCancel(e),l()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==i.onContinue&&i.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(Mt.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");Mt.currentUser&&l().post(Mt.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")),this.$filePicker.find(".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(Mt.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(Mt.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(Mt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_fillFilePicker:(Q=W(regeneratorRuntime.mark((function e(n){var o,r,i,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),r=this.$filePicker.data("mimetype"),i=this.$filePicker.data("filter"),"string"==typeof r&&(r=[r]),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=W(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,r&&r.length>0&&-1===r.indexOf("*")&&(s=s.filter((function(t){return"dir"===t.type||-1!==r.indexOf(t.mimetype)}))),i&&(s=s.filter(i)),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:Mt.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(Mt.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,r){var i,a;if(r.isEncrypted&&"httpd/unix-directory"===r.mimetype?r.icon=Mt.MimeType.getIconUrl("dir-encrypted"):r.icon=Mt.MimeType.getIconUrl(r.mimetype),void 0!==r.size&&r.size>=0?(i=Mt.Util.humanFileSize(parseInt(r.size,10),!0),a=Math.round(160-Math.pow(r.size/1048576,2))):(i=t("files","Pending"),a=80),r.name.length>=10)var s=Math.min(Math.floor(r.name.length/2),10),c=r.name.substr(0,r.name.length-s),u=r.name.substr(r.name.length-s);else c=r.name,u="";var d=o.$listTmpl.octemplate({type:r.type,dir:n,filename:r.name,filename1:c,filename2:u,date:Mt.Util.relativeModifiedDate(r.mtime),size:i,sizeColor:a,icon:r.icon});if("file"===r.type){var f={file:n+"/"+r.name,x:100,y:100},p=new Image,h=Mt.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 Q.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 r=n.split("/");l().each(r,(function(t,n){if(""===(n=r.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:r.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 r=t.target.closest(".oc-dialog"),i=l()(".primary",r);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.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}),r=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),i=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:i.text(o);break;case this.FILEPICKER_TYPE_MOVE:i.text(r);break;case this.FILEPICKER_TYPE_COPY_MOVE:i.eq(0).text(o),i.eq(1).text(r)}}},ot=nt,rt=(X=document,tt=a.j8,et=X.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return et},setToken:function(t){tt("csrf-token-update",{token:et=t})}}).getToken,it=function t(e,n){var o,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)i+=o+"="+encodeURIComponent(n[o])+"&";if(i+="requesttoken="+encodeURIComponent(rt()),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(),r="&",-1===e.indexOf("?")&&(r="?"),this.iframe.attr("src",e+r+"fallback=true&fallback_id="+t.iframeCount+"&"+i),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else r="&",-1===e.indexOf("?")&&(r="?"),this.source=new EventSource(e+r+i),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 at=it,st=r(42515),lt=null,ct=null,ut=function(t){if(lt){var e=lt;lt.trigger(new(l().Event)("beforeHide")),lt.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),ct&&ct.attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),lt=null,ct=null},dt=!!window._oc_isadmin,ft=r(27856),pt=r.n(ft),ht=r(86834),mt=r.n(ht),gt=r(46488),vt=r.n(gt),yt=r(95573),wt=r.n(yt);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var bt=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},_t=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function Pt(t){return Pt="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},Pt(t)}var Ct={load:function(t,e){if(bt(t)||"en"===Mt.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var r=this,i=(0,c.generateFilePath)(t,"l10n",Mt.getLocale()+".json");return l().get(i).then((function(e){e.translations&&r.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,r;n=t,o=e,r=this._getPlural,bt(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,r):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,r)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,r){var i=r||{};f.ZP.defaults(i,{escape:!0,sanitize:!0});var a=i.sanitize?pt().sanitize:vt(),s=i.escape?wt():vt(),l=e,c=_t(t).translations[e];return void 0!==c&&(l=c),"object"===Pt(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,r,i){var a="_"+e+"_::_"+n+"_",s=_t(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],r,o,i)}}return 1===o?this.translate(t,e,r,o,i):this.translate(t,n,r,o,i)},_getPlural:function(t){var e=Mt.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}}},At=Ct;mt().registerHelper("t",(function(t,e){return Ct.translate(t,e)}));var kt=r(9944),xt={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()}},Ot=r(30381),Tt=r.n(Ot),jt={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",f.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Tt().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Tt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var r={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:""},i=f.ZP.extend(r,n),a=this;this.requiresPasswordConfirmation()&&Mt.dialogs.prompt(i.text,i.title,(function(t,e){t&&""!==e?a._confirmPassword(e,i):f.ZP.isFunction(o)&&o()}),!0,i.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==i.error){var e=l()("<p></p>").addClass("msg warning").text(i.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(i.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"),Mt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Et=window._theme||{},St={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Mt.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 r,i=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=i.length;a<s;a++)(r=i[a]).style.fill=r.style.fill,r.style.stroke=r.style.stroke,r.removeAttribute("filter"),r.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=Mt.parseQueryString(this._decodeQuery(e))),(t=f.ZP.extend(t||{},Mt.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=Mt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function Lt(t){for(var e,n=[],o=0,r=-1,i=0;o<t.length;){e=t.charAt(o);var a=!i&&"."===e||e>="0"&&e<="9";a!==i&&(n[++r]="",i=a),n[r]+=e,o++}return n}var Nt={History:St,humanFileSize:r(91770).sS,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",Tt()(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=Tt()().diff(Tt()(e));return n>=0&&n<45e3?t("core","seconds ago"):Tt()(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=Lt(t),r=Lt(e);for(n=0;o[n]&&r[n];n++)if(o[n]!==r[n]){var i=Number(o[n]),a=Number(r[n]);return i==o[n]&&a==r[n]?i-a:o[n].localeCompare(r[n],Mt.getLanguage())}return o.length-r.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 r=n[o].split("=");if(r[0].trim()===t&&r[1].trim()===e)return!0}return!1}},It=window._oc_debug,$t=window._oc_webroot;if(void 0===$t){var Ut=($t=location.pathname).indexOf("/index.php/");$t=-1!==Ut?$t.substr(0,Ut):$t.substr(0,$t.lastIndexOf("/"))}var Ft,Rt=$t,Mt={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 r=(0,c.generateFilePath)(t,"js",e+".js");return u[r]?n&&n():(o=l().Deferred(),l().getScript(r,(function(){return o.resolve()})),u[r]=o),u[r]},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 r=l()("#appsettings_popup");if(0===r.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(r=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),r.is(":visible"))r.hide().remove();else{var i=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){r.html(e).ready((function(){if(r.prepend('<span class="arrow '+i+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),r.find(".close").bind("click",(function(){r.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:ot,EventSource:at,getCurrentUser:function(){return{uid:Z,displayName:D}},isUserAdmin:function(){return dt},L10N:At,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Mt._reloadCalled)&&(f.ZP.contains([302,303,307,401],t.status)&&Mt.currentUser?setTimeout((function(){if(!Mt._userIsNavigatingAway&&!Mt._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),Mt.reload()),t++}),1e3);Mt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Mt._userIsNavigatingAway||Mt._reloadCalled||Mt._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,st.getCapabilities)()},hideMenus:ut,registerMenu:function(t,e,n,o){e.addClass("menu");var r="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(r?"click.menu":"click.menu keyup.menu",(function(r){r.preventDefault(),r.key&&"Enter"!==r.key||(e.is(lt)?ut():(lt&&ut(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),lt=e,ct=t))}))},showMenu:function(t,e,n){e.is(lt)||(ut(),lt=e,ct=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(lt)&&ut(),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:At.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,r={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var i=t.replace(/\+/g,"%20").split("&"),a=0;a<i.length;a++){var s=i[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(r[o]=n.length>1?decodeURIComponent(n[1]):null)}return r},msg:xt,Notification:h,PasswordConfirmation:jt,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),r=0;r<o.length;r++)o[r].attach&&o[r].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].detach&&o[r].detach(e,n)}},theme:Et,Util:Nt,debug:It,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Ft=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Ft=Ft[e[o]]))return!1;return Ft[n]}),set:function(t){return function(e,n){for(var o=e.split("."),r=o.pop(),i=0;i<o.length;i++)t[o[i]]||(t[o[i]]={}),t=t[o[i]];return t[r]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:rt(),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:Rt};(0,a.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var zt=r(79954),Bt=r(17563),Dt=r(22660),Zt=r.n(Dt),qt=r(10204),Ht=r.n(qt),Yt=r(57290),Kt=r.n(Yt),Vt=r(10861),Gt=r.n(Vt),Wt={name:"LoginButton",components:{ArrowRight:r(39429).default,NcButton:Gt()},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}}},Jt=r(93379),Qt=r.n(Jt),Xt=r(7795),te=r.n(Xt),ee=r(90569),ne=r.n(ee),oe=r(3565),re=r.n(oe),ie=r(19216),ae=r.n(ie),se=r(44589),le=r.n(se),ce=r(49665),ue={};ue.styleTagTransform=le(),ue.setAttributes=re(),ue.insert=ne().bind(null,"head"),ue.domAPI=te(),ue.insertStyleElement=ae(),Qt()(ce.Z,ue),ce.Z&&ce.Z.locals&&ce.Z.locals;var de=r(51900),fe=(0,de.Z)(Wt,(function(){var t=this,e=t._self._c;return e("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?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("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,pe={name:"LoginForm",components:{LoginButton:fe,NcPasswordField:Zt(),NcTextField:Ht(),NcNoteCard:Kt()},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(){var e,n;return{loading:!1,timezone:null===(e=new Intl.DateTimeFormat)||void 0===e||null===(n=e.resolvedOptions())||void 0===n?void 0:n.timeZone,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>5e3},errorLabel:function(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):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")}}},he=r(3591),me={};me.styleTagTransform=le(),me.setAttributes=re(),me.insert=ne().bind(null,"head"),me.domAPI=te(),me.insertStyleElement=ae(),Qt()(he.Z,me),he.Z&&he.Z.locals&&he.Z.locals;var ge=(0,de.Z)(pe,(function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("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?e("NcNoteCard",t._l(t.messages,(function(n,o){return e("div",{key:o},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])})),0):t._e(),t._v(" "),t.internalException?e("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(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""},domProps:{innerHTML:t._s(t.headline)}}),t._v(" "),e("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:"","data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("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,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"5bd351bc",null).exports,ve=r(4820),ye=r(37838),we=r(38213);function be(t){return be="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},be(t)}function _e(t){return function(t){if(Array.isArray(t))return Pe(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 Pe(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)?Pe(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 Pe(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 Ce(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?Ce(Object(n),!0).forEach((function(e){ke(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ce(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function ke(t,e,n){return(e=xe(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function xe(t){var e=function(t,e){if("object"!==be(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==be(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"===be(e)?e:String(e)}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"===be(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 je(t){var e="function"==typeof Map?new Map:void 0;return je=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 Ee(t,arguments,Ne(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Le(o,t)},je(t)}function Ee(t,e,n){return Ee=Se()?Reflect.construct.bind():function(t,e,n){var o=[null];o.push.apply(o,e);var r=new(Function.bind.apply(t,o));return n&&Le(r,n.prototype),r},Ee.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?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Le(t,e)}function Ne(t){return Ne=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ne(t)}var Ie=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)}(i,t);var e,n,o,r=(e=i,n=Se(),function(){var t,o=Ne(e);if(n){var r=Ne(this).constructor;t=Reflect.construct(o,arguments,r)}else t=o.apply(this,arguments);return Te(this,t)});function i(){return Oe(this,i),r.apply(this,arguments)}return o=i,Object.defineProperty(o,"prototype",{writable:!1}),o}(je(Error)),$e={name:"PasswordLessLoginForm",components:{LoginButton:fe,InformationIcon:ye.Z,LockOpenIcon:we.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 Ie?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"),ve.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 Ie;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,_e(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,_e(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"),ve.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){var e=t.defaultRedirectUrl;console.debug("Logged in redirecting"),window.location.href=o||e})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},Ue=r(43848),Fe={};Fe.styleTagTransform=le(),Fe.setAttributes=re(),Fe.insert=ne().bind(null,"head"),Fe.domAPI=te(),Fe.insertStyleElement=ae(),Qt()(Ue.Z,Fe),Ue.Z&&Ue.Z.locals&&Ue.Z.locals;var Re=(0,de.Z)($e,(function(){var t=this,e=t._self._c;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?e("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",{staticClass:"grouptop groupbottom"},[e("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),e("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():e("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?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():e("div",{staticClass:"body-login-container update"},[e("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),e("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):e("div",{staticClass:"body-login-container update"},[e("InformationIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),e("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,"20256748",null),Me=Re.exports,ze={name:"ResetPassword",components:{LoginButton:fe,NcNoteCard:Kt(),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 ve.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=r(28032),De={};De.styleTagTransform=le(),De.setAttributes=re(),De.insert=ne().bind(null,"head"),De.domAPI=te(),De.insertStyleElement=ae(),Qt()(Be.Z,De),Be.Z&&Be.Z.locals&&Be.Z.locals;var Ze=(0,de.Z)(ze,(function(){var t=this,e=t._self._c;return e("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",{staticClass:"login-form__fieldset"},[e("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(" "),e("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?e("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"),e("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?e("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?e("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(" "),e("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,"27cabc60",null),qe=Ze.exports;function He(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}var Ye={name:"UpdatePassword",components:{LoginButton:fe},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,r;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,ve.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(r=o.data)||"success"!==r.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(!r||!r.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!r||!r.msg){e.next=22;break}throw new Error(r.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,r){var i=e.apply(t,n);function a(t){He(i,o,r,a,s,"next",t)}function s(t){He(i,o,r,a,s,"throw",t)}a(void 0)}))})()}}},Ke=Ye,Ve=r(74778),Ge={};Ge.styleTagTransform=le(),Ge.setAttributes=re(),Ge.insert=ne().bind(null,"head"),Ge.domAPI=te(),Ge.insertStyleElement=ae(),Qt()(Ve.Z,Ge),Ve.Z&&Ve.Z.locals&&Ve.Z.locals;var We=(0,de.Z)(Ke,(function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("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?e("div",{staticClass:"update"},[e("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(" "),e("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,r=!!o.checked;if(Array.isArray(n)){var i=t._i(n,null);o.checked?i<0&&(t.proceed=n.concat([null])):i>-1&&(t.proceed=n.slice(0,i).concat(n.slice(i+1)))}else t.proceed=r}}}),t._v(" "),e("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(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("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),Je=We.exports,Qe=Bt.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:ge,PasswordLessLoginForm:Me,ResetPassword:qe,UpdatePassword:Je,NcButton:Gt(),NcNoteCard:Kt()},data:function(){return{loading:!1,user:(0,zt.j)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,zt.j)("core","loginErrors",[]),messages:(0,zt.j)("core","loginMessages",[]),redirectUrl:(0,zt.j)("core","loginRedirectUrl",!1),throttleDelay:(0,zt.j)("core","loginThrottleDelay",0),canResetPassword:(0,zt.j)("core","loginCanResetPassword",!1),resetPasswordLink:(0,zt.j)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,zt.j)("core","loginAutocomplete",!0),resetPasswordTarget:(0,zt.j)("core","resetPasswordTarget",""),resetPasswordUser:(0,zt.j)("core","resetPasswordUser",""),directLogin:"1"===Qe.direct,hasPasswordless:(0,zt.j)("core","webauthn-available",!1),countAlternativeLogins:(0,zt.j)("core","countAlternativeLogins",!1),alternativeLogins:(0,zt.j)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,zt.j)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0},goTo:function(t){window.location.href=t}}},tn=r(22089),en={};en.styleTagTransform=le(),en.setAttributes=re(),en.insert=ne().bind(null,"head"),en.domAPI=te(),en.insertStyleElement=ae(),Qt()(tn.Z,en),tn.Z&&tn.Z.locals&&tn.Z.locals;var nn=(0,de.Z)(Xe,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?e("div",[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset",staticClass:"login-additional"},[e("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(" "),e("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?e("div",{key:"reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("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?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",[e("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?e("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?e("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?e("div",{staticClass:"alternative-logins"},[t.hasPasswordless?e("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()]):e("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):e("div",[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("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(" "),e("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(n,o){return e("NcButton",{key:o,class:[n.class],attrs:{type:"secondary",wide:!0,role:"link",href:n.href},on:{click:function(e){return t.goTo(n.href)}}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,on={data:function(){return{OC:Mt}},methods:{t:At.translate.bind(At),n:At.translatePlural.bind(At)}};i.ZP.mixin(on),(new(i.ZP.extend(nn))).$mount("#login")},49665:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".button-vue[data-v-756414a8]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]),e.Z=a},3591:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".login-form[data-v-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",sourcesContent:["\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},43848:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".body-login-container.update[data-v-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\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},28032:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{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:"AACA,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.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},22089:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());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:"AACA,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:["\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},74778:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());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:";AA4IA;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,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(2,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?i:""},2:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.noop,data:r,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?i:""},3:function(t,e,n,o,r){var i,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!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,r){var i,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!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(8,r,0),inverse:t.program(11,r,0),data:r,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?i:""},8:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(9,r,0),inverse:t.noop,data:r,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?i:""},9:function(t,e,n,o,r){var i,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!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,r){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(14,r,0),inverse:t.noop,data:r,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"topAction"):i,{name:"if",hash:{},fn:t.program(16,r,0),inverse:t.noop,data:r,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?i:"")},14:function(t,e,n,o,r){var i,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!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,r){var i,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!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t\t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"topAction"):i,{name:"if",hash:{},fn:t.program(19,r,0),inverse:t.program(21,r,0),data:r,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?i:""},19:function(t,e,n,o,r){var i,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!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n \t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t</a>\n'},21:function(t,e,n,o,r){var i,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!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,r){var i,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!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n</a>\n'},25:function(t,e,n,o,r){var i,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!=(i=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"actions"):i,{name:"each",hash:{},fn:t.program(26,r,0),inverse:t.noop,data:r,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?i:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,r){var i,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(i=null!=(i=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?i:s)===l?i.call(a,{name:"hyperlink",hash:{},data:r,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):i)+'">\n\t\t\t\t\t<img src="'+c(typeof(i=null!=(i=u(n,"icon")||(null!=e?u(e,"icon"):e))?i:s)===l?i.call(a,{name:"icon",hash:{},data:r,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):i)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(i=null!=(i=u(n,"title")||(null!=e?u(e,"title"):e))?i:s)===l?i.call(a,{name:"title",hash:{},data:r,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):i)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"avatar"):i,{name:"if",hash:{},fn:t.program(1,r,0),inverse:t.program(7,r,0),data:r,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(13,r,0),inverse:t.program(18,r,0),data:r,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasTwoActions"):i,{name:"if",hash:{},fn:t.program(23,r,0),inverse:t.noop,data:r,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasManyActions"):i,{name:"if",hash:{},fn:t.program(25,r,0),inverse:t.noop,data:r,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?i:"")},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,r){var i,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(i=null!=(i=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):i)+"</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,r){var i,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(i=null!=(i=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:r,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):i)+"</h2>\n</div>\n"},3:function(t,e,n,o,r){var i,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(i=null!=(i=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?i:s)===l?i.call(a,{name:"contactsAppURL",hash:{},data:r,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?i:s)===l?i.call(a,{name:"showAllContactsText",hash:{},data:r,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):i)+"</a></div>\n"},5:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,r,0),inverse:t.noop,data:r,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?i:""},6:function(t,e,n,o,r){var i,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(i=null!=(i=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtURL",hash:{},data:r,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtText",hash:{},data:r,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):i)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"unless").call(a,null!=(i=null!=e?s(e,"contacts"):e)?s(i,"length"):i,{name:"unless",hash:{},fn:t.program(1,r,0),inverse:t.noop,data:r,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?i:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(i=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?i:"")},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,r){var i,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(i=null!=(i=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):i)+"</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,r){var i,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(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):i)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):i)+'" value="'+c(typeof(i=null!=(i=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?i:s)===l?i.call(a,{name:"searchTerm",hash:{},data:r,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):i)+'">\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 r(t){var e=i(t);return n(e)}function i(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}r.keys=function(){return Object.keys(o)},r.resolve=i,t.exports=r,r.id=46700}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var n=r[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,e=[],i.O=function(t,n,o,r){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],r=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&r||a>=r)&&Object.keys(i.O).every((function(t){return i.O[t](n[l])}))?n.splice(l--,1):(s=!1,r<a&&(a=r));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[n,o,r]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=4577,function(){i.b=document.baseURI||self.location.href;var t={4577:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,r,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)var u=l(i)}for(e&&e(n);c<a.length;c++)r=a[c],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(83468)}));a=i.O(a)}();
-//# sourceMappingURL=core-login.js.map?v=3487e04e03c4b8250d1a \ No newline at end of file
+!function(){var e,o={99458:function(e,o,r){"use strict";var i=r(20144),a=r(78595),s=r(19755),l=r.n(s),c=r(79753),u={},d=[],f=r(18181),p=r(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||!Mt.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})):Mt.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=r(72316),C=r.n(P),A=r(76591),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 r=o;o in e&&(r=e[o]),n[r]=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 j(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var r=e[n],i=t[n];r||(console.warn('No matching DAV property for property "'+n),r=n),(f.ZP.isBoolean(i)||f.ZP.isNumber(i))&&(i=""+i),o[r]=i}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 E=C().noConflict();Object.assign(E,{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?j(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(r){T(r.status)?j(t,e,n,o):f.ZP.isFunction(e.error)&&e.error(r)}))}(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(),r=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&r&&(o.id=O(r)),void e.success(o)}if(207===t.status){var i=f.ZP.invert(e.davProperties);e.success(x(t.body,i))}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 r={type:k[e]||e},i=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?r.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(r.type="PUT")),o.url||(r.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||(r.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==r.type&&(r.processData=!1),"PROPFIND"===r.type||"PROPPATCH"===r.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(f.ZP.isFunction(a)?r.davProperties=a.call(n):r.davProperties=a),r.davProperties=f.ZP.extend(r.davProperties||{},o.davProperties),f.ZP.isUndefined(o.depth)&&(o.depth=i?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(r,o),n);return n.trigger("request",n,l,o),l}}(E)});var S=E,L=r(65358),N=window._oc_config||{},I=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)}}),$=P.Collection.extend({model:I}),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:r(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:r(95386),error:r(20421),menu:r(66115),list:r(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:Mt.generateUrl("/apps/contacts"),canInstallApp:Mt.isUserAdmin(),contactsAppMgmtURL:Mt.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),Mt.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=Mt.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 $(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){return q="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},q(t)}function H(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,(void 0,r=function(t,e){if("object"!==q(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==q(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(o.key,"string"),"symbol"===q(r)?r:String(r)),o)}var r}function Y(t,e,n){return e&&H(t.prototype,e),n&&H(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var K={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")}))},V=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key};function G(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}function W(t){return function(){var e=this,n=arguments;return new Promise((function(o,r){var i=t.apply(e,n);function a(t){G(i,o,r,a,s,"next",t)}function s(t){G(i,o,r,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 Q,X,tt,et,nt={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",nt.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",nt.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",nt.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,r){return this.message(t,e,"none",n,o,void 0===r||r)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",nt.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,r,i,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+nt.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",i);var h=l()("<label/>").attr("for",c+"-input").text(i+": ");d.append(h),d.append(p),void 0===r&&(r=!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:r,buttons:m,close:function(){void 0!==o&&o(!1,p.val())}}),p.focus(),nt.dialogsCounter++}))},filepicker:function(e,n,o,r,i,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=K.Sharing&&K.Sharing.PublicApp&&K.Sharing.PublicApp.fileList?K.Sharing.PublicApp.fileList.filesClient:Mt.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==r&&(r=[]),"string"==typeof r&&(r=[r]),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",r).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===i&&(i=!1),void 0===o&&(o=!1),l()("body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){V(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")})),Mt.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){V(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(Mt.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)})),Mt.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){V(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){V(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(V(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 r=u.$filelist.find("tr.filepicker_element_selected").data("entryname");r&&(e+="/"+r)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];a===nt.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){y(nt.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===nt.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){w.push({text:t.text,click:function(){y(t.type)},defaultButton:t.defaultButton})})):(a!==nt.FILEPICKER_TYPE_COPY&&a!==nt.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){y(nt.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==nt.FILEPICKER_TYPE_MOVE&&a!==nt.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){y(nt.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:i,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,r,i,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+nt.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(r){case nt.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case nt.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==i&&i()},defaultButton:!0};break;default:"object"===J(r)&&r.type===nt.YES_NO_BUTTONS&&(p=[{text:r.cancel||t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:r.confirm||t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:r.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){i&&i(!1)},modal:a,buttons:p}),nt.dialogsCounter++})).fail((function(o,r){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:r}))}))},_fileexistsshown:!1,fileexists:function(e,o,r,i){var a=this,s=new(l().Deferred),c=function(t,e,n,o,r){o=Math.round(o),r=Math.round(r);for(var i=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,r),s=i.data,l=a.data,c=e/o,u=n/r,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<r;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 j=Math.abs(x-(T+.5))/d,E=Math.sqrt(O+j*j);E>=-1&&E<=1&&(g=2*E*E*E-3*E*E+1)>0&&(P+=g*s[3+(j=4*(T+A*e))],y+=g,s[j+3]<255&&(g=g*s[j+3]/250),w+=g*s[j],b+=g*s[j+1],_+=g*s[j+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,r)),t.width=o,t.height=r,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,r){var i=n.find(".template").clone().removeClass("template").addClass("conflict"),a=i.find(".original"),s=i.find(".replacement");i.data("data",e),i.find(".filename").text(o.name),a.find(".size").text(Mt.Util.humanFileSize(o.size)),a.find(".mtime").text(Mt.Util.formatDate(o.mtime)),r.size&&r.lastModified&&(s.find(".size").text(Mt.Util.humanFileSize(r.size)),s.find(".mtime").text(Mt.Util.formatDate(r.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),r=new Image;r.src=o,r.onload=function(){var t,n,o,i,a,s,l,u=(t=r,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),i=Math.min(s,l),a.width=i,a.height=i,a.getContext("2d").drawImage(t,n,o,i,i,0,0,i,i),c(a,i,i,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Mt.MimeType.getIconUrl(r.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(i),r.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):r.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),r.size&&r.size>o.size?s.find(".size").css("font-weight","bold"):r.size&&r.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,r);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&&r){var h=p.find(".conflicts");u(h,o,r)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==i.onCancel&&i.onCancel(e),l()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==i.onContinue&&i.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(Mt.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");Mt.currentUser&&l().post(Mt.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")),this.$filePicker.find(".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(Mt.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(Mt.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(Mt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_fillFilePicker:(Q=W(regeneratorRuntime.mark((function e(n){var o,r,i,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),r=this.$filePicker.data("mimetype"),i=this.$filePicker.data("filter"),"string"==typeof r&&(r=[r]),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=W(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,r&&r.length>0&&-1===r.indexOf("*")&&(s=s.filter((function(t){return"dir"===t.type||-1!==r.indexOf(t.mimetype)}))),i&&(s=s.filter(i)),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:Mt.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(Mt.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,r){var i,a;if(r.isEncrypted&&"httpd/unix-directory"===r.mimetype?r.icon=Mt.MimeType.getIconUrl("dir-encrypted"):r.icon=Mt.MimeType.getIconUrl(r.mimetype),void 0!==r.size&&r.size>=0?(i=Mt.Util.humanFileSize(parseInt(r.size,10),!0),a=Math.round(160-Math.pow(r.size/1048576,2))):(i=t("files","Pending"),a=80),r.name.length>=10)var s=Math.min(Math.floor(r.name.length/2),10),c=r.name.substr(0,r.name.length-s),u=r.name.substr(r.name.length-s);else c=r.name,u="";var d=o.$listTmpl.octemplate({type:r.type,dir:n,filename:r.name,filename1:c,filename2:u,date:Mt.Util.relativeModifiedDate(r.mtime),size:i,sizeColor:a,icon:r.icon});if("file"===r.type){var f={file:n+"/"+r.name,x:100,y:100},p=new Image,h=Mt.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 Q.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 r=n.split("/");l().each(r,(function(t,n){if(""===(n=r.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:r.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 r=t.target.closest(".oc-dialog"),i=l()(".primary",r);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.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}),r=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),i=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:i.text(o);break;case this.FILEPICKER_TYPE_MOVE:i.text(r);break;case this.FILEPICKER_TYPE_COPY_MOVE:i.eq(0).text(o),i.eq(1).text(r)}}},ot=nt,rt=(X=document,tt=a.j8,et=X.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return et},setToken:function(t){tt("csrf-token-update",{token:et=t})}}).getToken,it=function t(e,n){var o,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)i+=o+"="+encodeURIComponent(n[o])+"&";if(i+="requesttoken="+encodeURIComponent(rt()),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(),r="&",-1===e.indexOf("?")&&(r="?"),this.iframe.attr("src",e+r+"fallback=true&fallback_id="+t.iframeCount+"&"+i),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else r="&",-1===e.indexOf("?")&&(r="?"),this.source=new EventSource(e+r+i),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 at=it,st=r(42515),lt=null,ct=null,ut=function(t){if(lt){var e=lt;lt.trigger(new(l().Event)("beforeHide")),lt.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),ct&&ct.attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),lt=null,ct=null},dt=!!window._oc_isadmin,ft=r(27856),pt=r.n(ft),ht=r(86834),mt=r.n(ht),gt=r(46488),vt=r.n(gt),yt=r(95573),wt=r.n(yt);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var bt=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},_t=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function Pt(t){return Pt="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},Pt(t)}var Ct={load:function(t,e){if(bt(t)||"en"===Mt.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var r=this,i=(0,c.generateFilePath)(t,"l10n",Mt.getLocale()+".json");return l().get(i).then((function(e){e.translations&&r.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,r;n=t,o=e,r=this._getPlural,bt(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,r):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,r)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,r){var i=r||{};f.ZP.defaults(i,{escape:!0,sanitize:!0});var a=i.sanitize?pt().sanitize:vt(),s=i.escape?wt():vt(),l=e,c=_t(t).translations[e];return void 0!==c&&(l=c),"object"===Pt(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,r,i){var a="_"+e+"_::_"+n+"_",s=_t(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],r,o,i)}}return 1===o?this.translate(t,e,r,o,i):this.translate(t,n,r,o,i)},_getPlural:function(t){var e=Mt.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}}},At=Ct;mt().registerHelper("t",(function(t,e){return Ct.translate(t,e)}));var kt=r(9944),xt={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()}},Ot=r(30381),Tt=r.n(Ot),jt={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",f.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Tt().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Tt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var r={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:""},i=f.ZP.extend(r,n),a=this;this.requiresPasswordConfirmation()&&Mt.dialogs.prompt(i.text,i.title,(function(t,e){t&&""!==e?a._confirmPassword(e,i):f.ZP.isFunction(o)&&o()}),!0,i.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==i.error){var e=l()("<p></p>").addClass("msg warning").text(i.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(i.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"),Mt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Et=window._theme||{},St={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Mt.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 r,i=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=i.length;a<s;a++)(r=i[a]).style.fill=r.style.fill,r.style.stroke=r.style.stroke,r.removeAttribute("filter"),r.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=Mt.parseQueryString(this._decodeQuery(e))),(t=f.ZP.extend(t||{},Mt.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=Mt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function Lt(t){for(var e,n=[],o=0,r=-1,i=0;o<t.length;){e=t.charAt(o);var a=!i&&"."===e||e>="0"&&e<="9";a!==i&&(n[++r]="",i=a),n[r]+=e,o++}return n}var Nt={History:St,humanFileSize:r(91770).sS,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",Tt()(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=Tt()().diff(Tt()(e));return n>=0&&n<45e3?t("core","seconds ago"):Tt()(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=Lt(t),r=Lt(e);for(n=0;o[n]&&r[n];n++)if(o[n]!==r[n]){var i=Number(o[n]),a=Number(r[n]);return i==o[n]&&a==r[n]?i-a:o[n].localeCompare(r[n],Mt.getLanguage())}return o.length-r.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 r=n[o].split("=");if(r[0].trim()===t&&r[1].trim()===e)return!0}return!1}},It=window._oc_debug,$t=window._oc_webroot;if(void 0===$t){var Ut=($t=location.pathname).indexOf("/index.php/");$t=-1!==Ut?$t.substr(0,Ut):$t.substr(0,$t.lastIndexOf("/"))}var Ft,Rt=$t,Mt={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 r=(0,c.generateFilePath)(t,"js",e+".js");return u[r]?n&&n():(o=l().Deferred(),l().getScript(r,(function(){return o.resolve()})),u[r]=o),u[r]},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 r=l()("#appsettings_popup");if(0===r.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(r=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),r.is(":visible"))r.hide().remove();else{var i=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){r.html(e).ready((function(){if(r.prepend('<span class="arrow '+i+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),r.find(".close").bind("click",(function(){r.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:ot,EventSource:at,getCurrentUser:function(){return{uid:Z,displayName:D}},isUserAdmin:function(){return dt},L10N:At,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Mt._reloadCalled)&&(f.ZP.contains([302,303,307,401],t.status)&&Mt.currentUser?setTimeout((function(){if(!Mt._userIsNavigatingAway&&!Mt._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),Mt.reload()),t++}),1e3);Mt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Mt._userIsNavigatingAway||Mt._reloadCalled||Mt._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,st.getCapabilities)()},hideMenus:ut,registerMenu:function(t,e,n,o){e.addClass("menu");var r="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(r?"click.menu":"click.menu keyup.menu",(function(r){r.preventDefault(),r.key&&"Enter"!==r.key||(e.is(lt)?ut():(lt&&ut(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),lt=e,ct=t))}))},showMenu:function(t,e,n){e.is(lt)||(ut(),lt=e,ct=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(lt)&&ut(),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:At.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,r={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var i=t.replace(/\+/g,"%20").split("&"),a=0;a<i.length;a++){var s=i[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(r[o]=n.length>1?decodeURIComponent(n[1]):null)}return r},msg:xt,Notification:h,PasswordConfirmation:jt,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),r=0;r<o.length;r++)o[r].attach&&o[r].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].detach&&o[r].detach(e,n)}},theme:Et,Util:Nt,debug:It,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Ft=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Ft=Ft[e[o]]))return!1;return Ft[n]}),set:function(t){return function(e,n){for(var o=e.split("."),r=o.pop(),i=0;i<o.length;i++)t[o[i]]||(t[o[i]]={}),t=t[o[i]];return t[r]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:rt(),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:Rt};(0,a.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var zt=r(79954),Bt=r(17563),Dt=r(22660),Zt=r.n(Dt),qt=r(10204),Ht=r.n(qt),Yt=r(57290),Kt=r.n(Yt),Vt=r(10861),Gt=r.n(Vt),Wt={name:"LoginButton",components:{ArrowRight:r(39429).default,NcButton:Gt()},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}}},Jt=r(93379),Qt=r.n(Jt),Xt=r(7795),te=r.n(Xt),ee=r(90569),ne=r.n(ee),oe=r(3565),re=r.n(oe),ie=r(19216),ae=r.n(ie),se=r(44589),le=r.n(se),ce=r(49665),ue={};ue.styleTagTransform=le(),ue.setAttributes=re(),ue.insert=ne().bind(null,"head"),ue.domAPI=te(),ue.insertStyleElement=ae(),Qt()(ce.Z,ue),ce.Z&&ce.Z.locals&&ce.Z.locals;var de=r(51900),fe=(0,de.Z)(Wt,(function(){var t=this,e=t._self._c;return e("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?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("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,pe={name:"LoginForm",components:{LoginButton:fe,NcPasswordField:Zt(),NcTextField:Ht(),NcNoteCard:Kt()},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(){var e,n;return{loading:!1,timezone:null===(e=new Intl.DateTimeFormat)||void 0===e||null===(n=e.resolvedOptions())||void 0===n?void 0:n.timeZone,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>5e3},errorLabel:function(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):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")}}},he=r(3591),me={};me.styleTagTransform=le(),me.setAttributes=re(),me.insert=ne().bind(null,"head"),me.domAPI=te(),me.insertStyleElement=ae(),Qt()(he.Z,me),he.Z&&he.Z.locals&&he.Z.locals;var ge=(0,de.Z)(pe,(function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("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?e("NcNoteCard",t._l(t.messages,(function(n,o){return e("div",{key:o},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])})),0):t._e(),t._v(" "),t.internalException?e("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(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""},domProps:{innerHTML:t._s(t.headline)}}),t._v(" "),e("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:"","data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("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,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"5bd351bc",null).exports,ve=r(4820),ye=r(37838),we=r(38213);function be(t){return be="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},be(t)}function _e(t){return function(t){if(Array.isArray(t))return Pe(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 Pe(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)?Pe(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 Pe(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 Ce(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?Ce(Object(n),!0).forEach((function(e){ke(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ce(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function ke(t,e,n){return(e=xe(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function xe(t){var e=function(t,e){if("object"!==be(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==be(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"===be(e)?e:String(e)}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"===be(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 je(t){var e="function"==typeof Map?new Map:void 0;return je=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 Ee(t,arguments,Ne(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Le(o,t)},je(t)}function Ee(t,e,n){return Ee=Se()?Reflect.construct.bind():function(t,e,n){var o=[null];o.push.apply(o,e);var r=new(Function.bind.apply(t,o));return n&&Le(r,n.prototype),r},Ee.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?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Le(t,e)}function Ne(t){return Ne=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ne(t)}var Ie=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)}(i,t);var e,n,o,r=(e=i,n=Se(),function(){var t,o=Ne(e);if(n){var r=Ne(this).constructor;t=Reflect.construct(o,arguments,r)}else t=o.apply(this,arguments);return Te(this,t)});function i(){return Oe(this,i),r.apply(this,arguments)}return o=i,Object.defineProperty(o,"prototype",{writable:!1}),o}(je(Error)),$e={name:"PasswordLessLoginForm",components:{LoginButton:fe,InformationIcon:ye.Z,LockOpenIcon:we.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 Ie?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"),ve.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 Ie;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,_e(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,_e(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"),ve.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){var e=t.defaultRedirectUrl;console.debug("Logged in redirecting"),window.location.href=o||e})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},Ue=r(43848),Fe={};Fe.styleTagTransform=le(),Fe.setAttributes=re(),Fe.insert=ne().bind(null,"head"),Fe.domAPI=te(),Fe.insertStyleElement=ae(),Qt()(Ue.Z,Fe),Ue.Z&&Ue.Z.locals&&Ue.Z.locals;var Re=(0,de.Z)($e,(function(){var t=this,e=t._self._c;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?e("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",{staticClass:"grouptop groupbottom"},[e("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),e("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():e("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?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():e("div",{staticClass:"body-login-container update"},[e("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),e("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):e("div",{staticClass:"body-login-container update"},[e("InformationIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),e("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,"20256748",null),Me=Re.exports,ze={name:"ResetPassword",components:{LoginButton:fe,NcNoteCard:Kt(),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 ve.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=r(28032),De={};De.styleTagTransform=le(),De.setAttributes=re(),De.insert=ne().bind(null,"head"),De.domAPI=te(),De.insertStyleElement=ae(),Qt()(Be.Z,De),Be.Z&&Be.Z.locals&&Be.Z.locals;var Ze=(0,de.Z)(ze,(function(){var t=this,e=t._self._c;return e("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",{staticClass:"login-form__fieldset"},[e("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(" "),e("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?e("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"),e("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?e("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?e("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(" "),e("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,"27cabc60",null),qe=Ze.exports;function He(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}var Ye={name:"UpdatePassword",components:{LoginButton:fe},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,r;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,ve.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(r=o.data)||"success"!==r.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(!r||!r.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!r||!r.msg){e.next=22;break}throw new Error(r.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,r){var i=e.apply(t,n);function a(t){He(i,o,r,a,s,"next",t)}function s(t){He(i,o,r,a,s,"throw",t)}a(void 0)}))})()}}},Ke=Ye,Ve=r(74778),Ge={};Ge.styleTagTransform=le(),Ge.setAttributes=re(),Ge.insert=ne().bind(null,"head"),Ge.domAPI=te(),Ge.insertStyleElement=ae(),Qt()(Ve.Z,Ge),Ve.Z&&Ve.Z.locals&&Ve.Z.locals;var We=(0,de.Z)(Ke,(function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("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?e("div",{staticClass:"update"},[e("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(" "),e("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,r=!!o.checked;if(Array.isArray(n)){var i=t._i(n,null);o.checked?i<0&&(t.proceed=n.concat([null])):i>-1&&(t.proceed=n.slice(0,i).concat(n.slice(i+1)))}else t.proceed=r}}}),t._v(" "),e("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(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("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),Je=We.exports,Qe=Bt.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:ge,PasswordLessLoginForm:Me,ResetPassword:qe,UpdatePassword:Je,NcButton:Gt(),NcNoteCard:Kt()},data:function(){return{loading:!1,user:(0,zt.j)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,zt.j)("core","loginErrors",[]),messages:(0,zt.j)("core","loginMessages",[]),redirectUrl:(0,zt.j)("core","loginRedirectUrl",!1),throttleDelay:(0,zt.j)("core","loginThrottleDelay",0),canResetPassword:(0,zt.j)("core","loginCanResetPassword",!1),resetPasswordLink:(0,zt.j)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,zt.j)("core","loginAutocomplete",!0),resetPasswordTarget:(0,zt.j)("core","resetPasswordTarget",""),resetPasswordUser:(0,zt.j)("core","resetPasswordUser",""),directLogin:"1"===Qe.direct,hasPasswordless:(0,zt.j)("core","webauthn-available",!1),countAlternativeLogins:(0,zt.j)("core","countAlternativeLogins",!1),alternativeLogins:(0,zt.j)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,zt.j)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0}}},tn=r(20549),en={};en.styleTagTransform=le(),en.setAttributes=re(),en.insert=ne().bind(null,"head"),en.domAPI=te(),en.insertStyleElement=ae(),Qt()(tn.Z,en),tn.Z&&tn.Z.locals&&tn.Z.locals;var nn=(0,de.Z)(Xe,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?e("div",[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset",staticClass:"login-additional"},[e("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(" "),e("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?e("div",{key:"reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("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?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",[e("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?e("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?e("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?e("div",{staticClass:"alternative-logins"},[t.hasPasswordless?e("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()]):e("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):e("div",[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("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(" "),e("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(n,o){return e("NcButton",{key:o,class:[n.class],attrs:{type:"secondary",wide:!0,role:"link",href:n.href}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,on={data:function(){return{OC:Mt}},methods:{t:At.translate.bind(At),n:At.translatePlural.bind(At)}};i.ZP.mixin(on),(new(i.ZP.extend(nn))).$mount("#login")},49665:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".button-vue[data-v-756414a8]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]),e.Z=a},3591:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".login-form[data-v-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",sourcesContent:["\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},43848:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".body-login-container.update[data-v-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\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},28032:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{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:"AACA,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.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},20549:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());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:"AACA,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:["\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},74778:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());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:";AA4IA;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,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(2,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?i:""},2:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.noop,data:r,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?i:""},3:function(t,e,n,o,r){var i,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!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,r){var i,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!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(8,r,0),inverse:t.program(11,r,0),data:r,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?i:""},8:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(9,r,0),inverse:t.noop,data:r,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?i:""},9:function(t,e,n,o,r){var i,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!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,r){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(14,r,0),inverse:t.noop,data:r,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"topAction"):i,{name:"if",hash:{},fn:t.program(16,r,0),inverse:t.noop,data:r,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?i:"")},14:function(t,e,n,o,r){var i,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!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,r){var i,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!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t\t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"topAction"):i,{name:"if",hash:{},fn:t.program(19,r,0),inverse:t.program(21,r,0),data:r,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?i:""},19:function(t,e,n,o,r){var i,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!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n \t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t</a>\n'},21:function(t,e,n,o,r){var i,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!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,r){var i,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!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n</a>\n'},25:function(t,e,n,o,r){var i,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!=(i=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"actions"):i,{name:"each",hash:{},fn:t.program(26,r,0),inverse:t.noop,data:r,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?i:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,r){var i,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(i=null!=(i=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?i:s)===l?i.call(a,{name:"hyperlink",hash:{},data:r,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):i)+'">\n\t\t\t\t\t<img src="'+c(typeof(i=null!=(i=u(n,"icon")||(null!=e?u(e,"icon"):e))?i:s)===l?i.call(a,{name:"icon",hash:{},data:r,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):i)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(i=null!=(i=u(n,"title")||(null!=e?u(e,"title"):e))?i:s)===l?i.call(a,{name:"title",hash:{},data:r,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):i)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"avatar"):i,{name:"if",hash:{},fn:t.program(1,r,0),inverse:t.program(7,r,0),data:r,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(13,r,0),inverse:t.program(18,r,0),data:r,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasTwoActions"):i,{name:"if",hash:{},fn:t.program(23,r,0),inverse:t.noop,data:r,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasManyActions"):i,{name:"if",hash:{},fn:t.program(25,r,0),inverse:t.noop,data:r,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?i:"")},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,r){var i,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(i=null!=(i=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):i)+"</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,r){var i,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(i=null!=(i=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:r,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):i)+"</h2>\n</div>\n"},3:function(t,e,n,o,r){var i,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(i=null!=(i=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?i:s)===l?i.call(a,{name:"contactsAppURL",hash:{},data:r,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?i:s)===l?i.call(a,{name:"showAllContactsText",hash:{},data:r,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):i)+"</a></div>\n"},5:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,r,0),inverse:t.noop,data:r,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?i:""},6:function(t,e,n,o,r){var i,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(i=null!=(i=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtURL",hash:{},data:r,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtText",hash:{},data:r,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):i)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"unless").call(a,null!=(i=null!=e?s(e,"contacts"):e)?s(i,"length"):i,{name:"unless",hash:{},fn:t.program(1,r,0),inverse:t.noop,data:r,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?i:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(i=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?i:"")},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,r){var i,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(i=null!=(i=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):i)+"</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,r){var i,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(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):i)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):i)+'" value="'+c(typeof(i=null!=(i=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?i:s)===l?i.call(a,{name:"searchTerm",hash:{},data:r,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):i)+'">\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 r(t){var e=i(t);return n(e)}function i(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}r.keys=function(){return Object.keys(o)},r.resolve=i,t.exports=r,r.id=46700}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var n=r[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,e=[],i.O=function(t,n,o,r){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],r=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&r||a>=r)&&Object.keys(i.O).every((function(t){return i.O[t](n[l])}))?n.splice(l--,1):(s=!1,r<a&&(a=r));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[n,o,r]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=4577,function(){i.b=document.baseURI||self.location.href;var t={4577:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,r,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)var u=l(i)}for(e&&e(n);c<a.length;c++)r=a[c],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(99458)}));a=i.O(a)}();
+//# sourceMappingURL=core-login.js.map?v=2aadc58ff291da0f9e3d \ No newline at end of file
diff --git a/dist/core-login.js.map b/dist/core-login.js.map
index 98e87c8019c..ccf3bf33bcc 100644
--- a/dist/core-login.js.map
+++ b/dist/core-login.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-login.js?v=3487e04e03c4b8250d1a","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/search.js","webpack:///nextcloud/core/src/OCA/index.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?ae59","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?3136","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","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?a91a","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","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?1a33","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","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?703c","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7cf3","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?4361","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","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?f7ed","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&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=7ed2300f&prod&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&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/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 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 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 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\tthis.$filePicker.find('.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\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\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 render(){var _vm=this,_c=_vm._self._c;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)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&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&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"756414a8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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\" data-login-form>\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\" data-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\tdata-login-form-input-user\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\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :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 { 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: (new Intl.DateTimeFormat())?.resolvedOptions()?.timeZone,\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 > 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 > 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=5bd351bc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=5bd351bc&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=5bd351bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bd351bc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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\",attrs:{\"data-login-form\":\"\"}},[(_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\",attrs:{\"data-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\":\"\",\"data-login-form-input-user\":\"\"},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,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"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)])\n}\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 redirectUrl = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(({ defaultRedirectUrl }) => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\t// Redirect url might be false so || should be used instead of ??.\n\t\t\t\t\twindow.location.href = redirectUrl || defaultRedirectUrl\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=20256748&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=20256748&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=20256748&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20256748\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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<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=27cabc60&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=27cabc60&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=27cabc60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27cabc60\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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)])\n}\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&prod&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&prod&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&prod&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 render(){var _vm=this,_c=_vm._self._c;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)])\n}\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&id=7ed2300f&prod&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&id=7ed2300f&prod&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&id=7ed2300f&prod&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\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\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-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"sourcesContent\":[\"\\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-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"sourcesContent\":[\"\\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-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{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\":\"AACA,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.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\":\"AACA,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\":[\"\\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\":\";AA4IA;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","// 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__(83468); })\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","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","ArrowRight","NcButton","default","valueLoading","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","LoginButton","NcPasswordField","NcTextField","NcNoteCard","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","directLogin","timezone","timezoneOffset","headline","productName","user","computed","isError","errorLabel","apacheAuthFailed","internalException","invalidPassword","userDisabled","loadingIcon","loginActionUrl","mounted","methods","updateUsername","ref","_e","_l","class","staticStyle","domProps","shake","NoValidCredentials","InformationIcon","LockOpenIcon","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","getAuthenticationData","loginName","Axios","resp","publicKey","sign","rawId","authenticatorData","clientDataJSON","signature","userHandle","completeAuthentication","directives","rawName","expression","composing","resetPasswordLink","watch","resetPasswordTarget","encrypted","proceed","Array","isArray","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","hasPasswordless","countAlternativeLogins","alternativeLogins","hideLoginForm","passwordResetFinished","goTo","alternativeLogin","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__","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=2aadc58ff291da0f9e3d","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/search.js","webpack:///nextcloud/core/src/OCA/index.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?ae59","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?3136","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","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?a91a","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","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?1a33","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","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?703c","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?7cf3","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?4361","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","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?0fcd","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&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=7b955242&prod&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&prod&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/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 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 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 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\tthis.$filePicker.find('.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\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\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 render(){var _vm=this,_c=_vm._self._c;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}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&prod&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&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"756414a8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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\" data-login-form>\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\" data-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\tdata-login-form-input-user\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\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :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 { 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: (new Intl.DateTimeFormat())?.resolvedOptions()?.timeZone,\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 > 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 > 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=5bd351bc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=5bd351bc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=5bd351bc&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=5bd351bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bd351bc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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\",attrs:{\"data-login-form\":\"\"}},[(_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\",attrs:{\"data-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\":\"\",\"data-login-form-input-user\":\"\"},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,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"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)])\n}\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 redirectUrl = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(({ defaultRedirectUrl }) => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\t// Redirect url might be false so || should be used instead of ??.\n\t\t\t\t\twindow.location.href = redirectUrl || defaultRedirectUrl\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=20256748&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=20256748&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=20256748&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20256748\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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<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=27cabc60&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=27cabc60&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=27cabc60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27cabc60\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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)])\n}\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&prod&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&prod&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&prod&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 render(){var _vm=this,_c=_vm._self._c;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)])\n}\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{{ 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},\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&id=7b955242&prod&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&id=7b955242&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=7b955242&\"\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&id=7b955242&prod&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\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\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-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"sourcesContent\":[\"\\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-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"sourcesContent\":[\"\\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-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{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\":\"AACA,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.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\":\"AACA,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\":[\"\\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\":\";AA4IA;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","// 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__(99458); })\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","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","ArrowRight","NcButton","default","valueLoading","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","LoginButton","NcPasswordField","NcTextField","NcNoteCard","username","redirectUrl","errors","messages","throttleDelay","autoCompleteAllowed","directLogin","timezone","timezoneOffset","headline","productName","user","computed","isError","errorLabel","apacheAuthFailed","internalException","invalidPassword","userDisabled","loadingIcon","loginActionUrl","mounted","methods","updateUsername","ref","_e","_l","class","staticStyle","domProps","shake","NoValidCredentials","InformationIcon","LockOpenIcon","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","getAuthenticationData","loginName","Axios","resp","publicKey","sign","rawId","authenticatorData","clientDataJSON","signature","userHandle","completeAuthentication","directives","rawName","expression","composing","resetPasswordLink","watch","resetPasswordTarget","encrypted","proceed","Array","isArray","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","hasPasswordless","countAlternativeLogins","alternativeLogins","hideLoginForm","passwordResetFinished","alternativeLogin","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__","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/settings-apps-view-7418.js b/dist/settings-apps-view-7418.js
index 2dbb7d090aa..98b27551a90 100644
--- a/dist/settings-apps-view-7418.js
+++ b/dist/settings-apps-view-7418.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[7418],{7934:function(t,e,n){var a=n(87537),i=n.n(a),s=n(23645),r=n.n(s)()(i());r.push([t.id,".app-details[data-v-43fb27d0]{padding:20px}.app-details__actions-manage[data-v-43fb27d0]{display:flex}.app-details__actions-manage input[data-v-43fb27d0]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-43fb27d0]{opacity:.7}.app-details__documentation[data-v-43fb27d0]{padding-top:20px}.app-details__description[data-v-43fb27d0]{padding-top:20px}.force[data-v-43fb27d0]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-43fb27d0]:hover,.force[data-v-43fb27d0]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}","",{version:3,sources:["webpack://./apps/settings/src/components/AppDetails.vue"],names:[],mappings:"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CAED,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA",sourcesContent:["\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n"],sourceRoot:""}]),e.Z=r},44680:function(t,e,n){var a=n(87537),i=n.n(a),s=n(23645),r=n.n(s)()(i());r.push([t.id,".settings-markdown[data-v-652eb552] h1,.settings-markdown[data-v-652eb552] h2,.settings-markdown[data-v-652eb552] h3,.settings-markdown[data-v-652eb552] h4,.settings-markdown[data-v-652eb552] h5,.settings-markdown[data-v-652eb552] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-652eb552] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-652eb552] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-652eb552] h3{font-size:24px}.settings-markdown[data-v-652eb552] h4{font-size:21px}.settings-markdown[data-v-652eb552] h5{font-size:17px}.settings-markdown[data-v-652eb552] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-652eb552] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-652eb552] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-652eb552] li{position:relative}.settings-markdown[data-v-652eb552] ul,.settings-markdown[data-v-652eb552] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-652eb552] ul li{list-style-type:disc}.settings-markdown[data-v-652eb552] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-652eb552] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-652eb552] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}","",{version:3,sources:["webpack://./apps/settings/src/components/Markdown.vue"],names:[],mappings:"AAGA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA",sourcesContent:["\n.settings-markdown::v-deep {\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n\tfont-weight: 600;\n\tline-height: 120%;\n\tmargin-top: 24px;\n\tmargin-bottom: 12px;\n\tcolor: var(--color-main-text);\n}\n\nh1 {\n\tfont-size: 36px;\n\tmargin-top: 48px;\n}\n\nh2 {\n\tfont-size: 28px;\n\tmargin-top: 48px;\n}\n\nh3 {\n\tfont-size: 24px;\n}\n\nh4 {\n\tfont-size: 21px;\n}\n\nh5 {\n\tfont-size: 17px;\n}\n\nh6 {\n\tfont-size: var(--default-font-size);\n}\n\npre {\n\twhite-space: pre;\n\toverflow-x: auto;\n\tbackground-color: var(--color-background-dark);\n\tborder-radius: var(--border-radius);\n\tpadding: 1em 1.3em;\n\tmargin-bottom: 1em;\n}\n\np code {\n\tbackground-color: var(--color-background-dark);\n\tborder-radius: var(--border-radius);\n\tpadding: .1em .3em;\n}\n\nli {\n\tposition: relative;\n}\n\nul, ol {\n\tpadding-left: 10px;\n\tmargin-left: 10px;\n}\n\nul li {\n\tlist-style-type: disc;\n}\n\nul > li > ul > li {\n\tlist-style-type: circle;\n}\n\nul > li > ul > li ul li {\n\tlist-style-type: square;\n}\n\nblockquote {\n\tpadding-left: 1em;\n\tborder-left: 4px solid var(--color-primary-element);\n\tcolor: var(--color-text-maxcontrast);\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n}\n"],sourceRoot:""}]),e.Z=r},60315:function(t,e,n){var a=n(87537),i=n.n(a),s=n(23645),r=n.n(s)()(i());r.push([t.id,".app-sidebar[data-v-59100a8c]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-59100a8c]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:var(--background-invert-if-bright)}.app-sidebar[data-v-59100a8c] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-59100a8c].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-59100a8c].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-59100a8c] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-59100a8c] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-59100a8c] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-59100a8c] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-59100a8c]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-59100a8c] h3{font-size:20px}.app-sidebar-tabs__release[data-v-59100a8c] h4{font-size:17px}","",{version:3,sources:["webpack://./apps/settings/src/views/Apps.vue"],names:[],mappings:"AAIE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,yCAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,+CACC,cAAA,CAED,+CACC,cAAA",sourcesContent:["\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},14616:function(t,e,n){var a=n(87537),i=n.n(a),s=n(23645),r=n.n(s)()(i());r.push([t.id,"\n.app-icon[data-v-737119e2] {\n\tfilter: var(--background-invert-if-bright);\n}\n.actions[data-v-737119e2] {\n\tdisplay: flex !important;\n\tgap: 8px;\n\tflex-wrap: wrap;\n\tjustify-content: end;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/AppList/AppItem.vue"],names:[],mappings:";AA8LA;CACA,0CAAA;AACA;AACA;CACA,wBAAA;CACA,QAAA;CACA,eAAA;CACA,oBAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div class="section" :class="{ selected: isSelected }" @click="showAppDetails">\n\t\t<div class="app-image app-image-icon" @click="showAppDetails">\n\t\t\t<div v-if="(listView && !app.preview) || (!listView && !screenshotLoaded)" class="icon-settings-dark" />\n\n\t\t\t<svg v-else-if="listView && app.preview"\n\t\t\t\twidth="32"\n\t\t\t\theight="32"\n\t\t\t\tviewBox="0 0 32 32">\n\t\t\t\t<image x="0"\n\t\t\t\t\ty="0"\n\t\t\t\t\twidth="32"\n\t\t\t\t\theight="32"\n\t\t\t\t\tpreserveAspectRatio="xMinYMin meet"\n\t\t\t\t\t:xlink:href="app.preview"\n\t\t\t\t\tclass="app-icon" />\n\t\t\t</svg>\n\n\t\t\t<img v-if="!listView && app.screenshot && screenshotLoaded" :src="app.screenshot" width="100%">\n\t\t</div>\n\t\t<div class="app-name" @click="showAppDetails">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if="!listView" class="app-summary">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if="listView" class="app-version">\n\t\t\t<span v-if="app.version">{{ app.version }}</span>\n\t\t\t<span v-else-if="app.appstoreData.releases[0].version">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class="app-level">\n\t\t\t<span v-if="app.level === 300"\n\t\t\t\tv-tooltip.auto="t(\'settings\', \'This app is supported via your current Nextcloud subscription.\')"\n\t\t\t\tclass="supported icon-checkmark-color">\n\t\t\t\t{{ t(\'settings\', \'Supported\') }}</span>\n\t\t\t<span v-if="app.level === 200"\n\t\t\t\tv-tooltip.auto="t(\'settings\', \'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.\')"\n\t\t\t\tclass="official icon-checkmark">\n\t\t\t\t{{ t(\'settings\', \'Featured\') }}</span>\n\t\t\t<AppScore v-if="hasRating && !listView" :score="app.score" />\n\t\t</div>\n\n\t\t<div class="actions">\n\t\t\t<div v-if="app.error" class="warning">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if="isLoading" class="icon icon-loading-small" />\n\t\t\t<NcButton v-if="app.update"\n\t\t\t\ttype="primary"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="update(app.id)">\n\t\t\t\t{{ t(\'settings\', \'Update to {update}\', {update:app.update}) }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if="app.canUnInstall"\n\t\t\t\tclass="uninstall"\n\t\t\t\ttype="tertiary"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="remove(app.id)">\n\t\t\t\t{{ t(\'settings\', \'Remove\') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if="app.active"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="disable(app.id)">\n\t\t\t\t{{ t(\'settings\',\'Disable\') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if="!app.active && (app.canInstall || app.isCompatible)"\n\t\t\t\tv-tooltip.auto="enableButtonTooltip"\n\t\t\t\ttype="primary"\n\t\t\t\t:disabled="!app.canInstall || installing || isLoading"\n\t\t\t\t@click.stop="enable(app.id)">\n\t\t\t\t{{ enableButtonText }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-else-if="!app.active"\n\t\t\t\tv-tooltip.auto="forceEnableButtonTooltip"\n\t\t\t\ttype="secondary"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="forceEnable(app.id)">\n\t\t\t\t{{ forceEnableButtonText }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from \'./AppScore.vue\'\nimport AppManagement from \'../../mixins/AppManagement.js\'\nimport SvgFilterMixin from \'../SvgFilterMixin.vue\'\nimport NcButton from \'@nextcloud/vue/dist/Components/NcButton.js\'\n\nexport default {\n\tname: \'AppItem\',\n\tcomponents: {\n\t\tAppScore,\n\t\tNcButton,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t\'$route.params.id\'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === \'INPUT\' || event.currentTarget.tagName === \'A\') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: \'apps-details\',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + \'_\' + content\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.app-icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n\t.actions {\n\t\tdisplay: flex !important;\n\t\tgap: 8px;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: end;\n\t}\n</style>\n'],sourceRoot:""}]),e.Z=r},35503:function(e,n,a){a.r(n),a.d(n,{default:function(){return _t}});var i=a(78595),s=a(20144),r=a(87369),o=a.n(r),p=a(69680),c=a.n(p),l=a(55209),d=a.n(l),u=a(53110),g=a.n(u),h=a(14032),A=a.n(h),v=a(47493),f=a.n(v),m=a(10250),b=a.n(m),C=a(62574),_=a.n(C),y=a(27472),w=a.n(y),k=a(79753),x={name:"AppScore",props:["score"],computed:{scoreImage:function(){var t="rating/s"+Math.round(10*this.score)+".svg";return(0,k.imagePath)("core",t)}}},N=a(51900),D=(0,N.Z)(x,(function(){return(0,this._self._c)("img",{staticClass:"app-score-image",attrs:{src:this.scoreImage}})}),[],!1,null,null,null).exports,B=a(26932),T=a(4820),S=function(){return T.default.get((0,k.generateOcsUrl)("core/navigation",2)+"/apps?format=json").then((function(t){var e=t.data;200===e.ocs.meta.statuscode&&((0,i.j8)("nextcloud:app-menu.refresh",{apps:e.ocs.data}),window.dispatchEvent(new Event("resize")))}))},I={computed:{appGroups:function(){return this.app.groups.map((function(t){return{id:t,name:t}}))},installing:function(){return this.$store.getters.loading("install")},isLoading:function(){return this.app&&this.$store.getters.loading(this.app.id)},enableButtonText:function(){return this.app.needsDownload?t("settings","Download and enable"):t("settings","Enable")},forceEnableButtonText:function(){return this.app.needsDownload,t("settings","Enable untested app")},enableButtonTooltip:function(){return!!this.app.needsDownload&&t("settings","The app will be downloaded from the App Store")},forceEnableButtonTooltip:function(){var e=t("settings","This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.");return this.app.needsDownload?e+" "+t("settings","The app will be downloaded from the App Store"):e}},data:function(){return{groupCheckedAppsData:!1}},mounted:function(){this.app&&this.app.groups&&this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},methods:{asyncFindGroup:function(t){return this.$store.dispatch("getGroups",{search:t,limit:5,offset:0})},isLimitedToGroups:function(t){return!(!this.app.groups.length&&!this.groupCheckedAppsData)},setGroupLimit:function(){this.groupCheckedAppsData||this.$store.dispatch("enableApp",{appId:this.app.id,groups:[]})},canLimitToGroups:function(t){return!(t.types&&t.types.includes("filesystem")||t.types.includes("prelogin")||t.types.includes("authentication")||t.types.includes("logging")||t.types.includes("prevent_group_restriction"))},addGroupLimitation:function(t){var e=this.app.groups.concat([]).concat([t.id]);this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},removeGroupLimitation:function(t){var e=this.app.groups.concat([]),n=e.indexOf(t.id);n>-1&&e.splice(n,1),this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},forceEnable:function(t){this.$store.dispatch("forceEnableApp",{appId:t,groups:[]}).then((function(t){S()})).catch((function(t){(0,B.x2)(t)}))},enable:function(t){this.$store.dispatch("enableApp",{appId:t,groups:[]}).then((function(t){S()})).catch((function(t){(0,B.x2)(t)}))},disable:function(t){this.$store.dispatch("disableApp",{appId:t}).then((function(t){S()})).catch((function(t){(0,B.x2)(t)}))},remove:function(t){this.$store.dispatch("uninstallApp",{appId:t}).then((function(t){S()})).catch((function(t){(0,B.x2)(t)}))},install:function(t){this.$store.dispatch("enableApp",{appId:t}).then((function(t){S()})).catch((function(t){(0,B.x2)(t)}))},update:function(t){this.$store.dispatch("updateApp",{appId:t}).then((function(t){S()})).catch((function(t){(0,B.x2)(t)}))}}},L={name:"SvgFilterMixin",data:function(){return{filterId:""}},computed:{filterUrl:function(){return"url(#".concat(this.filterId,")")}},mounted:function(){this.filterId="invertIconApps-"+Math.random().toString(36).substring(2)}},E=(0,N.Z)(L,void 0,void 0,!1,null,null,null).exports,U=a(10861),G=a.n(U);function $(t,e,n,a,i,s,r){try{var o=t[s](r),p=o.value}catch(t){return void n(t)}o.done?e(p):Promise.resolve(p).then(a,i)}var P={name:"AppItem",components:{AppScore:D,NcButton:G()},mixins:[I,E],props:{app:{},category:{},listView:{type:Boolean,default:!0}},data:function(){return{isSelected:!1,scrolled:!1,screenshotLoaded:!1}},computed:{hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5}},watch:{"$route.params.id":function(t){this.isSelected=this.app.id===t}},mounted:function(){var t=this;if(this.isSelected=this.app.id===this.$route.params.id,this.app.releases&&this.app.screenshot){var e=new Image;e.onload=function(e){t.screenshotLoaded=!0},e.src=this.app.screenshot}},watchers:{},methods:{showAppDetails:function(t){var e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("INPUT"!==t.currentTarget.tagName&&"A"!==t.currentTarget.tagName){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,n.$router.push({name:"apps-details",params:{category:n.category,id:n.app.id}});case 5:e.next=9;break;case 7:e.prev=7,e.t0=e.catch(2);case 9:case"end":return e.stop()}}),e,null,[[2,7]])})),function(){var t=this,n=arguments;return new Promise((function(a,i){var s=e.apply(t,n);function r(t){$(s,a,i,r,o,"next",t)}function o(t){$(s,a,i,r,o,"throw",t)}r(void 0)}))})()},prefix:function(t,e){return t+"_"+e}}},M=P,R=a(93379),V=a.n(R),O=a(7795),Z=a.n(O),z=a(90569),F=a.n(z),j=a(3565),Y=a.n(j),q=a(19216),H=a.n(q),Q=a(44589),W=a.n(Q),J=a(14616),K={};K.styleTagTransform=W(),K.setAttributes=Y(),K.insert=F().bind(null,"head"),K.domAPI=Z(),K.insertStyleElement=H(),V()(J.Z,K),J.Z&&J.Z.locals&&J.Z.locals;var X=(0,N.Z)(M,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"section",class:{selected:t.isSelected},on:{click:t.showAppDetails}},[e("div",{staticClass:"app-image app-image-icon",on:{click:t.showAppDetails}},[t.listView&&!t.app.preview||!t.listView&&!t.screenshotLoaded?e("div",{staticClass:"icon-settings-dark"}):t.listView&&t.app.preview?e("svg",{attrs:{width:"32",height:"32",viewBox:"0 0 32 32"}},[e("image",{staticClass:"app-icon",attrs:{x:"0",y:"0",width:"32",height:"32",preserveAspectRatio:"xMinYMin meet","xlink:href":t.app.preview}})]):t._e(),t._v(" "),!t.listView&&t.app.screenshot&&t.screenshotLoaded?e("img",{attrs:{src:t.app.screenshot,width:"100%"}}):t._e()]),t._v(" "),e("div",{staticClass:"app-name",on:{click:t.showAppDetails}},[t._v("\n\t\t"+t._s(t.app.name)+"\n\t")]),t._v(" "),t.listView?t._e():e("div",{staticClass:"app-summary"},[t._v("\n\t\t"+t._s(t.app.summary)+"\n\t")]),t._v(" "),t.listView?e("div",{staticClass:"app-version"},[t.app.version?e("span",[t._v(t._s(t.app.version))]):t.app.appstoreData.releases[0].version?e("span",[t._v(t._s(t.app.appstoreData.releases[0].version))]):t._e()]):t._e(),t._v(" "),e("div",{staticClass:"app-level"},[300===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t"+t._s(t.t("settings","Featured")))]):t._e(),t._v(" "),t.hasRating&&!t.listView?e("AppScore",{attrs:{score:t.app.score}}):t._e()],1),t._v(" "),e("div",{staticClass:"actions"},[t.app.error?e("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.app.error)+"\n\t\t")]):t._e(),t._v(" "),t.isLoading?e("div",{staticClass:"icon icon-loading-small"}):t._e(),t._v(" "),t.app.update?e("NcButton",{attrs:{type:"primary",disabled:t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.update(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Update to {update}",{update:t.app.update}))+"\n\t\t")]):t._e(),t._v(" "),t.app.canUnInstall?e("NcButton",{staticClass:"uninstall",attrs:{type:"tertiary",disabled:t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.remove(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Remove"))+"\n\t\t")]):t._e(),t._v(" "),t.app.active?e("NcButton",{attrs:{disabled:t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.disable(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Disable"))+"\n\t\t")]):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active?t._e():e("NcButton",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],attrs:{type:"secondary",disabled:t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.forceEnable(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.forceEnableButtonText)+"\n\t\t")]):e("NcButton",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],attrs:{type:"primary",disabled:!t.app.canInstall||t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.enable(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.enableButtonText)+"\n\t\t")])],1)])}),[],!1,null,"737119e2",null).exports,tt=(0,N.Z)({name:"PrefixMixin",methods:{prefix:function(t,e){return t+"_"+e}}},void 0,void 0,!1,null,null,null).exports,et=a(63560),nt={name:"AppList",components:{AppItem:X,NcButton:G()},mixins:[tt],props:["category","app","search"],computed:{counter:function(){return this.apps.filter((function(t){return t.update})).length},loading:function(){return this.$store.getters.loading("list")},hasPendingUpdate:function(){return this.apps.filter((function(t){return t.update})).length>0},showUpdateAll:function(){return this.hasPendingUpdate&&this.useListView},apps:function(){var t=this,e=this.$store.getters.getAllApps.filter((function(e){return-1!==e.name.toLowerCase().search(t.search.toLowerCase())})).sort((function(t,e){var n=""+(t.active?0:1)+(t.update?0:1)+t.name,a=""+(e.active?0:1)+(e.update?0:1)+e.name;return OC.Util.naturalSortCompare(n,a)}));return"installed"===this.category?e.filter((function(t){return t.installed})):"enabled"===this.category?e.filter((function(t){return t.active&&t.installed})):"disabled"===this.category?e.filter((function(t){return!t.active&&t.installed})):"app-bundles"===this.category?e.filter((function(t){return t.bundles})):"updates"===this.category?e.filter((function(t){return t.update})):"featured"===this.category?e.filter((function(t){return 200===t.level})):e.filter((function(e){return e.appstore&&void 0!==e.category&&(e.category===t.category||e.category.indexOf(t.category)>-1)}))},bundles:function(){var t=this;return this.$store.getters.getServerData.bundles.filter((function(e){return t.bundleApps(e.id).length>0}))},bundleApps:function(){return function(t){return this.$store.getters.getAllApps.filter((function(e){return void 0!==e.bundleIds&&e.bundleIds.includes(t)}))}},searchApps:function(){var t=this;return""===this.search?[]:this.$store.getters.getAllApps.filter((function(e){return-1!==e.name.toLowerCase().search(t.search.toLowerCase())&&!t.apps.find((function(t){return t.id===e.id}))}))},useAppStoreView:function(){return!this.useListView&&!this.useBundleView},useListView:function(){return"installed"===this.category||"enabled"===this.category||"disabled"===this.category||"updates"===this.category||"featured"===this.category},useBundleView:function(){return"app-bundles"===this.category},allBundlesEnabled:function(){var t=this;return function(e){return 0===t.bundleApps(e).filter((function(t){return!t.active})).length}},bundleToggleText:function(){var e=this;return function(n){return e.allBundlesEnabled(n)?t("settings","Disable all"):t("settings","Enable all")}}},methods:{toggleBundle:function(t){return this.allBundlesEnabled(t)?this.disableBundle(t):this.enableBundle(t)},enableBundle:function(t){var e=this.bundleApps(t).map((function(t){return t.id}));this.$store.dispatch("enableApp",{appId:e,groups:[]}).catch((function(t){console.error(t),OC.Notification.show(t)}))},disableBundle:function(t){var e=this.bundleApps(t).map((function(t){return t.id}));this.$store.dispatch("disableApp",{appId:e,groups:[]}).catch((function(t){OC.Notification.show(t)}))},updateAll:function(){var t=this,e=(0,et.Z)(1);this.apps.filter((function(t){return t.update})).map((function(n){return e((function(){return t.$store.dispatch("updateApp",{appId:n.id})}))}))}}},at=(0,N.Z)(nt,(function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"app-content-inner"}},[e("div",{staticClass:"apps-list",class:{installed:t.useBundleView||t.useListView,store:t.useAppStoreView},attrs:{id:"apps-list"}},[t.useListView?[t.showUpdateAll?e("div",{staticClass:"toolbar"},[t._v("\n\t\t\t\t"+t._s(t.n("settings","%n app has an update available","%n apps have an update available",t.counter))+"\n\t\t\t\t"),t.showUpdateAll?e("NcButton",{attrs:{id:"app-list-update-all",type:"primary"},on:{click:t.updateAll}},[t._v("\n\t\t\t\t\t"+t._s(t.n("settings","Update","Update all",t.counter))+"\n\t\t\t\t")]):t._e()],1):t._e(),t._v(" "),t.showUpdateAll?t._e():e("div",{staticClass:"toolbar"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","All apps are up-to-date."))+"\n\t\t\t")]),t._v(" "),e("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},t._l(t.apps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category}})})),1)]:t._e(),t._v(" "),t.useBundleView?e("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},[t._l(t.bundles,(function(n){return[e("div",{key:n.id,staticClass:"apps-header"},[e("div",{staticClass:"app-image"}),t._v(" "),e("h2",[t._v(t._s(n.name)+" "),e("input",{attrs:{type:"button",value:t.bundleToggleText(n.id)},on:{click:function(e){return t.toggleBundle(n.id)}}})]),t._v(" "),e("div",{staticClass:"app-version"}),t._v(" "),e("div",{staticClass:"app-level"}),t._v(" "),e("div",{staticClass:"app-groups"}),t._v(" "),e("div",{staticClass:"actions"},[t._v("\n\t\t\t\t\t\t \n\t\t\t\t\t")])]),t._v(" "),t._l(t.bundleApps(n.id),(function(a){return e("AppItem",{key:n.id+a.id,attrs:{app:a,category:t.category}})}))]}))],2):t._e(),t._v(" "),t.useAppStoreView?t._l(t.apps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category,"list-view":!1}})})):t._e()],2),t._v(" "),e("div",{staticClass:"apps-list installed",attrs:{id:"apps-list-search"}},[e("div",{staticClass:"apps-list-container"},[""!==t.search&&t.searchApps.length>0?[e("div",{staticClass:"section"},[e("div"),t._v(" "),e("td",{attrs:{colspan:"5"}},[e("h2",[t._v(t._s(t.t("settings","Results from other categories")))])])]),t._v(" "),t._l(t.searchApps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category,"list-view":!0}})}))]:t._e()],2)]),t._v(" "),""===t.search||t.loading||0!==t.searchApps.length||0!==t.apps.length?t._e():e("div",{staticClass:"emptycontent emptycontent-search",attrs:{id:"apps-list-empty"}},[e("div",{staticClass:"icon-settings-dark",attrs:{id:"app-list-empty-icon"}}),t._v(" "),e("h2",[t._v(t._s(t.t("settings","No apps found for your version")))])]),t._v(" "),e("div",{attrs:{id:"searchresults"}})])}),[],!1,null,null,null).exports,it=a(98266),st=a.n(it),rt=a(87441),ot=a(27856),pt=a.n(ot),ct={name:"Markdown",props:{text:{type:String,default:""}},computed:{renderMarkdown:function(){var t=new rt.TU.Renderer;return t.link=function(t,e,n){var a;try{a=decodeURIComponent(unescape(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0!==a.indexOf("http:")&&0!==a.indexOf("https:"))return"";var i='<a href="'+t+'" rel="noreferrer noopener"';return e&&(i+=' title="'+e+'"'),i+">"+n+"</a>"},t.image=function(t,e,n){return n||e},t.blockquote=function(t){return t},pt().sanitize((0,rt.TU)(this.text.trim(),{renderer:t,gfm:!1,highlight:!1,tables:!1,breaks:!1,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!1}),{SAFE_FOR_JQUERY:!0,ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})}}},lt=a(44680),dt={};dt.styleTagTransform=W(),dt.setAttributes=Y(),dt.insert=F().bind(null,"head"),dt.domAPI=Z(),dt.insertStyleElement=H(),V()(lt.Z,dt),lt.Z&&lt.Z.locals&&lt.Z.locals;var ut=(0,N.Z)(ct,(function(){var t=this;return(0,t._self._c)("div",{staticClass:"settings-markdown",domProps:{innerHTML:t._s(t.renderMarkdown)}})}),[],!1,null,"652eb552",null).exports,gt={name:"AppDetails",components:{NcMultiselect:st(),Markdown:ut},mixins:[I,tt],props:{app:{type:Object,required:!0}},data:function(){return{groupCheckedAppsData:!1}},computed:{appstoreUrl:function(){return"https://apps.nextcloud.com/apps/".concat(this.app.id)},licence:function(){return this.app.licence?t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()}):null},author:function(){return"string"==typeof this.app.author?[{"@value":this.app.author}]:this.app.author["@value"]?[this.app.author]:this.app.author},appGroups:function(){return this.app.groups.map((function(t){return{id:t,name:t}}))},groups:function(){return this.$store.getters.getGroups.filter((function(t){return"disabled"!==t.id})).sort((function(t,e){return t.name.localeCompare(e.name)}))}},mounted:function(){this.app.groups.length>0&&(this.groupCheckedAppsData=!0)}},ht=a(7934),At={};At.styleTagTransform=W(),At.setAttributes=Y(),At.insert=F().bind(null,"head"),At.domAPI=Z(),At.insertStyleElement=H(),V()(ht.Z,At),ht.Z&&ht.Z.locals&&ht.Z.locals;var vt=(0,N.Z)(gt,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"app-details"},[e("div",{staticClass:"app-details__actions"},[t.app.active&&t.canLimitToGroups(t.app)?e("div",{staticClass:"app-details__actions-groups"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.groupCheckedAppsData,expression:"groupCheckedAppsData"}],staticClass:"groups-enable__checkbox checkbox",attrs:{id:t.prefix("groups_enable",t.app.id),type:"checkbox"},domProps:{value:t.app.id,checked:Array.isArray(t.groupCheckedAppsData)?t._i(t.groupCheckedAppsData,t.app.id)>-1:t.groupCheckedAppsData},on:{change:[function(e){var n=t.groupCheckedAppsData,a=e.target,i=!!a.checked;if(Array.isArray(n)){var s=t.app.id,r=t._i(n,s);a.checked?r<0&&(t.groupCheckedAppsData=n.concat([s])):r>-1&&(t.groupCheckedAppsData=n.slice(0,r).concat(n.slice(r+1)))}else t.groupCheckedAppsData=i},t.setGroupLimit]}}),t._v(" "),e("label",{attrs:{for:t.prefix("groups_enable",t.app.id)}},[t._v(t._s(t.t("settings","Limit to groups")))]),t._v(" "),e("input",{staticClass:"group_select",attrs:{type:"hidden",title:t.t("settings","All"),value:""}}),t._v(" "),t.isLimitedToGroups(t.app)?e("NcMultiselect",{staticClass:"multiselect-vue",attrs:{options:t.groups,value:t.appGroups,"options-limit":5,placeholder:t.t("settings","Limit app usage to groups"),label:"name","track-by":"id",multiple:!0,"close-on-select":!1,"tag-width":60},on:{select:t.addGroupLimitation,remove:t.removeGroupLimitation,"search-change":t.asyncFindGroup}},[e("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])]):t._e()],1):t._e(),t._v(" "),e("div",{staticClass:"app-details__actions-manage"},[t.app.update?e("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {version}",{version:t.app.update}),disabled:t.installing||t.isLoading},on:{click:function(e){return t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?e("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.isLoading},on:{click:function(e){return t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?e("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.isLoading},on:{click:function(e){return t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active||t.app.canInstall?t._e():e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.isLoading},on:{click:function(e){return t.forceEnable(t.app.id)}}}):e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable primary",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.isLoading},on:{click:function(e){return t.enable(t.app.id)}}})])]),t._v(" "),e("ul",{staticClass:"app-details__dependencies"},[t.app.missingMinOwnCloudVersion?e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app has no minimum Nextcloud version assigned. This will be an error in the future."))+"\n\t\t")]):t._e(),t._v(" "),t.app.missingMaxOwnCloudVersion?e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app has no maximum Nextcloud version assigned. This will be an error in the future."))+"\n\t\t")]):t._e(),t._v(" "),t.app.canInstall?t._e():e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app cannot be installed because the following dependencies are not fulfilled:"))+"\n\t\t\t"),e("ul",{staticClass:"missing-dependencies"},t._l(t.app.missingDependencies,(function(n,a){return e("li",{key:a},[t._v("\n\t\t\t\t\t"+t._s(n)+"\n\t\t\t\t")])})),0)])]),t._v(" "),e("p",{staticClass:"app-details__documentation"},[t.app.internal?t._e():e("a",{staticClass:"appslink",attrs:{href:t.appstoreUrl,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","View in store"))+" ↗")]),t._v(" "),t.app.website?e("a",{staticClass:"appslink",attrs:{href:t.app.website,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Visit website"))+" ↗")]):t._e(),t._v(" "),t.app.bugs?e("a",{staticClass:"appslink",attrs:{href:t.app.bugs,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Report a bug"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.user?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.user,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","User documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.admin?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.admin,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Admin documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.developer?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.developer,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Developer documentation"))+" ↗")]):t._e()]),t._v(" "),e("Markdown",{staticClass:"app-details__description",attrs:{text:t.app.description}})],1)}),[],!1,null,"43fb27d0",null).exports,ft=a(92652);s.ZP.use(o());var mt={name:"Apps",APPS_SECTION_ENUM:ft.J,components:{NcAppContent:c(),AppDetails:vt,AppList:at,NcAppNavigation:d(),NcAppNavigationCounter:g(),NcAppNavigationItem:A(),NcAppNavigationSpacer:f(),AppScore:D,NcAppSidebar:b(),NcAppSidebarTab:_(),NcContent:w(),Markdown:ut},mixins:[I],props:{category:{type:String,default:"installed"},id:{type:String,default:""}},data:function(){return{searchQuery:"",screenshotLoaded:!1}},computed:{loading:function(){return this.$store.getters.loading("categories")},loadingList:function(){return this.$store.getters.loading("list")},app:function(){var t=this;return this.apps.find((function(e){return e.id===t.id}))},categories:function(){return this.$store.getters.getCategories},apps:function(){return this.$store.getters.getAllApps},updateCount:function(){return this.$store.getters.getUpdateCount},settings:function(){return this.$store.getters.getServerData},hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5},appSidebar:function(){var e=function(t){return t["@value"]?t["@value"]:t},n=Array.isArray(this.app.author)?this.app.author.map(e).join(", "):e(this.app.author),a=t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()});return{subtitle:t("settings","by {author}\n{license}",{author:n,license:a}),background:this.app.screenshot&&this.screenshotLoaded?this.app.screenshot:this.app.preview,compact:!(this.app.screenshot&&this.screenshotLoaded),title:this.app.name}},changelog:function(){return function(t){return t.translations.en.changelog}}},watch:{category:function(){this.searchQuery=""},app:function(){var t,e,n=this;if(this.screenshotLoaded=!1,null!==(t=this.app)&&void 0!==t&&t.releases&&null!==(e=this.app)&&void 0!==e&&e.screenshot){var a=new Image;a.onload=function(t){n.screenshotLoaded=!0},a.src=this.app.screenshot}}},beforeMount:function(){this.$store.dispatch("getCategories",{shouldRefetchCategories:!0}),this.$store.dispatch("getAllApps"),this.$store.dispatch("getGroups",{offset:0,limit:5}),this.$store.commit("setUpdateCount",this.$store.getters.getServerData.updateCount)},mounted:function(){(0,i.Ld)("nextcloud:unified-search.search",this.setSearch),(0,i.Ld)("nextcloud:unified-search.reset",this.resetSearch)},beforeDestroy:function(){(0,i.r1)("nextcloud:unified-search.search",this.setSearch),(0,i.r1)("nextcloud:unified-search.reset",this.resetSearch)},methods:{setSearch:function(t){var e=t.query;this.searchQuery=e},resetSearch:function(){this.searchQuery=""},hideAppDetails:function(){this.$router.push({name:"apps-category",params:{category:this.category}})},openDeveloperDocumentation:function(){window.open(this.settings.developerDocumentation)}}},bt=a(60315),Ct={};Ct.styleTagTransform=W(),Ct.setAttributes=Y(),Ct.insert=F().bind(null,"head"),Ct.domAPI=Z(),Ct.insertStyleElement=H(),V()(bt.Z,Ct),bt.Z&&bt.Z.locals&&bt.Z.locals;var _t=(0,N.Z)(mt,(function(){var t=this,e=t._self._c;return e("NcContent",{class:{"with-app-sidebar":t.app},attrs:{"app-name":"settings","content-class":{"icon-loading":t.loadingList},"navigation-class":{"icon-loading":t.loading}}},[e("NcAppNavigation",{scopedSlots:t._u([{key:"list",fn:function(){return[e("NcAppNavigationItem",{attrs:{id:"app-category-your-apps",to:{name:"apps"},exact:!0,icon:"icon-category-installed",title:t.t("settings","Your apps")}}),t._v(" "),e("NcAppNavigationItem",{attrs:{id:"app-category-enabled",to:{name:"apps-category",params:{category:"enabled"}},icon:"icon-category-enabled",title:t.$options.APPS_SECTION_ENUM.enabled}}),t._v(" "),e("NcAppNavigationItem",{attrs:{id:"app-category-disabled",to:{name:"apps-category",params:{category:"disabled"}},icon:"icon-category-disabled",title:t.$options.APPS_SECTION_ENUM.disabled}}),t._v(" "),t.updateCount>0?e("NcAppNavigationItem",{attrs:{id:"app-category-updates",to:{name:"apps-category",params:{category:"updates"}},icon:"icon-download",title:t.$options.APPS_SECTION_ENUM.updates}},[e("NcAppNavigationCounter",{attrs:{slot:"counter"},slot:"counter"},[t._v("\n\t\t\t\t\t"+t._s(t.updateCount)+"\n\t\t\t\t")])],1):t._e(),t._v(" "),e("NcAppNavigationItem",{attrs:{id:"app-category-your-bundles",to:{name:"apps-category",params:{category:"app-bundles"}},icon:"icon-category-app-bundles",title:t.$options.APPS_SECTION_ENUM["app-bundles"]}}),t._v(" "),e("NcAppNavigationSpacer"),t._v(" "),t.settings.appstoreEnabled?[e("NcAppNavigationItem",{attrs:{id:"app-category-featured",to:{name:"apps-category",params:{category:"featured"}},icon:"icon-favorite",title:t.$options.APPS_SECTION_ENUM.featured}}),t._v(" "),t._l(t.categories,(function(t){return e("NcAppNavigationItem",{key:"icon-category-"+t.ident,attrs:{icon:"icon-category-"+t.ident,to:{name:"apps-category",params:{category:t.ident}},title:t.displayName}})}))]:t._e(),t._v(" "),e("NcAppNavigationItem",{attrs:{id:"app-developer-docs",title:t.t("settings","Developer documentation")+" ↗"},on:{click:t.openDeveloperDocumentation}})]},proxy:!0}])}),t._v(" "),e("NcAppContent",{staticClass:"app-settings-content",class:{"icon-loading":t.loadingList}},[e("AppList",{attrs:{category:t.category,app:t.app,search:t.searchQuery}})],1),t._v(" "),t.id&&t.app?e("NcAppSidebar",t._b({class:{"app-sidebar--without-background":!t.appSidebar.background},on:{close:t.hideAppDetails},scopedSlots:t._u([t.appSidebar.background?null:{key:"header",fn:function(){return[e("div",{staticClass:"app-sidebar-header__figure--default-app-icon icon-settings-dark"})]},proxy:!0},{key:"description",fn:function(){return[300===t.app.level||200===t.app.level||t.hasRating?e("div",{staticClass:"app-level"},[300===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Featured")))]):t._e(),t._v(" "),t.hasRating?e("AppScore",{attrs:{score:t.app.appstoreData.ratingOverall}}):t._e()],1):t._e(),t._v(" "),e("div",{staticClass:"app-version"},[e("p",[t._v(t._s(t.app.version))])])]},proxy:!0}],null,!0)},"NcAppSidebar",t.appSidebar,!1),[t._v(" "),t._v(" "),e("NcAppSidebarTab",{attrs:{id:"desc",icon:"icon-category-office",name:t.t("settings","Details"),order:0}},[e("AppDetails",{attrs:{app:t.app}})],1),t._v(" "),t.app.appstoreData&&t.app.releases[0].translations.en.changelog?e("NcAppSidebarTab",{attrs:{id:"desca",icon:"icon-category-organization",name:t.t("settings","Changelog"),order:1}},t._l(t.app.releases,(function(n){return e("div",{key:n.version,staticClass:"app-sidebar-tabs__release"},[e("h2",[t._v(t._s(n.version))]),t._v(" "),t.changelog(n)?e("Markdown",{attrs:{text:t.changelog(n)}}):t._e()],1)})),0):t._e()],1):t._e()],1)}),[],!1,null,"59100a8c",null).exports}}]);
-//# sourceMappingURL=settings-apps-view-7418.js.map?v=fc224c568df173958cf1 \ No newline at end of file
+"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[7418],{7934:function(t,e,n){var a=n(87537),i=n.n(a),s=n(23645),r=n.n(s)()(i());r.push([t.id,".app-details[data-v-43fb27d0]{padding:20px}.app-details__actions-manage[data-v-43fb27d0]{display:flex}.app-details__actions-manage input[data-v-43fb27d0]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-43fb27d0]{opacity:.7}.app-details__documentation[data-v-43fb27d0]{padding-top:20px}.app-details__description[data-v-43fb27d0]{padding-top:20px}.force[data-v-43fb27d0]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-43fb27d0]:hover,.force[data-v-43fb27d0]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}","",{version:3,sources:["webpack://./apps/settings/src/components/AppDetails.vue"],names:[],mappings:"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CAED,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA",sourcesContent:["\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n"],sourceRoot:""}]),e.Z=r},44680:function(t,e,n){var a=n(87537),i=n.n(a),s=n(23645),r=n.n(s)()(i());r.push([t.id,".settings-markdown[data-v-652eb552] h1,.settings-markdown[data-v-652eb552] h2,.settings-markdown[data-v-652eb552] h3,.settings-markdown[data-v-652eb552] h4,.settings-markdown[data-v-652eb552] h5,.settings-markdown[data-v-652eb552] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-652eb552] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-652eb552] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-652eb552] h3{font-size:24px}.settings-markdown[data-v-652eb552] h4{font-size:21px}.settings-markdown[data-v-652eb552] h5{font-size:17px}.settings-markdown[data-v-652eb552] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-652eb552] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-652eb552] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-652eb552] li{position:relative}.settings-markdown[data-v-652eb552] ul,.settings-markdown[data-v-652eb552] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-652eb552] ul li{list-style-type:disc}.settings-markdown[data-v-652eb552] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-652eb552] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-652eb552] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}","",{version:3,sources:["webpack://./apps/settings/src/components/Markdown.vue"],names:[],mappings:"AAGA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA",sourcesContent:["\n.settings-markdown::v-deep {\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n\tfont-weight: 600;\n\tline-height: 120%;\n\tmargin-top: 24px;\n\tmargin-bottom: 12px;\n\tcolor: var(--color-main-text);\n}\n\nh1 {\n\tfont-size: 36px;\n\tmargin-top: 48px;\n}\n\nh2 {\n\tfont-size: 28px;\n\tmargin-top: 48px;\n}\n\nh3 {\n\tfont-size: 24px;\n}\n\nh4 {\n\tfont-size: 21px;\n}\n\nh5 {\n\tfont-size: 17px;\n}\n\nh6 {\n\tfont-size: var(--default-font-size);\n}\n\npre {\n\twhite-space: pre;\n\toverflow-x: auto;\n\tbackground-color: var(--color-background-dark);\n\tborder-radius: var(--border-radius);\n\tpadding: 1em 1.3em;\n\tmargin-bottom: 1em;\n}\n\np code {\n\tbackground-color: var(--color-background-dark);\n\tborder-radius: var(--border-radius);\n\tpadding: .1em .3em;\n}\n\nli {\n\tposition: relative;\n}\n\nul, ol {\n\tpadding-left: 10px;\n\tmargin-left: 10px;\n}\n\nul li {\n\tlist-style-type: disc;\n}\n\nul > li > ul > li {\n\tlist-style-type: circle;\n}\n\nul > li > ul > li ul li {\n\tlist-style-type: square;\n}\n\nblockquote {\n\tpadding-left: 1em;\n\tborder-left: 4px solid var(--color-primary-element);\n\tcolor: var(--color-text-maxcontrast);\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n}\n"],sourceRoot:""}]),e.Z=r},37648:function(t,e,n){var a=n(87537),i=n.n(a),s=n(23645),r=n.n(s)()(i());r.push([t.id,".app-sidebar[data-v-5a76915a]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-5a76915a]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:var(--background-invert-if-bright)}.app-sidebar[data-v-5a76915a] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-5a76915a].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-5a76915a].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-5a76915a] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-5a76915a] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-5a76915a] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-5a76915a] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-5a76915a]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-5a76915a] h3{font-size:20px}.app-sidebar-tabs__release[data-v-5a76915a] h4{font-size:17px}","",{version:3,sources:["webpack://./apps/settings/src/views/Apps.vue"],names:[],mappings:"AAIE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,yCAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,+CACC,cAAA,CAED,+CACC,cAAA",sourcesContent:["\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=r},28952:function(t,e,n){var a=n(87537),i=n.n(a),s=n(23645),r=n.n(s)()(i());r.push([t.id,"\n.app-icon[data-v-4a912665] {\n\tfilter: var(--background-invert-if-bright);\n}\n.actions[data-v-4a912665] {\n\tdisplay: flex !important;\n\tgap: 8px;\n\tflex-wrap: wrap;\n\tjustify-content: end;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/AppList/AppItem.vue"],names:[],mappings:";AAkMA;CACA,0CAAA;AACA;AACA;CACA,wBAAA;CACA,QAAA;CACA,eAAA;CACA,oBAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div class="section" :class="{ selected: isSelected }" @click="showAppDetails">\n\t\t<div class="app-image app-image-icon" @click="showAppDetails">\n\t\t\t<div v-if="(listView && !app.preview) || (!listView && !screenshotLoaded)" class="icon-settings-dark" />\n\n\t\t\t<svg v-else-if="listView && app.preview"\n\t\t\t\twidth="32"\n\t\t\t\theight="32"\n\t\t\t\tviewBox="0 0 32 32">\n\t\t\t\t<image x="0"\n\t\t\t\t\ty="0"\n\t\t\t\t\twidth="32"\n\t\t\t\t\theight="32"\n\t\t\t\t\tpreserveAspectRatio="xMinYMin meet"\n\t\t\t\t\t:xlink:href="app.preview"\n\t\t\t\t\tclass="app-icon" />\n\t\t\t</svg>\n\n\t\t\t<img v-if="!listView && app.screenshot && screenshotLoaded" :src="app.screenshot" width="100%">\n\t\t</div>\n\t\t<div class="app-name" @click="showAppDetails">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if="!listView" class="app-summary">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if="listView" class="app-version">\n\t\t\t<span v-if="app.version">{{ app.version }}</span>\n\t\t\t<span v-else-if="app.appstoreData.releases[0].version">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class="app-level">\n\t\t\t<span v-if="app.level === 300"\n\t\t\t\t:title="t(\'settings\', \'This app is supported via your current Nextcloud subscription.\')"\n\t\t\t\t:aria-label="t(\'settings\', \'This app is supported via your current Nextcloud subscription.\')"\n\t\t\t\tclass="supported icon-checkmark-color">\n\t\t\t\t{{ t(\'settings\', \'Supported\') }}</span>\n\t\t\t<span v-if="app.level === 200"\n\t\t\t\t:title="t(\'settings\', \'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.\')"\n\t\t\t\t:aria-label="t(\'settings\', \'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.\')"\n\t\t\t\tclass="official icon-checkmark">\n\t\t\t\t{{ t(\'settings\', \'Featured\') }}</span>\n\t\t\t<AppScore v-if="hasRating && !listView" :score="app.score" />\n\t\t</div>\n\n\t\t<div class="actions">\n\t\t\t<div v-if="app.error" class="warning">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if="isLoading" class="icon icon-loading-small" />\n\t\t\t<NcButton v-if="app.update"\n\t\t\t\ttype="primary"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="update(app.id)">\n\t\t\t\t{{ t(\'settings\', \'Update to {update}\', {update:app.update}) }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if="app.canUnInstall"\n\t\t\t\tclass="uninstall"\n\t\t\t\ttype="tertiary"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="remove(app.id)">\n\t\t\t\t{{ t(\'settings\', \'Remove\') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if="app.active"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="disable(app.id)">\n\t\t\t\t{{ t(\'settings\',\'Disable\') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if="!app.active && (app.canInstall || app.isCompatible)"\n\t\t\t\t:title="enableButtonTooltip"\n\t\t\t\t:aria-label="enableButtonTooltip"\n\t\t\t\ttype="primary"\n\t\t\t\t:disabled="!app.canInstall || installing || isLoading"\n\t\t\t\t@click.stop="enable(app.id)">\n\t\t\t\t{{ enableButtonText }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-else-if="!app.active"\n\t\t\t\t:title="forceEnableButtonTooltip"\n\t\t\t\t:aria-label="forceEnableButtonTooltip"\n\t\t\t\ttype="secondary"\n\t\t\t\t:disabled="installing || isLoading"\n\t\t\t\t@click.stop="forceEnable(app.id)">\n\t\t\t\t{{ forceEnableButtonText }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from \'./AppScore.vue\'\nimport AppManagement from \'../../mixins/AppManagement.js\'\nimport SvgFilterMixin from \'../SvgFilterMixin.vue\'\nimport NcButton from \'@nextcloud/vue/dist/Components/NcButton.js\'\n\nexport default {\n\tname: \'AppItem\',\n\tcomponents: {\n\t\tAppScore,\n\t\tNcButton,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t\'$route.params.id\'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === \'INPUT\' || event.currentTarget.tagName === \'A\') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: \'apps-details\',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + \'_\' + content\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.app-icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n\t.actions {\n\t\tdisplay: flex !important;\n\t\tgap: 8px;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: end;\n\t}\n</style>\n'],sourceRoot:""}]),e.Z=r},573:function(e,n,a){a.r(n),a.d(n,{default:function(){return _t}});var i=a(78595),s=a(20144),r=a(87369),o=a.n(r),p=a(69680),l=a.n(p),c=a(55209),d=a.n(c),u=a(53110),g=a.n(u),h=a(14032),A=a.n(h),v=a(47493),f=a.n(v),m=a(10250),b=a.n(m),C=a(62574),_=a.n(C),y=a(27472),w=a.n(y),k=a(79753),x={name:"AppScore",props:["score"],computed:{scoreImage:function(){var t="rating/s"+Math.round(10*this.score)+".svg";return(0,k.imagePath)("core",t)}}},N=a(51900),B=(0,N.Z)(x,(function(){return(0,this._self._c)("img",{staticClass:"app-score-image",attrs:{src:this.scoreImage}})}),[],!1,null,null,null).exports,D=a(26932),T=a(4820),S=function(){return T.default.get((0,k.generateOcsUrl)("core/navigation",2)+"/apps?format=json").then((function(t){var e=t.data;200===e.ocs.meta.statuscode&&((0,i.j8)("nextcloud:app-menu.refresh",{apps:e.ocs.data}),window.dispatchEvent(new Event("resize")))}))},I={computed:{appGroups:function(){return this.app.groups.map((function(t){return{id:t,name:t}}))},installing:function(){return this.$store.getters.loading("install")},isLoading:function(){return this.app&&this.$store.getters.loading(this.app.id)},enableButtonText:function(){return this.app.needsDownload?t("settings","Download and enable"):t("settings","Enable")},forceEnableButtonText:function(){return this.app.needsDownload,t("settings","Enable untested app")},enableButtonTooltip:function(){return!!this.app.needsDownload&&t("settings","The app will be downloaded from the App Store")},forceEnableButtonTooltip:function(){var e=t("settings","This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.");return this.app.needsDownload?e+" "+t("settings","The app will be downloaded from the App Store"):e}},data:function(){return{groupCheckedAppsData:!1}},mounted:function(){this.app&&this.app.groups&&this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},methods:{asyncFindGroup:function(t){return this.$store.dispatch("getGroups",{search:t,limit:5,offset:0})},isLimitedToGroups:function(t){return!(!this.app.groups.length&&!this.groupCheckedAppsData)},setGroupLimit:function(){this.groupCheckedAppsData||this.$store.dispatch("enableApp",{appId:this.app.id,groups:[]})},canLimitToGroups:function(t){return!(t.types&&t.types.includes("filesystem")||t.types.includes("prelogin")||t.types.includes("authentication")||t.types.includes("logging")||t.types.includes("prevent_group_restriction"))},addGroupLimitation:function(t){var e=this.app.groups.concat([]).concat([t.id]);this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},removeGroupLimitation:function(t){var e=this.app.groups.concat([]),n=e.indexOf(t.id);n>-1&&e.splice(n,1),this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},forceEnable:function(t){this.$store.dispatch("forceEnableApp",{appId:t,groups:[]}).then((function(t){S()})).catch((function(t){(0,D.x2)(t)}))},enable:function(t){this.$store.dispatch("enableApp",{appId:t,groups:[]}).then((function(t){S()})).catch((function(t){(0,D.x2)(t)}))},disable:function(t){this.$store.dispatch("disableApp",{appId:t}).then((function(t){S()})).catch((function(t){(0,D.x2)(t)}))},remove:function(t){this.$store.dispatch("uninstallApp",{appId:t}).then((function(t){S()})).catch((function(t){(0,D.x2)(t)}))},install:function(t){this.$store.dispatch("enableApp",{appId:t}).then((function(t){S()})).catch((function(t){(0,D.x2)(t)}))},update:function(t){this.$store.dispatch("updateApp",{appId:t}).then((function(t){S()})).catch((function(t){(0,D.x2)(t)}))}}},L={name:"SvgFilterMixin",data:function(){return{filterId:""}},computed:{filterUrl:function(){return"url(#".concat(this.filterId,")")}},mounted:function(){this.filterId="invertIconApps-"+Math.random().toString(36).substring(2)}},E=(0,N.Z)(L,void 0,void 0,!1,null,null,null).exports,U=a(10861),G=a.n(U);function $(t,e,n,a,i,s,r){try{var o=t[s](r),p=o.value}catch(t){return void n(t)}o.done?e(p):Promise.resolve(p).then(a,i)}var M={name:"AppItem",components:{AppScore:B,NcButton:G()},mixins:[I,E],props:{app:{},category:{},listView:{type:Boolean,default:!0}},data:function(){return{isSelected:!1,scrolled:!1,screenshotLoaded:!1}},computed:{hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5}},watch:{"$route.params.id":function(t){this.isSelected=this.app.id===t}},mounted:function(){var t=this;if(this.isSelected=this.app.id===this.$route.params.id,this.app.releases&&this.app.screenshot){var e=new Image;e.onload=function(e){t.screenshotLoaded=!0},e.src=this.app.screenshot}},watchers:{},methods:{showAppDetails:function(t){var e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("INPUT"!==t.currentTarget.tagName&&"A"!==t.currentTarget.tagName){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,n.$router.push({name:"apps-details",params:{category:n.category,id:n.app.id}});case 5:e.next=9;break;case 7:e.prev=7,e.t0=e.catch(2);case 9:case"end":return e.stop()}}),e,null,[[2,7]])})),function(){var t=this,n=arguments;return new Promise((function(a,i){var s=e.apply(t,n);function r(t){$(s,a,i,r,o,"next",t)}function o(t){$(s,a,i,r,o,"throw",t)}r(void 0)}))})()},prefix:function(t,e){return t+"_"+e}}},P=M,R=a(93379),V=a.n(R),O=a(7795),Z=a.n(O),z=a(90569),F=a.n(z),j=a(3565),Y=a.n(j),q=a(19216),H=a.n(q),Q=a(44589),W=a.n(Q),J=a(28952),K={};K.styleTagTransform=W(),K.setAttributes=Y(),K.insert=F().bind(null,"head"),K.domAPI=Z(),K.insertStyleElement=H(),V()(J.Z,K),J.Z&&J.Z.locals&&J.Z.locals;var X=(0,N.Z)(P,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"section",class:{selected:t.isSelected},on:{click:t.showAppDetails}},[e("div",{staticClass:"app-image app-image-icon",on:{click:t.showAppDetails}},[t.listView&&!t.app.preview||!t.listView&&!t.screenshotLoaded?e("div",{staticClass:"icon-settings-dark"}):t.listView&&t.app.preview?e("svg",{attrs:{width:"32",height:"32",viewBox:"0 0 32 32"}},[e("image",{staticClass:"app-icon",attrs:{x:"0",y:"0",width:"32",height:"32",preserveAspectRatio:"xMinYMin meet","xlink:href":t.app.preview}})]):t._e(),t._v(" "),!t.listView&&t.app.screenshot&&t.screenshotLoaded?e("img",{attrs:{src:t.app.screenshot,width:"100%"}}):t._e()]),t._v(" "),e("div",{staticClass:"app-name",on:{click:t.showAppDetails}},[t._v("\n\t\t"+t._s(t.app.name)+"\n\t")]),t._v(" "),t.listView?t._e():e("div",{staticClass:"app-summary"},[t._v("\n\t\t"+t._s(t.app.summary)+"\n\t")]),t._v(" "),t.listView?e("div",{staticClass:"app-version"},[t.app.version?e("span",[t._v(t._s(t.app.version))]):t.app.appstoreData.releases[0].version?e("span",[t._v(t._s(t.app.appstoreData.releases[0].version))]):t._e()]):t._e(),t._v(" "),e("div",{staticClass:"app-level"},[300===t.app.level?e("span",{staticClass:"supported icon-checkmark-color",attrs:{title:t.t("settings","This app is supported via your current Nextcloud subscription."),"aria-label":t.t("settings","This app is supported via your current Nextcloud subscription.")}},[t._v("\n\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?e("span",{staticClass:"official icon-checkmark",attrs:{title:t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."),"aria-label":t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use.")}},[t._v("\n\t\t\t"+t._s(t.t("settings","Featured")))]):t._e(),t._v(" "),t.hasRating&&!t.listView?e("AppScore",{attrs:{score:t.app.score}}):t._e()],1),t._v(" "),e("div",{staticClass:"actions"},[t.app.error?e("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.app.error)+"\n\t\t")]):t._e(),t._v(" "),t.isLoading?e("div",{staticClass:"icon icon-loading-small"}):t._e(),t._v(" "),t.app.update?e("NcButton",{attrs:{type:"primary",disabled:t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.update(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Update to {update}",{update:t.app.update}))+"\n\t\t")]):t._e(),t._v(" "),t.app.canUnInstall?e("NcButton",{staticClass:"uninstall",attrs:{type:"tertiary",disabled:t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.remove(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Remove"))+"\n\t\t")]):t._e(),t._v(" "),t.app.active?e("NcButton",{attrs:{disabled:t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.disable(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Disable"))+"\n\t\t")]):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active?t._e():e("NcButton",{attrs:{title:t.forceEnableButtonTooltip,"aria-label":t.forceEnableButtonTooltip,type:"secondary",disabled:t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.forceEnable(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.forceEnableButtonText)+"\n\t\t")]):e("NcButton",{attrs:{title:t.enableButtonTooltip,"aria-label":t.enableButtonTooltip,type:"primary",disabled:!t.app.canInstall||t.installing||t.isLoading},on:{click:function(e){return e.stopPropagation(),t.enable(t.app.id)}}},[t._v("\n\t\t\t"+t._s(t.enableButtonText)+"\n\t\t")])],1)])}),[],!1,null,"4a912665",null).exports,tt=(0,N.Z)({name:"PrefixMixin",methods:{prefix:function(t,e){return t+"_"+e}}},void 0,void 0,!1,null,null,null).exports,et=a(63560),nt={name:"AppList",components:{AppItem:X,NcButton:G()},mixins:[tt],props:["category","app","search"],computed:{counter:function(){return this.apps.filter((function(t){return t.update})).length},loading:function(){return this.$store.getters.loading("list")},hasPendingUpdate:function(){return this.apps.filter((function(t){return t.update})).length>0},showUpdateAll:function(){return this.hasPendingUpdate&&this.useListView},apps:function(){var t=this,e=this.$store.getters.getAllApps.filter((function(e){return-1!==e.name.toLowerCase().search(t.search.toLowerCase())})).sort((function(t,e){var n=""+(t.active?0:1)+(t.update?0:1)+t.name,a=""+(e.active?0:1)+(e.update?0:1)+e.name;return OC.Util.naturalSortCompare(n,a)}));return"installed"===this.category?e.filter((function(t){return t.installed})):"enabled"===this.category?e.filter((function(t){return t.active&&t.installed})):"disabled"===this.category?e.filter((function(t){return!t.active&&t.installed})):"app-bundles"===this.category?e.filter((function(t){return t.bundles})):"updates"===this.category?e.filter((function(t){return t.update})):"featured"===this.category?e.filter((function(t){return 200===t.level})):e.filter((function(e){return e.appstore&&void 0!==e.category&&(e.category===t.category||e.category.indexOf(t.category)>-1)}))},bundles:function(){var t=this;return this.$store.getters.getServerData.bundles.filter((function(e){return t.bundleApps(e.id).length>0}))},bundleApps:function(){return function(t){return this.$store.getters.getAllApps.filter((function(e){return void 0!==e.bundleIds&&e.bundleIds.includes(t)}))}},searchApps:function(){var t=this;return""===this.search?[]:this.$store.getters.getAllApps.filter((function(e){return-1!==e.name.toLowerCase().search(t.search.toLowerCase())&&!t.apps.find((function(t){return t.id===e.id}))}))},useAppStoreView:function(){return!this.useListView&&!this.useBundleView},useListView:function(){return"installed"===this.category||"enabled"===this.category||"disabled"===this.category||"updates"===this.category||"featured"===this.category},useBundleView:function(){return"app-bundles"===this.category},allBundlesEnabled:function(){var t=this;return function(e){return 0===t.bundleApps(e).filter((function(t){return!t.active})).length}},bundleToggleText:function(){var e=this;return function(n){return e.allBundlesEnabled(n)?t("settings","Disable all"):t("settings","Enable all")}}},methods:{toggleBundle:function(t){return this.allBundlesEnabled(t)?this.disableBundle(t):this.enableBundle(t)},enableBundle:function(t){var e=this.bundleApps(t).map((function(t){return t.id}));this.$store.dispatch("enableApp",{appId:e,groups:[]}).catch((function(t){console.error(t),OC.Notification.show(t)}))},disableBundle:function(t){var e=this.bundleApps(t).map((function(t){return t.id}));this.$store.dispatch("disableApp",{appId:e,groups:[]}).catch((function(t){OC.Notification.show(t)}))},updateAll:function(){var t=this,e=(0,et.Z)(1);this.apps.filter((function(t){return t.update})).map((function(n){return e((function(){return t.$store.dispatch("updateApp",{appId:n.id})}))}))}}},at=(0,N.Z)(nt,(function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"app-content-inner"}},[e("div",{staticClass:"apps-list",class:{installed:t.useBundleView||t.useListView,store:t.useAppStoreView},attrs:{id:"apps-list"}},[t.useListView?[t.showUpdateAll?e("div",{staticClass:"toolbar"},[t._v("\n\t\t\t\t"+t._s(t.n("settings","%n app has an update available","%n apps have an update available",t.counter))+"\n\t\t\t\t"),t.showUpdateAll?e("NcButton",{attrs:{id:"app-list-update-all",type:"primary"},on:{click:t.updateAll}},[t._v("\n\t\t\t\t\t"+t._s(t.n("settings","Update","Update all",t.counter))+"\n\t\t\t\t")]):t._e()],1):t._e(),t._v(" "),t.showUpdateAll?t._e():e("div",{staticClass:"toolbar"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","All apps are up-to-date."))+"\n\t\t\t")]),t._v(" "),e("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},t._l(t.apps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category}})})),1)]:t._e(),t._v(" "),t.useBundleView?e("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},[t._l(t.bundles,(function(n){return[e("div",{key:n.id,staticClass:"apps-header"},[e("div",{staticClass:"app-image"}),t._v(" "),e("h2",[t._v(t._s(n.name)+" "),e("input",{attrs:{type:"button",value:t.bundleToggleText(n.id)},on:{click:function(e){return t.toggleBundle(n.id)}}})]),t._v(" "),e("div",{staticClass:"app-version"}),t._v(" "),e("div",{staticClass:"app-level"}),t._v(" "),e("div",{staticClass:"app-groups"}),t._v(" "),e("div",{staticClass:"actions"},[t._v("\n\t\t\t\t\t\t \n\t\t\t\t\t")])]),t._v(" "),t._l(t.bundleApps(n.id),(function(a){return e("AppItem",{key:n.id+a.id,attrs:{app:a,category:t.category}})}))]}))],2):t._e(),t._v(" "),t.useAppStoreView?t._l(t.apps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category,"list-view":!1}})})):t._e()],2),t._v(" "),e("div",{staticClass:"apps-list installed",attrs:{id:"apps-list-search"}},[e("div",{staticClass:"apps-list-container"},[""!==t.search&&t.searchApps.length>0?[e("div",{staticClass:"section"},[e("div"),t._v(" "),e("td",{attrs:{colspan:"5"}},[e("h2",[t._v(t._s(t.t("settings","Results from other categories")))])])]),t._v(" "),t._l(t.searchApps,(function(n){return e("AppItem",{key:n.id,attrs:{app:n,category:t.category,"list-view":!0}})}))]:t._e()],2)]),t._v(" "),""===t.search||t.loading||0!==t.searchApps.length||0!==t.apps.length?t._e():e("div",{staticClass:"emptycontent emptycontent-search",attrs:{id:"apps-list-empty"}},[e("div",{staticClass:"icon-settings-dark",attrs:{id:"app-list-empty-icon"}}),t._v(" "),e("h2",[t._v(t._s(t.t("settings","No apps found for your version")))])]),t._v(" "),e("div",{attrs:{id:"searchresults"}})])}),[],!1,null,null,null).exports,it=a(98266),st=a.n(it),rt=a(87441),ot=a(27856),pt=a.n(ot),lt={name:"Markdown",props:{text:{type:String,default:""}},computed:{renderMarkdown:function(){var t=new rt.TU.Renderer;return t.link=function(t,e,n){var a;try{a=decodeURIComponent(unescape(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0!==a.indexOf("http:")&&0!==a.indexOf("https:"))return"";var i='<a href="'+t+'" rel="noreferrer noopener"';return e&&(i+=' title="'+e+'"'),i+">"+n+"</a>"},t.image=function(t,e,n){return n||e},t.blockquote=function(t){return t},pt().sanitize((0,rt.TU)(this.text.trim(),{renderer:t,gfm:!1,highlight:!1,tables:!1,breaks:!1,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!1}),{SAFE_FOR_JQUERY:!0,ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})}}},ct=a(44680),dt={};dt.styleTagTransform=W(),dt.setAttributes=Y(),dt.insert=F().bind(null,"head"),dt.domAPI=Z(),dt.insertStyleElement=H(),V()(ct.Z,dt),ct.Z&&ct.Z.locals&&ct.Z.locals;var ut=(0,N.Z)(lt,(function(){var t=this;return(0,t._self._c)("div",{staticClass:"settings-markdown",domProps:{innerHTML:t._s(t.renderMarkdown)}})}),[],!1,null,"652eb552",null).exports,gt={name:"AppDetails",components:{NcMultiselect:st(),Markdown:ut},mixins:[I,tt],props:{app:{type:Object,required:!0}},data:function(){return{groupCheckedAppsData:!1}},computed:{appstoreUrl:function(){return"https://apps.nextcloud.com/apps/".concat(this.app.id)},licence:function(){return this.app.licence?t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()}):null},author:function(){return"string"==typeof this.app.author?[{"@value":this.app.author}]:this.app.author["@value"]?[this.app.author]:this.app.author},appGroups:function(){return this.app.groups.map((function(t){return{id:t,name:t}}))},groups:function(){return this.$store.getters.getGroups.filter((function(t){return"disabled"!==t.id})).sort((function(t,e){return t.name.localeCompare(e.name)}))}},mounted:function(){this.app.groups.length>0&&(this.groupCheckedAppsData=!0)}},ht=a(7934),At={};At.styleTagTransform=W(),At.setAttributes=Y(),At.insert=F().bind(null,"head"),At.domAPI=Z(),At.insertStyleElement=H(),V()(ht.Z,At),ht.Z&&ht.Z.locals&&ht.Z.locals;var vt=(0,N.Z)(gt,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"app-details"},[e("div",{staticClass:"app-details__actions"},[t.app.active&&t.canLimitToGroups(t.app)?e("div",{staticClass:"app-details__actions-groups"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.groupCheckedAppsData,expression:"groupCheckedAppsData"}],staticClass:"groups-enable__checkbox checkbox",attrs:{id:t.prefix("groups_enable",t.app.id),type:"checkbox"},domProps:{value:t.app.id,checked:Array.isArray(t.groupCheckedAppsData)?t._i(t.groupCheckedAppsData,t.app.id)>-1:t.groupCheckedAppsData},on:{change:[function(e){var n=t.groupCheckedAppsData,a=e.target,i=!!a.checked;if(Array.isArray(n)){var s=t.app.id,r=t._i(n,s);a.checked?r<0&&(t.groupCheckedAppsData=n.concat([s])):r>-1&&(t.groupCheckedAppsData=n.slice(0,r).concat(n.slice(r+1)))}else t.groupCheckedAppsData=i},t.setGroupLimit]}}),t._v(" "),e("label",{attrs:{for:t.prefix("groups_enable",t.app.id)}},[t._v(t._s(t.t("settings","Limit to groups")))]),t._v(" "),e("input",{staticClass:"group_select",attrs:{type:"hidden",title:t.t("settings","All"),value:""}}),t._v(" "),t.isLimitedToGroups(t.app)?e("NcMultiselect",{staticClass:"multiselect-vue",attrs:{options:t.groups,value:t.appGroups,"options-limit":5,placeholder:t.t("settings","Limit app usage to groups"),label:"name","track-by":"id",multiple:!0,"close-on-select":!1,"tag-width":60},on:{select:t.addGroupLimitation,remove:t.removeGroupLimitation,"search-change":t.asyncFindGroup}},[e("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])]):t._e()],1):t._e(),t._v(" "),e("div",{staticClass:"app-details__actions-manage"},[t.app.update?e("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {version}",{version:t.app.update}),disabled:t.installing||t.isLoading},on:{click:function(e){return t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?e("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.isLoading},on:{click:function(e){return t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?e("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.isLoading},on:{click:function(e){return t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active||t.app.canInstall?t._e():e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.isLoading},on:{click:function(e){return t.forceEnable(t.app.id)}}}):e("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable primary",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.isLoading},on:{click:function(e){return t.enable(t.app.id)}}})])]),t._v(" "),e("ul",{staticClass:"app-details__dependencies"},[t.app.missingMinOwnCloudVersion?e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app has no minimum Nextcloud version assigned. This will be an error in the future."))+"\n\t\t")]):t._e(),t._v(" "),t.app.missingMaxOwnCloudVersion?e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app has no maximum Nextcloud version assigned. This will be an error in the future."))+"\n\t\t")]):t._e(),t._v(" "),t.app.canInstall?t._e():e("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app cannot be installed because the following dependencies are not fulfilled:"))+"\n\t\t\t"),e("ul",{staticClass:"missing-dependencies"},t._l(t.app.missingDependencies,(function(n,a){return e("li",{key:a},[t._v("\n\t\t\t\t\t"+t._s(n)+"\n\t\t\t\t")])})),0)])]),t._v(" "),e("p",{staticClass:"app-details__documentation"},[t.app.internal?t._e():e("a",{staticClass:"appslink",attrs:{href:t.appstoreUrl,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","View in store"))+" ↗")]),t._v(" "),t.app.website?e("a",{staticClass:"appslink",attrs:{href:t.app.website,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Visit website"))+" ↗")]):t._e(),t._v(" "),t.app.bugs?e("a",{staticClass:"appslink",attrs:{href:t.app.bugs,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Report a bug"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.user?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.user,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","User documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.admin?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.admin,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Admin documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.developer?e("a",{staticClass:"appslink",attrs:{href:t.app.documentation.developer,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Developer documentation"))+" ↗")]):t._e()]),t._v(" "),e("Markdown",{staticClass:"app-details__description",attrs:{text:t.app.description}})],1)}),[],!1,null,"43fb27d0",null).exports,ft=a(92652);s.ZP.use(o());var mt={name:"Apps",APPS_SECTION_ENUM:ft.J,components:{NcAppContent:l(),AppDetails:vt,AppList:at,NcAppNavigation:d(),NcAppNavigationCounter:g(),NcAppNavigationItem:A(),NcAppNavigationSpacer:f(),AppScore:B,NcAppSidebar:b(),NcAppSidebarTab:_(),NcContent:w(),Markdown:ut},mixins:[I],props:{category:{type:String,default:"installed"},id:{type:String,default:""}},data:function(){return{searchQuery:"",screenshotLoaded:!1}},computed:{loading:function(){return this.$store.getters.loading("categories")},loadingList:function(){return this.$store.getters.loading("list")},app:function(){var t=this;return this.apps.find((function(e){return e.id===t.id}))},categories:function(){return this.$store.getters.getCategories},apps:function(){return this.$store.getters.getAllApps},updateCount:function(){return this.$store.getters.getUpdateCount},settings:function(){return this.$store.getters.getServerData},hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5},appSidebar:function(){var e=function(t){return t["@value"]?t["@value"]:t},n=Array.isArray(this.app.author)?this.app.author.map(e).join(", "):e(this.app.author),a=t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()});return{subtitle:t("settings","by {author}\n{license}",{author:n,license:a}),background:this.app.screenshot&&this.screenshotLoaded?this.app.screenshot:this.app.preview,compact:!(this.app.screenshot&&this.screenshotLoaded),title:this.app.name}},changelog:function(){return function(t){return t.translations.en.changelog}}},watch:{category:function(){this.searchQuery=""},app:function(){var t,e,n=this;if(this.screenshotLoaded=!1,null!==(t=this.app)&&void 0!==t&&t.releases&&null!==(e=this.app)&&void 0!==e&&e.screenshot){var a=new Image;a.onload=function(t){n.screenshotLoaded=!0},a.src=this.app.screenshot}}},beforeMount:function(){this.$store.dispatch("getCategories",{shouldRefetchCategories:!0}),this.$store.dispatch("getAllApps"),this.$store.dispatch("getGroups",{offset:0,limit:5}),this.$store.commit("setUpdateCount",this.$store.getters.getServerData.updateCount)},mounted:function(){(0,i.Ld)("nextcloud:unified-search.search",this.setSearch),(0,i.Ld)("nextcloud:unified-search.reset",this.resetSearch)},beforeDestroy:function(){(0,i.r1)("nextcloud:unified-search.search",this.setSearch),(0,i.r1)("nextcloud:unified-search.reset",this.resetSearch)},methods:{setSearch:function(t){var e=t.query;this.searchQuery=e},resetSearch:function(){this.searchQuery=""},hideAppDetails:function(){this.$router.push({name:"apps-category",params:{category:this.category}})},openDeveloperDocumentation:function(){window.open(this.settings.developerDocumentation)}}},bt=a(37648),Ct={};Ct.styleTagTransform=W(),Ct.setAttributes=Y(),Ct.insert=F().bind(null,"head"),Ct.domAPI=Z(),Ct.insertStyleElement=H(),V()(bt.Z,Ct),bt.Z&&bt.Z.locals&&bt.Z.locals;var _t=(0,N.Z)(mt,(function(){var t=this,e=t._self._c;return e("NcContent",{class:{"with-app-sidebar":t.app},attrs:{"app-name":"settings","content-class":{"icon-loading":t.loadingList},"navigation-class":{"icon-loading":t.loading}}},[e("NcAppNavigation",{scopedSlots:t._u([{key:"list",fn:function(){return[e("NcAppNavigationItem",{attrs:{id:"app-category-your-apps",to:{name:"apps"},exact:!0,icon:"icon-category-installed",title:t.t("settings","Your apps")}}),t._v(" "),e("NcAppNavigationItem",{attrs:{id:"app-category-enabled",to:{name:"apps-category",params:{category:"enabled"}},icon:"icon-category-enabled",title:t.$options.APPS_SECTION_ENUM.enabled}}),t._v(" "),e("NcAppNavigationItem",{attrs:{id:"app-category-disabled",to:{name:"apps-category",params:{category:"disabled"}},icon:"icon-category-disabled",title:t.$options.APPS_SECTION_ENUM.disabled}}),t._v(" "),t.updateCount>0?e("NcAppNavigationItem",{attrs:{id:"app-category-updates",to:{name:"apps-category",params:{category:"updates"}},icon:"icon-download",title:t.$options.APPS_SECTION_ENUM.updates}},[e("NcAppNavigationCounter",{attrs:{slot:"counter"},slot:"counter"},[t._v("\n\t\t\t\t\t"+t._s(t.updateCount)+"\n\t\t\t\t")])],1):t._e(),t._v(" "),e("NcAppNavigationItem",{attrs:{id:"app-category-your-bundles",to:{name:"apps-category",params:{category:"app-bundles"}},icon:"icon-category-app-bundles",title:t.$options.APPS_SECTION_ENUM["app-bundles"]}}),t._v(" "),e("NcAppNavigationSpacer"),t._v(" "),t.settings.appstoreEnabled?[e("NcAppNavigationItem",{attrs:{id:"app-category-featured",to:{name:"apps-category",params:{category:"featured"}},icon:"icon-favorite",title:t.$options.APPS_SECTION_ENUM.featured}}),t._v(" "),t._l(t.categories,(function(t){return e("NcAppNavigationItem",{key:"icon-category-"+t.ident,attrs:{icon:"icon-category-"+t.ident,to:{name:"apps-category",params:{category:t.ident}},title:t.displayName}})}))]:t._e(),t._v(" "),e("NcAppNavigationItem",{attrs:{id:"app-developer-docs",title:t.t("settings","Developer documentation")+" ↗"},on:{click:t.openDeveloperDocumentation}})]},proxy:!0}])}),t._v(" "),e("NcAppContent",{staticClass:"app-settings-content",class:{"icon-loading":t.loadingList}},[e("AppList",{attrs:{category:t.category,app:t.app,search:t.searchQuery}})],1),t._v(" "),t.id&&t.app?e("NcAppSidebar",t._b({class:{"app-sidebar--without-background":!t.appSidebar.background},on:{close:t.hideAppDetails},scopedSlots:t._u([t.appSidebar.background?null:{key:"header",fn:function(){return[e("div",{staticClass:"app-sidebar-header__figure--default-app-icon icon-settings-dark"})]},proxy:!0},{key:"description",fn:function(){return[300===t.app.level||200===t.app.level||t.hasRating?e("div",{staticClass:"app-level"},[300===t.app.level?e("span",{staticClass:"supported icon-checkmark-color",attrs:{title:t.t("settings","This app is supported via your current Nextcloud subscription.")}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?e("span",{staticClass:"official icon-checkmark",attrs:{title:t.t("settings","Featured apps are developed by and within the community. They offer central functionality and are ready for production use.")}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Featured")))]):t._e(),t._v(" "),t.hasRating?e("AppScore",{attrs:{score:t.app.appstoreData.ratingOverall}}):t._e()],1):t._e(),t._v(" "),e("div",{staticClass:"app-version"},[e("p",[t._v(t._s(t.app.version))])])]},proxy:!0}],null,!0)},"NcAppSidebar",t.appSidebar,!1),[t._v(" "),t._v(" "),e("NcAppSidebarTab",{attrs:{id:"desc",icon:"icon-category-office",name:t.t("settings","Details"),order:0}},[e("AppDetails",{attrs:{app:t.app}})],1),t._v(" "),t.app.appstoreData&&t.app.releases[0].translations.en.changelog?e("NcAppSidebarTab",{attrs:{id:"desca",icon:"icon-category-organization",name:t.t("settings","Changelog"),order:1}},t._l(t.app.releases,(function(n){return e("div",{key:n.version,staticClass:"app-sidebar-tabs__release"},[e("h2",[t._v(t._s(n.version))]),t._v(" "),t.changelog(n)?e("Markdown",{attrs:{text:t.changelog(n)}}):t._e()],1)})),0):t._e()],1):t._e()],1)}),[],!1,null,"5a76915a",null).exports}}]);
+//# sourceMappingURL=settings-apps-view-7418.js.map?v=a56ccd56a31c241e4c7d \ No newline at end of file
diff --git a/dist/settings-apps-view-7418.js.map b/dist/settings-apps-view-7418.js.map
index d3080a9d904..e004d821780 100644
--- a/dist/settings-apps-view-7418.js.map
+++ b/dist/settings-apps-view-7418.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-apps-view-7418.js?v=fc224c568df173958cf1","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=style&index=0&id=43fb27d0&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=652eb552&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=style&index=0&id=59100a8c&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=737119e2&prod&scoped=true&lang=css&","webpack://nextcloud/./apps/settings/src/views/Apps.vue?8e68","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?1c98","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?5bcd","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?5186","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?af1e","webpack://nextcloud/./apps/settings/src/components/PrefixMixin.vue?c564","webpack:///nextcloud/apps/settings/src/components/PrefixMixin.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack://nextcloud/./apps/settings/src/components/AppList.vue?8acf","webpack://nextcloud/./apps/settings/src/components/AppList.vue?ee21","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?15b1","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?26cf","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?d299","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?3d18","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?2807","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?7e45","webpack:///nextcloud/apps/settings/src/views/Apps.vue","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/views/Apps.vue?6de2","webpack://nextcloud/./apps/settings/src/views/Apps.vue?7b97"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-details[data-v-43fb27d0]{padding:20px}.app-details__actions-manage[data-v-43fb27d0]{display:flex}.app-details__actions-manage input[data-v-43fb27d0]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-43fb27d0]{opacity:.7}.app-details__documentation[data-v-43fb27d0]{padding-top:20px}.app-details__description[data-v-43fb27d0]{padding-top:20px}.force[data-v-43fb27d0]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-43fb27d0]:hover,.force[data-v-43fb27d0]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppDetails.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CAED,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__dependencies {\\n\\t\\topacity: .7;\\n\\t}\\n\\t&__documentation {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n\\t&__description {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-error);\\n\\tborder-color: var(--color-error);\\n\\tbackground: var(--color-main-background);\\n}\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".settings-markdown[data-v-652eb552] h1,.settings-markdown[data-v-652eb552] h2,.settings-markdown[data-v-652eb552] h3,.settings-markdown[data-v-652eb552] h4,.settings-markdown[data-v-652eb552] h5,.settings-markdown[data-v-652eb552] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-652eb552] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-652eb552] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-652eb552] h3{font-size:24px}.settings-markdown[data-v-652eb552] h4{font-size:21px}.settings-markdown[data-v-652eb552] h5{font-size:17px}.settings-markdown[data-v-652eb552] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-652eb552] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-652eb552] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-652eb552] li{position:relative}.settings-markdown[data-v-652eb552] ul,.settings-markdown[data-v-652eb552] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-652eb552] ul li{list-style-type:disc}.settings-markdown[data-v-652eb552] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-652eb552] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-652eb552] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAGA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.settings-markdown::v-deep {\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n\\tfont-weight: 600;\\n\\tline-height: 120%;\\n\\tmargin-top: 24px;\\n\\tmargin-bottom: 12px;\\n\\tcolor: var(--color-main-text);\\n}\\n\\nh1 {\\n\\tfont-size: 36px;\\n\\tmargin-top: 48px;\\n}\\n\\nh2 {\\n\\tfont-size: 28px;\\n\\tmargin-top: 48px;\\n}\\n\\nh3 {\\n\\tfont-size: 24px;\\n}\\n\\nh4 {\\n\\tfont-size: 21px;\\n}\\n\\nh5 {\\n\\tfont-size: 17px;\\n}\\n\\nh6 {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\npre {\\n\\twhite-space: pre;\\n\\toverflow-x: auto;\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 1em 1.3em;\\n\\tmargin-bottom: 1em;\\n}\\n\\np code {\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: .1em .3em;\\n}\\n\\nli {\\n\\tposition: relative;\\n}\\n\\nul, ol {\\n\\tpadding-left: 10px;\\n\\tmargin-left: 10px;\\n}\\n\\nul li {\\n\\tlist-style-type: disc;\\n}\\n\\nul > li > ul > li {\\n\\tlist-style-type: circle;\\n}\\n\\nul > li > ul > li ul li {\\n\\tlist-style-type: square;\\n}\\n\\nblockquote {\\n\\tpadding-left: 1em;\\n\\tborder-left: 4px solid var(--color-primary-element);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-sidebar[data-v-59100a8c]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-59100a8c]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:var(--background-invert-if-bright)}.app-sidebar[data-v-59100a8c] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-59100a8c].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-59100a8c].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-59100a8c] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-59100a8c] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-59100a8c] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-59100a8c] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-59100a8c]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-59100a8c] h3{font-size:20px}.app-sidebar-tabs__release[data-v-59100a8c] h4{font-size:17px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/Apps.vue\"],\"names\":[],\"mappings\":\"AAIE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,yCAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,+CACC,cAAA,CAED,+CACC,cAAA\",\"sourcesContent\":[\"\\n.app-sidebar::v-deep {\\n\\t&:not(.app-sidebar--without-background) {\\n\\t\\t// with full screenshot, let's fill the figure\\n\\t\\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t// revert sidebar app icon so it is black\\n\\t\\t.app-sidebar-header--compact .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: 32px;\\n\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__description {\\n\\t\\t.app-version {\\n\\t\\t\\tpadding-left: 10px;\\n\\t\\t}\\n\\t}\\n\\n\\t// default icon slot styling\\n\\t&.app-sidebar--without-background {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t&--default-app-icon {\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: migrate to components\\n\\t.app-sidebar-header__desc {\\n\\t\\t// allow multi line subtitle for the license\\n\\t\\t.app-sidebar-header__subtitle {\\n\\t\\t\\toverflow: visible !important;\\n\\t\\t\\theight: auto;\\n\\t\\t\\twhite-space: normal !important;\\n\\t\\t\\tline-height: 16px;\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__action {\\n\\t\\t// align with tab content\\n\\t\\tmargin: 0 20px;\\n\\t\\tinput {\\n\\t\\t\\tmargin: 3px;\\n\\t\\t}\\n\\t}\\n}\\n\\n// Align the appNavigation toggle with the apps header toolbar\\n.app-navigation::v-deep button.app-navigation-toggle {\\n\\ttop: 8px;\\n\\tright: -8px;\\n}\\n\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t// Overwrite changelog heading styles\\n\\t::v-deep {\\n\\t\\th3 {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 17px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.app-icon[data-v-737119e2] {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n.actions[data-v-737119e2] {\\n\\tdisplay: flex !important;\\n\\tgap: 8px;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: end;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\";AA8LA;CACA,0CAAA;AACA;AACA;CACA,wBAAA;CACA,QAAA;CACA,eAAA;CACA,oBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div class=\\\"section\\\" :class=\\\"{ selected: isSelected }\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t<div class=\\\"app-image app-image-icon\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t\\t<div v-if=\\\"(listView && !app.preview) || (!listView && !screenshotLoaded)\\\" class=\\\"icon-settings-dark\\\" />\\n\\n\\t\\t\\t<svg v-else-if=\\\"listView && app.preview\\\"\\n\\t\\t\\t\\twidth=\\\"32\\\"\\n\\t\\t\\t\\theight=\\\"32\\\"\\n\\t\\t\\t\\tviewBox=\\\"0 0 32 32\\\">\\n\\t\\t\\t\\t<image x=\\\"0\\\"\\n\\t\\t\\t\\t\\ty=\\\"0\\\"\\n\\t\\t\\t\\t\\twidth=\\\"32\\\"\\n\\t\\t\\t\\t\\theight=\\\"32\\\"\\n\\t\\t\\t\\t\\tpreserveAspectRatio=\\\"xMinYMin meet\\\"\\n\\t\\t\\t\\t\\t:xlink:href=\\\"app.preview\\\"\\n\\t\\t\\t\\t\\tclass=\\\"app-icon\\\" />\\n\\t\\t\\t</svg>\\n\\n\\t\\t\\t<img v-if=\\\"!listView && app.screenshot && screenshotLoaded\\\" :src=\\\"app.screenshot\\\" width=\\\"100%\\\">\\n\\t\\t</div>\\n\\t\\t<div class=\\\"app-name\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t\\t{{ app.name }}\\n\\t\\t</div>\\n\\t\\t<div v-if=\\\"!listView\\\" class=\\\"app-summary\\\">\\n\\t\\t\\t{{ app.summary }}\\n\\t\\t</div>\\n\\t\\t<div v-if=\\\"listView\\\" class=\\\"app-version\\\">\\n\\t\\t\\t<span v-if=\\\"app.version\\\">{{ app.version }}</span>\\n\\t\\t\\t<span v-else-if=\\\"app.appstoreData.releases[0].version\\\">{{ app.appstoreData.releases[0].version }}</span>\\n\\t\\t</div>\\n\\n\\t\\t<div class=\\\"app-level\\\">\\n\\t\\t\\t<span v-if=\\\"app.level === 300\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"t('settings', 'This app is supported via your current Nextcloud subscription.')\\\"\\n\\t\\t\\t\\tclass=\\\"supported icon-checkmark-color\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Supported') }}</span>\\n\\t\\t\\t<span v-if=\\\"app.level === 200\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\\\"\\n\\t\\t\\t\\tclass=\\\"official icon-checkmark\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Featured') }}</span>\\n\\t\\t\\t<AppScore v-if=\\\"hasRating && !listView\\\" :score=\\\"app.score\\\" />\\n\\t\\t</div>\\n\\n\\t\\t<div class=\\\"actions\\\">\\n\\t\\t\\t<div v-if=\\\"app.error\\\" class=\\\"warning\\\">\\n\\t\\t\\t\\t{{ app.error }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-if=\\\"isLoading\\\" class=\\\"icon icon-loading-small\\\" />\\n\\t\\t\\t<NcButton v-if=\\\"app.update\\\"\\n\\t\\t\\t\\ttype=\\\"primary\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"update(app.id)\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Update to {update}', {update:app.update}) }}\\n\\t\\t\\t</NcButton>\\n\\t\\t\\t<NcButton v-if=\\\"app.canUnInstall\\\"\\n\\t\\t\\t\\tclass=\\\"uninstall\\\"\\n\\t\\t\\t\\ttype=\\\"tertiary\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"remove(app.id)\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Remove') }}\\n\\t\\t\\t</NcButton>\\n\\t\\t\\t<NcButton v-if=\\\"app.active\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"disable(app.id)\\\">\\n\\t\\t\\t\\t{{ t('settings','Disable') }}\\n\\t\\t\\t</NcButton>\\n\\t\\t\\t<NcButton v-if=\\\"!app.active && (app.canInstall || app.isCompatible)\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"enableButtonTooltip\\\"\\n\\t\\t\\t\\ttype=\\\"primary\\\"\\n\\t\\t\\t\\t:disabled=\\\"!app.canInstall || installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"enable(app.id)\\\">\\n\\t\\t\\t\\t{{ enableButtonText }}\\n\\t\\t\\t</NcButton>\\n\\t\\t\\t<NcButton v-else-if=\\\"!app.active\\\"\\n\\t\\t\\t\\tv-tooltip.auto=\\\"forceEnableButtonTooltip\\\"\\n\\t\\t\\t\\ttype=\\\"secondary\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"forceEnable(app.id)\\\">\\n\\t\\t\\t\\t{{ forceEnableButtonText }}\\n\\t\\t\\t</NcButton>\\n\\t\\t</div>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport AppScore from './AppScore.vue'\\nimport AppManagement from '../../mixins/AppManagement.js'\\nimport SvgFilterMixin from '../SvgFilterMixin.vue'\\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\\n\\nexport default {\\n\\tname: 'AppItem',\\n\\tcomponents: {\\n\\t\\tAppScore,\\n\\t\\tNcButton,\\n\\t},\\n\\tmixins: [AppManagement, SvgFilterMixin],\\n\\tprops: {\\n\\t\\tapp: {},\\n\\t\\tcategory: {},\\n\\t\\tlistView: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tisSelected: false,\\n\\t\\t\\tscrolled: false,\\n\\t\\t\\tscreenshotLoaded: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\thasRating() {\\n\\t\\t\\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\\n\\t\\t},\\n\\t},\\n\\twatch: {\\n\\t\\t'$route.params.id'(id) {\\n\\t\\t\\tthis.isSelected = (this.app.id === id)\\n\\t\\t},\\n\\t},\\n\\tmounted() {\\n\\t\\tthis.isSelected = (this.app.id === this.$route.params.id)\\n\\t\\tif (this.app.releases && this.app.screenshot) {\\n\\t\\t\\tconst image = new Image()\\n\\t\\t\\timage.onload = (e) => {\\n\\t\\t\\t\\tthis.screenshotLoaded = true\\n\\t\\t\\t}\\n\\t\\t\\timage.src = this.app.screenshot\\n\\t\\t}\\n\\t},\\n\\twatchers: {\\n\\n\\t},\\n\\tmethods: {\\n\\t\\tasync showAppDetails(event) {\\n\\t\\t\\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tawait this.$router.push({\\n\\t\\t\\t\\t\\tname: 'apps-details',\\n\\t\\t\\t\\t\\tparams: { category: this.category, id: this.app.id },\\n\\t\\t\\t\\t})\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t// we already view this app\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tprefix(prefix, content) {\\n\\t\\t\\treturn prefix + '_' + content\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.app-icon {\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\t}\\n\\t.actions {\\n\\t\\tdisplay: flex !important;\\n\\t\\tgap: 8px;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tjustify-content: end;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcContent',{class:{ 'with-app-sidebar': _vm.app},attrs:{\"app-name\":\"settings\",\"content-class\":{ 'icon-loading': _vm.loadingList },\"navigation-class\":{ 'icon-loading': _vm.loading }}},[_c('NcAppNavigation',{scopedSlots:_vm._u([{key:\"list\",fn:function(){return [_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-your-apps\",\"to\":{ name: 'apps' },\"exact\":true,\"icon\":\"icon-category-installed\",\"title\":_vm.t('settings', 'Your apps')}}),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"icon\":\"icon-category-enabled\",\"title\":_vm.$options.APPS_SECTION_ENUM.enabled}}),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"icon\":\"icon-category-disabled\",\"title\":_vm.$options.APPS_SECTION_ENUM.disabled}}),_vm._v(\" \"),(_vm.updateCount > 0)?_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"icon\":\"icon-download\",\"title\":_vm.$options.APPS_SECTION_ENUM.updates}},[_c('NcAppNavigationCounter',{attrs:{\"slot\":\"counter\"},slot:\"counter\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.updateCount)+\"\\n\\t\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"icon\":\"icon-category-app-bundles\",\"title\":_vm.$options.APPS_SECTION_ENUM['app-bundles']}}),_vm._v(\" \"),_c('NcAppNavigationSpacer'),_vm._v(\" \"),(_vm.settings.appstoreEnabled)?[_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"icon\":\"icon-favorite\",\"title\":_vm.$options.APPS_SECTION_ENUM.featured}}),_vm._v(\" \"),_vm._l((_vm.categories),function(cat){return _c('NcAppNavigationItem',{key:'icon-category-' + cat.ident,attrs:{\"icon\":'icon-category-' + cat.ident,\"to\":{\n\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t},\"title\":cat.displayName}})})]:_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-developer-docs\",\"title\":_vm.t('settings', 'Developer documentation') + ' ↗'},on:{\"click\":_vm.openDeveloperDocumentation}})]},proxy:true}])}),_vm._v(\" \"),_c('NcAppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.app,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.app)?_c('NcAppSidebar',_vm._b({class:{'app-sidebar--without-background': !_vm.appSidebar.background},on:{\"close\":_vm.hideAppDetails},scopedSlots:_vm._u([(!_vm.appSidebar.background)?{key:\"header\",fn:function(){return [_c('div',{staticClass:\"app-sidebar-header__figure--default-app-icon icon-settings-dark\"})]},proxy:true}:null,{key:\"description\",fn:function(){return [(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('AppScore',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"},[_c('p',[_vm._v(_vm._s(_vm.app.version))])])]},proxy:true}],null,true)},'NcAppSidebar',_vm.appSidebar,false),[_vm._v(\" \"),_vm._v(\" \"),_c('NcAppSidebarTab',{attrs:{\"id\":\"desc\",\"icon\":\"icon-category-office\",\"name\":_vm.t('settings', 'Details'),\"order\":0}},[_c('AppDetails',{attrs:{\"app\":_vm.app}})],1),_vm._v(\" \"),(_vm.app.appstoreData && _vm.app.releases[0].translations.en.changelog)?_c('NcAppSidebarTab',{attrs:{\"id\":\"desca\",\"icon\":\"icon-category-organization\",\"name\":_vm.t('settings', 'Changelog'),\"order\":1}},_vm._l((_vm.app.releases),function(release){return _c('div',{key:release.version,staticClass:\"app-sidebar-tabs__release\"},[_c('h2',[_vm._v(_vm._s(release.version))]),_vm._v(\" \"),(_vm.changelog(release))?_c('Markdown',{attrs:{\"text\":_vm.changelog(release)}}):_vm._e()],1)}),0):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" class=\"app-score-image\">\n</template>\n<script>\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'AppScore',\n\tprops: ['score'],\n\tcomputed: {\n\t\tscoreImage() {\n\t\t\tconst score = Math.round(this.score * 10)\n\t\t\tconst imageName = 'rating/s' + score + '.svg'\n\t\t\treturn imagePath('core', imageName)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=3b3081d1&\"\nimport script from \"./AppScore.vue?vue&type=script&lang=js&\"\nexport * from \"./AppScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { emit } from '@nextcloud/event-bus'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tinstalling() {\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Enable untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(group) {\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tenable(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tdisable(appId) {\n\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tremove(appId) {\n\t\t\tthis.$store.dispatch('uninstallApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tinstall(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tupdate(appId) {\n\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'SvgFilterMixin',\n\tdata() {\n\t\treturn {\n\t\t\tfilterId: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilterUrl() {\n\t\t\treturn `url(#${this.filterId})`\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.filterId = 'invertIconApps-' + Math.random().toString(36).substring(2)\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"section\" :class=\"{ selected: isSelected }\" @click=\"showAppDetails\">\n\t\t<div class=\"app-image app-image-icon\" @click=\"showAppDetails\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !screenshotLoaded)\" class=\"icon-settings-dark\" />\n\n\t\t\t<svg v-else-if=\"listView && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<image x=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"32\"\n\t\t\t\t\theight=\"32\"\n\t\t\t\t\tpreserveAspectRatio=\"xMinYMin meet\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot && screenshotLoaded\" :src=\"app.screenshot\" width=\"100%\">\n\t\t</div>\n\t\t<div class=\"app-name\" @click=\"showAppDetails\">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if=\"!listView\" class=\"app-summary\">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if=\"listView\" class=\"app-version\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating && !listView\" :score=\"app.score\" />\n\t\t</div>\n\n\t\t<div class=\"actions\">\n\t\t\t<div v-if=\"app.error\" class=\"warning\">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if=\"isLoading\" class=\"icon icon-loading-small\" />\n\t\t\t<NcButton v-if=\"app.update\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"update(app.id)\">\n\t\t\t\t{{ t('settings', 'Update to {update}', {update:app.update}) }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"app.canUnInstall\"\n\t\t\t\tclass=\"uninstall\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"remove(app.id)\">\n\t\t\t\t{{ t('settings', 'Remove') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"app.active\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t\t{{ t('settings','Disable') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t@click.stop=\"enable(app.id)\">\n\t\t\t\t{{ enableButtonText }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-else-if=\"!app.active\"\n\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"forceEnable(app.id)\">\n\t\t\t\t{{ forceEnableButtonText }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from './AppScore.vue'\nimport AppManagement from '../../mixins/AppManagement.js'\nimport SvgFilterMixin from '../SvgFilterMixin.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppScore,\n\t\tNcButton,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t'$route.params.id'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.app-icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n\t.actions {\n\t\tdisplay: flex !important;\n\t\tgap: 8px;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: end;\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!./AppItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=737119e2&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=737119e2&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=737119e2&scoped=true&\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=737119e2&prod&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 \"737119e2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.screenshotLoaded))?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-version\"},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update to {update}', {update:_vm.app.update}))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcButton',{staticClass:\"uninstall\",attrs:{\"type\":\"tertiary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('NcButton',{attrs:{\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings','Disable'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],attrs:{\"type\":\"primary\",\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")]):(!_vm.app.active)?_c('NcButton',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],attrs:{\"type\":\"secondary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.forceEnableButtonText)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'PrefixMixin',\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<div v-if=\"showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ n('settings', '%n app has an update available', '%n apps have an update available', counter) }}\n\t\t\t\t\t<NcButton v-if=\"showUpdateAll\"\n\t\t\t\t\t\tid=\"app-list-update-all\"\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t@click=\"updateAll\">\n\t\t\t\t\t\t{{ n('settings', 'Update', 'Update all', counter) }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"!showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ t('settings', 'All apps are up-to-date.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\t\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\n\t\t\t<transition-group v-if=\"useBundleView\"\n\t\t\t\tname=\"app-list\"\n\t\t\t\ttag=\"div\"\n\t\t\t\tclass=\"apps-list-container\">\n\t\t\t\t<template v-for=\"bundle in bundles\">\n\t\t\t\t\t<div :key=\"bundle.id\" class=\"apps-header\">\n\t\t\t\t\t\t<div class=\"app-image\" />\n\t\t\t\t\t\t<h2>{{ bundle.name }} <input type=\"button\" :value=\"bundleToggleText(bundle.id)\" @click=\"toggleBundle(bundle.id)\"></h2>\n\t\t\t\t\t\t<div class=\"app-version\" />\n\t\t\t\t\t\t<div class=\"app-level\" />\n\t\t\t\t\t\t<div class=\"app-groups\" />\n\t\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in bundleApps(bundle.id)\"\n\t\t\t\t\t\t:key=\"bundle.id + app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</transition-group>\n\t\t\t<template v-if=\"useAppStoreView\">\n\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t:list-view=\"false\" />\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in searchApps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t\t:list-view=\"true\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"search !== '' && !loading && searchApps.length === 0 && apps.length === 0\" id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\" />\n\t\t\t<h2>{{ t('settings', 'No apps found for your version') }}</h2>\n\t\t</div>\n\n\t\t<div id=\"searchresults\" />\n\t</div>\n</template>\n\n<script>\nimport AppItem from './AppList/AppItem'\nimport PrefixMixin from './PrefixMixin'\nimport pLimit from 'p-limit'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t\tNcButton,\n\t},\n\tmixins: [PrefixMixin],\n\tprops: ['category', 'app', 'search'],\n\tcomputed: {\n\t\tcounter() {\n\t\t\treturn this.apps.filter(app => app.update).length\n\t\t},\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\thasPendingUpdate() {\n\t\t\treturn this.apps.filter(app => app.update).length > 0\n\t\t},\n\t\tshowUpdateAll() {\n\t\t\treturn this.hasPendingUpdate && this.useListView\n\t\t},\n\t\tapps() {\n\t\t\tconst apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function(a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB)\n\t\t\t\t})\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles)\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update)\n\t\t\t}\n\t\t\tif (this.category === 'featured') {\n\t\t\t\treturn apps.filter(app => app.level === 200)\n\t\t\t}\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined\n\t\t\t\t\t&& (app.category === this.category || app.category.indexOf(this.category) > -1)\n\t\t\t})\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getServerData.bundles.filter(bundle => this.bundleApps(bundle.id).length > 0)\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => {\n\t\t\t\t\t\treturn app.bundleIds !== undefined && app.bundleIds.includes(bundle)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id))\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates' || this.category === 'featured')\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles')\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\treturn self.bundleApps(id).filter(app => !app.active).length === 0\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\tif (self.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable all')\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id)\n\t\t\t}\n\t\t\treturn this.enableBundle(id)\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tupdateAll() {\n\t\t\tconst limit = pLimit(1)\n\t\t\tthis.apps\n\t\t\t\t.filter(app => app.update)\n\t\t\t\t.map(app => limit(() => this.$store.dispatch('updateApp', { appId: app.id }))\n\t\t\t\t)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=049ecd42&\"\nimport script from \"./AppList.vue?vue&type=script&lang=js&\"\nexport * from \"./AppList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', '%n app has an update available', '%n apps have an update available', _vm.counter))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('NcButton',{attrs:{\"id\":\"app-list-update-all\",\"type\":\"primary\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', 'Update', 'Update all', _vm.counter))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'All apps are up-to-date.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_vm._l((_vm.bundles),function(bundle){return [_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"settings-markdown\" v-html=\"renderMarkdown\" />\n</template>\n\n<script>\nimport { marked } from 'marked'\nimport dompurify from 'dompurify'\n\nexport default {\n\tname: 'Markdown',\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed: {\n\t\trenderMarkdown() {\n\t\t\tconst renderer = new marked.Renderer()\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\tlet prot\n\t\t\t\ttry {\n\t\t\t\t\tprot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tlet out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"'\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"'\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>'\n\t\t\t\treturn out\n\t\t\t}\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text\n\t\t\t\t}\n\t\t\t\treturn title\n\t\t\t}\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote\n\t\t\t}\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.text.trim(), {\n\t\t\t\t\trenderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'h1',\n\t\t\t\t\t\t'h2',\n\t\t\t\t\t\t'h3',\n\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t'h5',\n\t\t\t\t\t\t'h6',\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote',\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.settings-markdown::v-deep {\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 120%;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t\tmargin-top: 48px;\n\t}\n\n\th2 {\n\t\tfont-size: 28px;\n\t\tmargin-top: 48px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: var(--default-font-size);\n\t}\n\n\tpre {\n\t\twhite-space: pre;\n\t\toverflow-x: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t}\n\n\tul li {\n\t\tlist-style-type: disc;\n\t}\n\n\tul > li > ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\tul > li > ul > li ul li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=652eb552&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=652eb552&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=652eb552&scoped=true&\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js&\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=652eb552&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"652eb552\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"settings-markdown\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"app-details\">\n\t\t<div class=\"app-details__actions\">\n\t\t\t<div v-if=\"app.active && canLimitToGroups(app)\" class=\"app-details__actions-groups\">\n\t\t\t\t<input :id=\"prefix('groups_enable', app.id)\"\n\t\t\t\t\tv-model=\"groupCheckedAppsData\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"app.id\"\n\t\t\t\t\tclass=\"groups-enable__checkbox checkbox\"\n\t\t\t\t\t@change=\"setGroupLimit\">\n\t\t\t\t<label :for=\"prefix('groups_enable', app.id)\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t<input type=\"hidden\"\n\t\t\t\t\tclass=\"group_select\"\n\t\t\t\t\t:title=\"t('settings', 'All')\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t\t<NcMultiselect v-if=\"isLimitedToGroups(app)\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:value=\"appGroups\"\n\t\t\t\t\t:options-limit=\"5\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Limit app usage to groups')\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:tag-width=\"60\"\n\t\t\t\t\t@select=\"addGroupLimitation\"\n\t\t\t\t\t@remove=\"removeGroupLimitation\"\n\t\t\t\t\t@search-change=\"asyncFindGroup\">\n\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t</NcMultiselect>\n\t\t\t</div>\n\t\t\t<div class=\"app-details__actions-manage\">\n\t\t\t\t<input v-if=\"app.update\"\n\t\t\t\t\tclass=\"update primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Update to {version}', { version: app.update })\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"update(app.id)\">\n\t\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\t\tclass=\"uninstall\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"remove(app.id)\">\n\t\t\t\t<input v-if=\"app.active\"\n\t\t\t\t\tclass=\"enable\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"disable(app.id)\">\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\t\tclass=\"enable primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t\t@click=\"enable(app.id)\">\n\t\t\t\t<input v-else-if=\"!app.active && !app.canInstall\"\n\t\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\t\tclass=\"enable force\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"forceEnable(app.id)\">\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-details__dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"app-details__documentation\">\n\t\t\t<a v-if=\"!app.internal\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'View in store') }} ↗</a>\n\n\t\t\t<a v-if=\"app.website\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.website\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a v-if=\"app.bugs\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.bugs\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a v-if=\"app.documentation && app.documentation.user\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.user\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.admin\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.admin\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.developer\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.developer\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\t\t<Markdown class=\"app-details__description\" :text=\"app.description\" />\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\n\nimport AppManagement from '../mixins/AppManagement'\nimport PrefixMixin from './PrefixMixin'\nimport Markdown from './Markdown'\n\nexport default {\n\tname: 'AppDetails',\n\n\tcomponents: {\n\t\tNcMultiselect,\n\t\tMarkdown,\n\t},\n\tmixins: [AppManagement, PrefixMixin],\n\n\tprops: {\n\t\tapp: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author]\n\t\t\t}\n\t\t\treturn this.app.author\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=43fb27d0&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=43fb27d0&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDetails.vue?vue&type=template&id=43fb27d0&scoped=true&\"\nimport script from \"./AppDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppDetails.vue?vue&type=style&index=0&id=43fb27d0&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43fb27d0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"app-details\"},[_c('div',{staticClass:\"app-details__actions\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"app-details__actions-groups\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":_vm.prefix('groups_enable', _vm.app.id),\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('NcMultiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__actions-manage\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', { version: _vm.app.update }),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active && !_vm.app.canInstall)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"app-details__documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('Markdown',{staticClass:\"app-details__description\",attrs:{\"text\":_vm.app.description}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcContent app-name=\"settings\"\n\t\t:class=\"{ 'with-app-sidebar': app}\"\n\t\t:content-class=\"{ 'icon-loading': loadingList }\"\n\t\t:navigation-class=\"{ 'icon-loading': loading }\">\n\t\t<!-- Categories & filters -->\n\t\t<NcAppNavigation>\n\t\t\t<template #list>\n\t\t\t\t<NcAppNavigationItem id=\"app-category-your-apps\"\n\t\t\t\t\t:to=\"{ name: 'apps' }\"\n\t\t\t\t\t:exact=\"true\"\n\t\t\t\t\ticon=\"icon-category-installed\"\n\t\t\t\t\t:title=\"t('settings', 'Your apps')\" />\n\t\t\t\t<NcAppNavigationItem id=\"app-category-enabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'enabled' } }\"\n\t\t\t\t\ticon=\"icon-category-enabled\"\n\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM.enabled\" />\n\t\t\t\t<NcAppNavigationItem id=\"app-category-disabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'disabled' } }\"\n\t\t\t\t\ticon=\"icon-category-disabled\"\n\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM.disabled\" />\n\t\t\t\t<NcAppNavigationItem v-if=\"updateCount > 0\"\n\t\t\t\t\tid=\"app-category-updates\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'updates' } }\"\n\t\t\t\t\ticon=\"icon-download\"\n\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM.updates\">\n\t\t\t\t\t<NcAppNavigationCounter slot=\"counter\">\n\t\t\t\t\t\t{{ updateCount }}\n\t\t\t\t\t</NcAppNavigationCounter>\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t\t<NcAppNavigationItem id=\"app-category-your-bundles\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'app-bundles' } }\"\n\t\t\t\t\ticon=\"icon-category-app-bundles\"\n\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM['app-bundles']\" />\n\n\t\t\t\t<NcAppNavigationSpacer />\n\n\t\t\t\t<!-- App store categories -->\n\t\t\t\t<template v-if=\"settings.appstoreEnabled\">\n\t\t\t\t\t<NcAppNavigationItem id=\"app-category-featured\"\n\t\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'featured' } }\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM.featured\" />\n\n\t\t\t\t\t<NcAppNavigationItem v-for=\"cat in categories\"\n\t\t\t\t\t\t:key=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:icon=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:title=\"cat.displayName\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcAppNavigationItem id=\"app-developer-docs\"\n\t\t\t\t\t:title=\"t('settings', 'Developer documentation') + ' ↗'\"\n\t\t\t\t\t@click=\"openDeveloperDocumentation\" />\n\t\t\t</template>\n\t\t</NcAppNavigation>\n\n\t\t<!-- Apps list -->\n\t\t<NcAppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"app\" :search=\"searchQuery\" />\n\t\t</NcAppContent>\n\n\t\t<!-- Selected app details -->\n\t\t<NcAppSidebar v-if=\"id && app\"\n\t\t\tv-bind=\"appSidebar\"\n\t\t\t:class=\"{'app-sidebar--without-background': !appSidebar.background}\"\n\t\t\t@close=\"hideAppDetails\">\n\t\t\t<template v-if=\"!appSidebar.background\" #header>\n\t\t\t\t<div class=\"app-sidebar-header__figure--default-app-icon icon-settings-dark\" />\n\t\t\t</template>\n\n\t\t\t<template #description>\n\t\t\t\t<!-- Featured/Supported badges -->\n\t\t\t\t<div v-if=\"app.level === 300 || app.level === 200 || hasRating\" class=\"app-level\">\n\t\t\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t\t\t<AppScore v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"app-version\">\n\t\t\t\t\t<p>{{ app.version }}</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<!-- Tab content -->\n\n\t\t\t<NcAppSidebarTab id=\"desc\"\n\t\t\t\ticon=\"icon-category-office\"\n\t\t\t\t:name=\"t('settings', 'Details')\"\n\t\t\t\t:order=\"0\">\n\t\t\t\t<AppDetails :app=\"app\" />\n\t\t\t</NcAppSidebarTab>\n\t\t\t<NcAppSidebarTab v-if=\"app.appstoreData && app.releases[0].translations.en.changelog\"\n\t\t\t\tid=\"desca\"\n\t\t\t\ticon=\"icon-category-organization\"\n\t\t\t\t:name=\"t('settings', 'Changelog')\"\n\t\t\t\t:order=\"1\">\n\t\t\t\t<div v-for=\"release in app.releases\" :key=\"release.version\" class=\"app-sidebar-tabs__release\">\n\t\t\t\t\t<h2>{{ release.version }}</h2>\n\t\t\t\t\t<Markdown v-if=\"changelog(release)\" :text=\"changelog(release)\" />\n\t\t\t\t</div>\n\t\t\t</NcAppSidebarTab>\n\t\t</NcAppSidebar>\n\t</NcContent>\n</template>\n\n<script>\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport Vue from 'vue'\nimport VueLocalStorage from 'vue-localstorage'\n\nimport NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent'\nimport NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation'\nimport NcAppNavigationCounter from '@nextcloud/vue/dist/Components/NcAppNavigationCounter'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem'\nimport NcAppNavigationSpacer from '@nextcloud/vue/dist/Components/NcAppNavigationSpacer'\nimport NcAppSidebar from '@nextcloud/vue/dist/Components/NcAppSidebar'\nimport NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab'\nimport NcContent from '@nextcloud/vue/dist/Components/NcContent'\n\nimport AppList from '../components/AppList'\nimport AppDetails from '../components/AppDetails'\nimport AppManagement from '../mixins/AppManagement'\nimport AppScore from '../components/AppList/AppScore'\nimport Markdown from '../components/Markdown'\n\nimport { APPS_SECTION_ENUM } from './../constants/AppsConstants.js'\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\tAPPS_SECTION_ENUM,\n\tcomponents: {\n\t\tNcAppContent,\n\t\tAppDetails,\n\t\tAppList,\n\t\tNcAppNavigation,\n\t\tNcAppNavigationCounter,\n\t\tNcAppNavigationItem,\n\t\tNcAppNavigationSpacer,\n\t\tAppScore,\n\t\tNcAppSidebar,\n\t\tNcAppSidebarTab,\n\t\tNcContent,\n\t\tMarkdown,\n\t},\n\n\tmixins: [AppManagement],\n\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories')\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\tapp() {\n\t\t\treturn this.apps.find(app => app.id === this.id)\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\n\t\t// sidebar app binding\n\t\tappSidebar() {\n\t\t\tconst authorName = (xmlNode) => {\n\t\t\t\tif (xmlNode['@value']) {\n\t\t\t\t\t// Complex node (with email or homepage attribute)\n\t\t\t\t\treturn xmlNode['@value']\n\t\t\t\t}\n\n\t\t\t\t// Simple text node\n\t\t\t\treturn xmlNode\n\t\t\t}\n\n\t\t\tconst author = Array.isArray(this.app.author)\n\t\t\t\t? this.app.author.map(authorName).join(', ')\n\t\t\t\t: authorName(this.app.author)\n\t\t\tconst license = t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\n\t\t\tconst subtitle = t('settings', 'by {author}\\n{license}', { author, license })\n\n\t\t\treturn {\n\t\t\t\tsubtitle,\n\t\t\t\tbackground: this.app.screenshot && this.screenshotLoaded\n\t\t\t\t\t? this.app.screenshot\n\t\t\t\t\t: this.app.preview,\n\t\t\t\tcompact: !(this.app.screenshot && this.screenshotLoaded),\n\t\t\t\ttitle: this.app.name,\n\n\t\t\t}\n\t\t},\n\t\tchangelog() {\n\t\t\treturn (release) => release.translations.en.changelog\n\t\t},\n\t},\n\n\twatch: {\n\t\tcategory() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\tapp() {\n\t\t\tthis.screenshotLoaded = false\n\t\t\tif (this.app?.releases && this.app?.screenshot) {\n\t\t\t\tconst image = new Image()\n\t\t\t\timage.onload = (e) => {\n\t\t\t\t\tthis.screenshotLoaded = true\n\t\t\t\t}\n\t\t\t\timage.src = this.app.screenshot\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories', { shouldRefetchCategories: true })\n\t\tthis.$store.dispatch('getAllApps')\n\t\tthis.$store.dispatch('getGroups', { offset: 0, limit: 5 })\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\n\tmounted() {\n\t\tsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tsetSearch({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: { category: this.category },\n\t\t\t})\n\t\t},\n\t\topenDeveloperDocumentation() {\n\t\t\twindow.open(this.settings.developerDocumentation)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=style&index=0&id=59100a8c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=style&index=0&id=59100a8c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=59100a8c&scoped=true&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Apps.vue?vue&type=style&index=0&id=59100a8c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59100a8c\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","name","props","computed","scoreImage","_c","this","_self","staticClass","attrs","axios","generateOcsUrl","then","data","ocs","meta","statuscode","emit","apps","window","dispatchEvent","Event","appGroups","app","groups","map","group","installing","$store","getters","loading","isLoading","enableButtonText","needsDownload","t","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","groupCheckedAppsData","mounted","length","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","concat","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","response","rebuildNavigation","catch","error","showError","enable","disable","remove","install","update","filterId","filterUrl","components","AppScore","NcButton","mixins","category","listView","type","default","isSelected","scrolled","screenshotLoaded","hasRating","watch","image","watchers","showAppDetails","event","params","prefix","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","class","selected","on","preview","_e","_v","screenshot","_s","summary","version","appstoreData","releases","level","directives","rawName","value","expression","modifiers","score","$event","stopPropagation","canUnInstall","active","canInstall","isCompatible","AppItem","counter","hasPendingUpdate","showUpdateAll","filter","sort","bundles","bundleApps","searchApps","useAppStoreView","useListView","useBundleView","allBundlesEnabled","bundleToggleText","toggleBundle","enableBundle","console","OC","disableBundle","updateAll","installed","store","n","_l","key","bundle","text","renderMarkdown","renderer","prot","replace","toLowerCase","out","marked","gfm","highlight","tables","breaks","pedantic","sanitize","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","domProps","NcMultiselect","Markdown","required","appstoreUrl","licence","license","author","Array","isArray","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","internal","website","bugs","documentation","user","admin","developer","description","Vue","APPS_SECTION_ENUM","NcAppContent","AppDetails","AppList","NcAppNavigation","NcAppNavigationCounter","NcAppNavigationItem","NcAppNavigationSpacer","NcAppSidebar","NcAppSidebarTab","NcContent","searchQuery","loadingList","categories","updateCount","settings","appSidebar","authorName","subtitle","background","compact","title","changelog","beforeMount","shouldRefetchCategories","subscribe","beforeDestroy","unsubscribe","setSearch","resetSearch","hideAppDetails","openDeveloperDocumentation","scopedSlots","_u","fn","$options","enabled","disabled","updates","appstoreEnabled","featured","cat","ident","displayName","proxy","_b","ratingOverall","translations","en","release"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-apps-view-7418.js?v=a56ccd56a31c241e4c7d","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=style&index=0&id=43fb27d0&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=652eb552&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=style&index=0&id=5a76915a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=4a912665&prod&scoped=true&lang=css&","webpack://nextcloud/./apps/settings/src/views/Apps.vue?8e68","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?1c98","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?5bcd","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?2427","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?af1e","webpack://nextcloud/./apps/settings/src/components/PrefixMixin.vue?c564","webpack:///nextcloud/apps/settings/src/components/PrefixMixin.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack://nextcloud/./apps/settings/src/components/AppList.vue?8acf","webpack://nextcloud/./apps/settings/src/components/AppList.vue?ee21","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?15b1","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?26cf","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?d299","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?3d18","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?2807","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?7e45","webpack:///nextcloud/apps/settings/src/views/Apps.vue","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/views/Apps.vue?5cca","webpack://nextcloud/./apps/settings/src/views/Apps.vue?7b97"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-details[data-v-43fb27d0]{padding:20px}.app-details__actions-manage[data-v-43fb27d0]{display:flex}.app-details__actions-manage input[data-v-43fb27d0]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-43fb27d0]{opacity:.7}.app-details__documentation[data-v-43fb27d0]{padding-top:20px}.app-details__description[data-v-43fb27d0]{padding-top:20px}.force[data-v-43fb27d0]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-43fb27d0]:hover,.force[data-v-43fb27d0]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppDetails.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CAED,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__dependencies {\\n\\t\\topacity: .7;\\n\\t}\\n\\t&__documentation {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n\\t&__description {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-error);\\n\\tborder-color: var(--color-error);\\n\\tbackground: var(--color-main-background);\\n}\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".settings-markdown[data-v-652eb552] h1,.settings-markdown[data-v-652eb552] h2,.settings-markdown[data-v-652eb552] h3,.settings-markdown[data-v-652eb552] h4,.settings-markdown[data-v-652eb552] h5,.settings-markdown[data-v-652eb552] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-652eb552] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-652eb552] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-652eb552] h3{font-size:24px}.settings-markdown[data-v-652eb552] h4{font-size:21px}.settings-markdown[data-v-652eb552] h5{font-size:17px}.settings-markdown[data-v-652eb552] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-652eb552] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-652eb552] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-652eb552] li{position:relative}.settings-markdown[data-v-652eb552] ul,.settings-markdown[data-v-652eb552] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-652eb552] ul li{list-style-type:disc}.settings-markdown[data-v-652eb552] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-652eb552] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-652eb552] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAGA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.settings-markdown::v-deep {\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n\\tfont-weight: 600;\\n\\tline-height: 120%;\\n\\tmargin-top: 24px;\\n\\tmargin-bottom: 12px;\\n\\tcolor: var(--color-main-text);\\n}\\n\\nh1 {\\n\\tfont-size: 36px;\\n\\tmargin-top: 48px;\\n}\\n\\nh2 {\\n\\tfont-size: 28px;\\n\\tmargin-top: 48px;\\n}\\n\\nh3 {\\n\\tfont-size: 24px;\\n}\\n\\nh4 {\\n\\tfont-size: 21px;\\n}\\n\\nh5 {\\n\\tfont-size: 17px;\\n}\\n\\nh6 {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\npre {\\n\\twhite-space: pre;\\n\\toverflow-x: auto;\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 1em 1.3em;\\n\\tmargin-bottom: 1em;\\n}\\n\\np code {\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: .1em .3em;\\n}\\n\\nli {\\n\\tposition: relative;\\n}\\n\\nul, ol {\\n\\tpadding-left: 10px;\\n\\tmargin-left: 10px;\\n}\\n\\nul li {\\n\\tlist-style-type: disc;\\n}\\n\\nul > li > ul > li {\\n\\tlist-style-type: circle;\\n}\\n\\nul > li > ul > li ul li {\\n\\tlist-style-type: square;\\n}\\n\\nblockquote {\\n\\tpadding-left: 1em;\\n\\tborder-left: 4px solid var(--color-primary-element);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-sidebar[data-v-5a76915a]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-5a76915a]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:var(--background-invert-if-bright)}.app-sidebar[data-v-5a76915a] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-5a76915a].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-5a76915a].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-5a76915a] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-5a76915a] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-5a76915a] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-5a76915a] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-5a76915a]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-5a76915a] h3{font-size:20px}.app-sidebar-tabs__release[data-v-5a76915a] h4{font-size:17px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/Apps.vue\"],\"names\":[],\"mappings\":\"AAIE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,yCAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,+CACC,cAAA,CAED,+CACC,cAAA\",\"sourcesContent\":[\"\\n.app-sidebar::v-deep {\\n\\t&:not(.app-sidebar--without-background) {\\n\\t\\t// with full screenshot, let's fill the figure\\n\\t\\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t// revert sidebar app icon so it is black\\n\\t\\t.app-sidebar-header--compact .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: 32px;\\n\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__description {\\n\\t\\t.app-version {\\n\\t\\t\\tpadding-left: 10px;\\n\\t\\t}\\n\\t}\\n\\n\\t// default icon slot styling\\n\\t&.app-sidebar--without-background {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t&--default-app-icon {\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: migrate to components\\n\\t.app-sidebar-header__desc {\\n\\t\\t// allow multi line subtitle for the license\\n\\t\\t.app-sidebar-header__subtitle {\\n\\t\\t\\toverflow: visible !important;\\n\\t\\t\\theight: auto;\\n\\t\\t\\twhite-space: normal !important;\\n\\t\\t\\tline-height: 16px;\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__action {\\n\\t\\t// align with tab content\\n\\t\\tmargin: 0 20px;\\n\\t\\tinput {\\n\\t\\t\\tmargin: 3px;\\n\\t\\t}\\n\\t}\\n}\\n\\n// Align the appNavigation toggle with the apps header toolbar\\n.app-navigation::v-deep button.app-navigation-toggle {\\n\\ttop: 8px;\\n\\tright: -8px;\\n}\\n\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t// Overwrite changelog heading styles\\n\\t::v-deep {\\n\\t\\th3 {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 17px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.app-icon[data-v-4a912665] {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n.actions[data-v-4a912665] {\\n\\tdisplay: flex !important;\\n\\tgap: 8px;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: end;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\";AAkMA;CACA,0CAAA;AACA;AACA;CACA,wBAAA;CACA,QAAA;CACA,eAAA;CACA,oBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div class=\\\"section\\\" :class=\\\"{ selected: isSelected }\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t<div class=\\\"app-image app-image-icon\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t\\t<div v-if=\\\"(listView && !app.preview) || (!listView && !screenshotLoaded)\\\" class=\\\"icon-settings-dark\\\" />\\n\\n\\t\\t\\t<svg v-else-if=\\\"listView && app.preview\\\"\\n\\t\\t\\t\\twidth=\\\"32\\\"\\n\\t\\t\\t\\theight=\\\"32\\\"\\n\\t\\t\\t\\tviewBox=\\\"0 0 32 32\\\">\\n\\t\\t\\t\\t<image x=\\\"0\\\"\\n\\t\\t\\t\\t\\ty=\\\"0\\\"\\n\\t\\t\\t\\t\\twidth=\\\"32\\\"\\n\\t\\t\\t\\t\\theight=\\\"32\\\"\\n\\t\\t\\t\\t\\tpreserveAspectRatio=\\\"xMinYMin meet\\\"\\n\\t\\t\\t\\t\\t:xlink:href=\\\"app.preview\\\"\\n\\t\\t\\t\\t\\tclass=\\\"app-icon\\\" />\\n\\t\\t\\t</svg>\\n\\n\\t\\t\\t<img v-if=\\\"!listView && app.screenshot && screenshotLoaded\\\" :src=\\\"app.screenshot\\\" width=\\\"100%\\\">\\n\\t\\t</div>\\n\\t\\t<div class=\\\"app-name\\\" @click=\\\"showAppDetails\\\">\\n\\t\\t\\t{{ app.name }}\\n\\t\\t</div>\\n\\t\\t<div v-if=\\\"!listView\\\" class=\\\"app-summary\\\">\\n\\t\\t\\t{{ app.summary }}\\n\\t\\t</div>\\n\\t\\t<div v-if=\\\"listView\\\" class=\\\"app-version\\\">\\n\\t\\t\\t<span v-if=\\\"app.version\\\">{{ app.version }}</span>\\n\\t\\t\\t<span v-else-if=\\\"app.appstoreData.releases[0].version\\\">{{ app.appstoreData.releases[0].version }}</span>\\n\\t\\t</div>\\n\\n\\t\\t<div class=\\\"app-level\\\">\\n\\t\\t\\t<span v-if=\\\"app.level === 300\\\"\\n\\t\\t\\t\\t:title=\\\"t('settings', 'This app is supported via your current Nextcloud subscription.')\\\"\\n\\t\\t\\t\\t:aria-label=\\\"t('settings', 'This app is supported via your current Nextcloud subscription.')\\\"\\n\\t\\t\\t\\tclass=\\\"supported icon-checkmark-color\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Supported') }}</span>\\n\\t\\t\\t<span v-if=\\\"app.level === 200\\\"\\n\\t\\t\\t\\t:title=\\\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\\\"\\n\\t\\t\\t\\t:aria-label=\\\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\\\"\\n\\t\\t\\t\\tclass=\\\"official icon-checkmark\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Featured') }}</span>\\n\\t\\t\\t<AppScore v-if=\\\"hasRating && !listView\\\" :score=\\\"app.score\\\" />\\n\\t\\t</div>\\n\\n\\t\\t<div class=\\\"actions\\\">\\n\\t\\t\\t<div v-if=\\\"app.error\\\" class=\\\"warning\\\">\\n\\t\\t\\t\\t{{ app.error }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-if=\\\"isLoading\\\" class=\\\"icon icon-loading-small\\\" />\\n\\t\\t\\t<NcButton v-if=\\\"app.update\\\"\\n\\t\\t\\t\\ttype=\\\"primary\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"update(app.id)\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Update to {update}', {update:app.update}) }}\\n\\t\\t\\t</NcButton>\\n\\t\\t\\t<NcButton v-if=\\\"app.canUnInstall\\\"\\n\\t\\t\\t\\tclass=\\\"uninstall\\\"\\n\\t\\t\\t\\ttype=\\\"tertiary\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"remove(app.id)\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Remove') }}\\n\\t\\t\\t</NcButton>\\n\\t\\t\\t<NcButton v-if=\\\"app.active\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"disable(app.id)\\\">\\n\\t\\t\\t\\t{{ t('settings','Disable') }}\\n\\t\\t\\t</NcButton>\\n\\t\\t\\t<NcButton v-if=\\\"!app.active && (app.canInstall || app.isCompatible)\\\"\\n\\t\\t\\t\\t:title=\\\"enableButtonTooltip\\\"\\n\\t\\t\\t\\t:aria-label=\\\"enableButtonTooltip\\\"\\n\\t\\t\\t\\ttype=\\\"primary\\\"\\n\\t\\t\\t\\t:disabled=\\\"!app.canInstall || installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"enable(app.id)\\\">\\n\\t\\t\\t\\t{{ enableButtonText }}\\n\\t\\t\\t</NcButton>\\n\\t\\t\\t<NcButton v-else-if=\\\"!app.active\\\"\\n\\t\\t\\t\\t:title=\\\"forceEnableButtonTooltip\\\"\\n\\t\\t\\t\\t:aria-label=\\\"forceEnableButtonTooltip\\\"\\n\\t\\t\\t\\ttype=\\\"secondary\\\"\\n\\t\\t\\t\\t:disabled=\\\"installing || isLoading\\\"\\n\\t\\t\\t\\t@click.stop=\\\"forceEnable(app.id)\\\">\\n\\t\\t\\t\\t{{ forceEnableButtonText }}\\n\\t\\t\\t</NcButton>\\n\\t\\t</div>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport AppScore from './AppScore.vue'\\nimport AppManagement from '../../mixins/AppManagement.js'\\nimport SvgFilterMixin from '../SvgFilterMixin.vue'\\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\\n\\nexport default {\\n\\tname: 'AppItem',\\n\\tcomponents: {\\n\\t\\tAppScore,\\n\\t\\tNcButton,\\n\\t},\\n\\tmixins: [AppManagement, SvgFilterMixin],\\n\\tprops: {\\n\\t\\tapp: {},\\n\\t\\tcategory: {},\\n\\t\\tlistView: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tisSelected: false,\\n\\t\\t\\tscrolled: false,\\n\\t\\t\\tscreenshotLoaded: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\thasRating() {\\n\\t\\t\\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\\n\\t\\t},\\n\\t},\\n\\twatch: {\\n\\t\\t'$route.params.id'(id) {\\n\\t\\t\\tthis.isSelected = (this.app.id === id)\\n\\t\\t},\\n\\t},\\n\\tmounted() {\\n\\t\\tthis.isSelected = (this.app.id === this.$route.params.id)\\n\\t\\tif (this.app.releases && this.app.screenshot) {\\n\\t\\t\\tconst image = new Image()\\n\\t\\t\\timage.onload = (e) => {\\n\\t\\t\\t\\tthis.screenshotLoaded = true\\n\\t\\t\\t}\\n\\t\\t\\timage.src = this.app.screenshot\\n\\t\\t}\\n\\t},\\n\\twatchers: {\\n\\n\\t},\\n\\tmethods: {\\n\\t\\tasync showAppDetails(event) {\\n\\t\\t\\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tawait this.$router.push({\\n\\t\\t\\t\\t\\tname: 'apps-details',\\n\\t\\t\\t\\t\\tparams: { category: this.category, id: this.app.id },\\n\\t\\t\\t\\t})\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t// we already view this app\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tprefix(prefix, content) {\\n\\t\\t\\treturn prefix + '_' + content\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.app-icon {\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\t}\\n\\t.actions {\\n\\t\\tdisplay: flex !important;\\n\\t\\tgap: 8px;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tjustify-content: end;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcContent',{class:{ 'with-app-sidebar': _vm.app},attrs:{\"app-name\":\"settings\",\"content-class\":{ 'icon-loading': _vm.loadingList },\"navigation-class\":{ 'icon-loading': _vm.loading }}},[_c('NcAppNavigation',{scopedSlots:_vm._u([{key:\"list\",fn:function(){return [_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-your-apps\",\"to\":{ name: 'apps' },\"exact\":true,\"icon\":\"icon-category-installed\",\"title\":_vm.t('settings', 'Your apps')}}),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"icon\":\"icon-category-enabled\",\"title\":_vm.$options.APPS_SECTION_ENUM.enabled}}),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"icon\":\"icon-category-disabled\",\"title\":_vm.$options.APPS_SECTION_ENUM.disabled}}),_vm._v(\" \"),(_vm.updateCount > 0)?_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"icon\":\"icon-download\",\"title\":_vm.$options.APPS_SECTION_ENUM.updates}},[_c('NcAppNavigationCounter',{attrs:{\"slot\":\"counter\"},slot:\"counter\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.updateCount)+\"\\n\\t\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"icon\":\"icon-category-app-bundles\",\"title\":_vm.$options.APPS_SECTION_ENUM['app-bundles']}}),_vm._v(\" \"),_c('NcAppNavigationSpacer'),_vm._v(\" \"),(_vm.settings.appstoreEnabled)?[_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"icon\":\"icon-favorite\",\"title\":_vm.$options.APPS_SECTION_ENUM.featured}}),_vm._v(\" \"),_vm._l((_vm.categories),function(cat){return _c('NcAppNavigationItem',{key:'icon-category-' + cat.ident,attrs:{\"icon\":'icon-category-' + cat.ident,\"to\":{\n\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t},\"title\":cat.displayName}})})]:_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-developer-docs\",\"title\":_vm.t('settings', 'Developer documentation') + ' ↗'},on:{\"click\":_vm.openDeveloperDocumentation}})]},proxy:true}])}),_vm._v(\" \"),_c('NcAppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.app,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.app)?_c('NcAppSidebar',_vm._b({class:{'app-sidebar--without-background': !_vm.appSidebar.background},on:{\"close\":_vm.hideAppDetails},scopedSlots:_vm._u([(!_vm.appSidebar.background)?{key:\"header\",fn:function(){return [_c('div',{staticClass:\"app-sidebar-header__figure--default-app-icon icon-settings-dark\"})]},proxy:true}:null,{key:\"description\",fn:function(){return [(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{staticClass:\"supported icon-checkmark-color\",attrs:{\"title\":_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{staticClass:\"official icon-checkmark\",attrs:{\"title\":_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('AppScore',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"},[_c('p',[_vm._v(_vm._s(_vm.app.version))])])]},proxy:true}],null,true)},'NcAppSidebar',_vm.appSidebar,false),[_vm._v(\" \"),_vm._v(\" \"),_c('NcAppSidebarTab',{attrs:{\"id\":\"desc\",\"icon\":\"icon-category-office\",\"name\":_vm.t('settings', 'Details'),\"order\":0}},[_c('AppDetails',{attrs:{\"app\":_vm.app}})],1),_vm._v(\" \"),(_vm.app.appstoreData && _vm.app.releases[0].translations.en.changelog)?_c('NcAppSidebarTab',{attrs:{\"id\":\"desca\",\"icon\":\"icon-category-organization\",\"name\":_vm.t('settings', 'Changelog'),\"order\":1}},_vm._l((_vm.app.releases),function(release){return _c('div',{key:release.version,staticClass:\"app-sidebar-tabs__release\"},[_c('h2',[_vm._v(_vm._s(release.version))]),_vm._v(\" \"),(_vm.changelog(release))?_c('Markdown',{attrs:{\"text\":_vm.changelog(release)}}):_vm._e()],1)}),0):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" class=\"app-score-image\">\n</template>\n<script>\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'AppScore',\n\tprops: ['score'],\n\tcomputed: {\n\t\tscoreImage() {\n\t\t\tconst score = Math.round(this.score * 10)\n\t\t\tconst imageName = 'rating/s' + score + '.svg'\n\t\t\treturn imagePath('core', imageName)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=3b3081d1&\"\nimport script from \"./AppScore.vue?vue&type=script&lang=js&\"\nexport * from \"./AppScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { emit } from '@nextcloud/event-bus'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tinstalling() {\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Enable untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(group) {\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tenable(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tdisable(appId) {\n\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tremove(appId) {\n\t\t\tthis.$store.dispatch('uninstallApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tinstall(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tupdate(appId) {\n\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'SvgFilterMixin',\n\tdata() {\n\t\treturn {\n\t\t\tfilterId: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilterUrl() {\n\t\t\treturn `url(#${this.filterId})`\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.filterId = 'invertIconApps-' + Math.random().toString(36).substring(2)\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"section\" :class=\"{ selected: isSelected }\" @click=\"showAppDetails\">\n\t\t<div class=\"app-image app-image-icon\" @click=\"showAppDetails\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !screenshotLoaded)\" class=\"icon-settings-dark\" />\n\n\t\t\t<svg v-else-if=\"listView && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<image x=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"32\"\n\t\t\t\t\theight=\"32\"\n\t\t\t\t\tpreserveAspectRatio=\"xMinYMin meet\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot && screenshotLoaded\" :src=\"app.screenshot\" width=\"100%\">\n\t\t</div>\n\t\t<div class=\"app-name\" @click=\"showAppDetails\">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if=\"!listView\" class=\"app-summary\">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if=\"listView\" class=\"app-version\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\t:title=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\t:aria-label=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\t:title=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\t:aria-label=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating && !listView\" :score=\"app.score\" />\n\t\t</div>\n\n\t\t<div class=\"actions\">\n\t\t\t<div v-if=\"app.error\" class=\"warning\">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if=\"isLoading\" class=\"icon icon-loading-small\" />\n\t\t\t<NcButton v-if=\"app.update\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"update(app.id)\">\n\t\t\t\t{{ t('settings', 'Update to {update}', {update:app.update}) }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"app.canUnInstall\"\n\t\t\t\tclass=\"uninstall\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"remove(app.id)\">\n\t\t\t\t{{ t('settings', 'Remove') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"app.active\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t\t{{ t('settings','Disable') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t:title=\"enableButtonTooltip\"\n\t\t\t\t:aria-label=\"enableButtonTooltip\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t@click.stop=\"enable(app.id)\">\n\t\t\t\t{{ enableButtonText }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-else-if=\"!app.active\"\n\t\t\t\t:title=\"forceEnableButtonTooltip\"\n\t\t\t\t:aria-label=\"forceEnableButtonTooltip\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"forceEnable(app.id)\">\n\t\t\t\t{{ forceEnableButtonText }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from './AppScore.vue'\nimport AppManagement from '../../mixins/AppManagement.js'\nimport SvgFilterMixin from '../SvgFilterMixin.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppScore,\n\t\tNcButton,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t'$route.params.id'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.app-icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n\t.actions {\n\t\tdisplay: flex !important;\n\t\tgap: 8px;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: end;\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!./AppItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=4a912665&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=4a912665&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=4a912665&scoped=true&\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=4a912665&prod&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 \"4a912665\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.screenshotLoaded))?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-version\"},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{staticClass:\"supported icon-checkmark-color\",attrs:{\"title\":_vm.t('settings', 'This app is supported via your current Nextcloud subscription.'),\"aria-label\":_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{staticClass:\"official icon-checkmark\",attrs:{\"title\":_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.'),\"aria-label\":_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update to {update}', {update:_vm.app.update}))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcButton',{staticClass:\"uninstall\",attrs:{\"type\":\"tertiary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('NcButton',{attrs:{\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings','Disable'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"type\":\"primary\",\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")]):(!_vm.app.active)?_c('NcButton',{attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"type\":\"secondary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.forceEnableButtonText)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'PrefixMixin',\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<div v-if=\"showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ n('settings', '%n app has an update available', '%n apps have an update available', counter) }}\n\t\t\t\t\t<NcButton v-if=\"showUpdateAll\"\n\t\t\t\t\t\tid=\"app-list-update-all\"\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t@click=\"updateAll\">\n\t\t\t\t\t\t{{ n('settings', 'Update', 'Update all', counter) }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"!showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ t('settings', 'All apps are up-to-date.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\t\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\n\t\t\t<transition-group v-if=\"useBundleView\"\n\t\t\t\tname=\"app-list\"\n\t\t\t\ttag=\"div\"\n\t\t\t\tclass=\"apps-list-container\">\n\t\t\t\t<template v-for=\"bundle in bundles\">\n\t\t\t\t\t<div :key=\"bundle.id\" class=\"apps-header\">\n\t\t\t\t\t\t<div class=\"app-image\" />\n\t\t\t\t\t\t<h2>{{ bundle.name }} <input type=\"button\" :value=\"bundleToggleText(bundle.id)\" @click=\"toggleBundle(bundle.id)\"></h2>\n\t\t\t\t\t\t<div class=\"app-version\" />\n\t\t\t\t\t\t<div class=\"app-level\" />\n\t\t\t\t\t\t<div class=\"app-groups\" />\n\t\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in bundleApps(bundle.id)\"\n\t\t\t\t\t\t:key=\"bundle.id + app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</transition-group>\n\t\t\t<template v-if=\"useAppStoreView\">\n\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t:list-view=\"false\" />\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in searchApps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t\t:list-view=\"true\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"search !== '' && !loading && searchApps.length === 0 && apps.length === 0\" id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\" />\n\t\t\t<h2>{{ t('settings', 'No apps found for your version') }}</h2>\n\t\t</div>\n\n\t\t<div id=\"searchresults\" />\n\t</div>\n</template>\n\n<script>\nimport AppItem from './AppList/AppItem'\nimport PrefixMixin from './PrefixMixin'\nimport pLimit from 'p-limit'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t\tNcButton,\n\t},\n\tmixins: [PrefixMixin],\n\tprops: ['category', 'app', 'search'],\n\tcomputed: {\n\t\tcounter() {\n\t\t\treturn this.apps.filter(app => app.update).length\n\t\t},\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\thasPendingUpdate() {\n\t\t\treturn this.apps.filter(app => app.update).length > 0\n\t\t},\n\t\tshowUpdateAll() {\n\t\t\treturn this.hasPendingUpdate && this.useListView\n\t\t},\n\t\tapps() {\n\t\t\tconst apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function(a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB)\n\t\t\t\t})\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles)\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update)\n\t\t\t}\n\t\t\tif (this.category === 'featured') {\n\t\t\t\treturn apps.filter(app => app.level === 200)\n\t\t\t}\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined\n\t\t\t\t\t&& (app.category === this.category || app.category.indexOf(this.category) > -1)\n\t\t\t})\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getServerData.bundles.filter(bundle => this.bundleApps(bundle.id).length > 0)\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => {\n\t\t\t\t\t\treturn app.bundleIds !== undefined && app.bundleIds.includes(bundle)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id))\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates' || this.category === 'featured')\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles')\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\treturn self.bundleApps(id).filter(app => !app.active).length === 0\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\tif (self.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable all')\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id)\n\t\t\t}\n\t\t\treturn this.enableBundle(id)\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tupdateAll() {\n\t\t\tconst limit = pLimit(1)\n\t\t\tthis.apps\n\t\t\t\t.filter(app => app.update)\n\t\t\t\t.map(app => limit(() => this.$store.dispatch('updateApp', { appId: app.id }))\n\t\t\t\t)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=049ecd42&\"\nimport script from \"./AppList.vue?vue&type=script&lang=js&\"\nexport * from \"./AppList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', '%n app has an update available', '%n apps have an update available', _vm.counter))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('NcButton',{attrs:{\"id\":\"app-list-update-all\",\"type\":\"primary\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', 'Update', 'Update all', _vm.counter))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'All apps are up-to-date.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_vm._l((_vm.bundles),function(bundle){return [_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"settings-markdown\" v-html=\"renderMarkdown\" />\n</template>\n\n<script>\nimport { marked } from 'marked'\nimport dompurify from 'dompurify'\n\nexport default {\n\tname: 'Markdown',\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed: {\n\t\trenderMarkdown() {\n\t\t\tconst renderer = new marked.Renderer()\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\tlet prot\n\t\t\t\ttry {\n\t\t\t\t\tprot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tlet out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"'\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"'\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>'\n\t\t\t\treturn out\n\t\t\t}\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text\n\t\t\t\t}\n\t\t\t\treturn title\n\t\t\t}\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote\n\t\t\t}\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.text.trim(), {\n\t\t\t\t\trenderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'h1',\n\t\t\t\t\t\t'h2',\n\t\t\t\t\t\t'h3',\n\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t'h5',\n\t\t\t\t\t\t'h6',\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote',\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.settings-markdown::v-deep {\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 120%;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t\tmargin-top: 48px;\n\t}\n\n\th2 {\n\t\tfont-size: 28px;\n\t\tmargin-top: 48px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: var(--default-font-size);\n\t}\n\n\tpre {\n\t\twhite-space: pre;\n\t\toverflow-x: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t}\n\n\tul li {\n\t\tlist-style-type: disc;\n\t}\n\n\tul > li > ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\tul > li > ul > li ul li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=652eb552&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=652eb552&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=652eb552&scoped=true&\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js&\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=652eb552&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"652eb552\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"settings-markdown\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"app-details\">\n\t\t<div class=\"app-details__actions\">\n\t\t\t<div v-if=\"app.active && canLimitToGroups(app)\" class=\"app-details__actions-groups\">\n\t\t\t\t<input :id=\"prefix('groups_enable', app.id)\"\n\t\t\t\t\tv-model=\"groupCheckedAppsData\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"app.id\"\n\t\t\t\t\tclass=\"groups-enable__checkbox checkbox\"\n\t\t\t\t\t@change=\"setGroupLimit\">\n\t\t\t\t<label :for=\"prefix('groups_enable', app.id)\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t<input type=\"hidden\"\n\t\t\t\t\tclass=\"group_select\"\n\t\t\t\t\t:title=\"t('settings', 'All')\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t\t<NcMultiselect v-if=\"isLimitedToGroups(app)\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:value=\"appGroups\"\n\t\t\t\t\t:options-limit=\"5\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Limit app usage to groups')\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:tag-width=\"60\"\n\t\t\t\t\t@select=\"addGroupLimitation\"\n\t\t\t\t\t@remove=\"removeGroupLimitation\"\n\t\t\t\t\t@search-change=\"asyncFindGroup\">\n\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t</NcMultiselect>\n\t\t\t</div>\n\t\t\t<div class=\"app-details__actions-manage\">\n\t\t\t\t<input v-if=\"app.update\"\n\t\t\t\t\tclass=\"update primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Update to {version}', { version: app.update })\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"update(app.id)\">\n\t\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\t\tclass=\"uninstall\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"remove(app.id)\">\n\t\t\t\t<input v-if=\"app.active\"\n\t\t\t\t\tclass=\"enable\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"disable(app.id)\">\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\t\tclass=\"enable primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t\t@click=\"enable(app.id)\">\n\t\t\t\t<input v-else-if=\"!app.active && !app.canInstall\"\n\t\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\t\tclass=\"enable force\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"forceEnable(app.id)\">\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-details__dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"app-details__documentation\">\n\t\t\t<a v-if=\"!app.internal\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'View in store') }} ↗</a>\n\n\t\t\t<a v-if=\"app.website\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.website\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a v-if=\"app.bugs\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.bugs\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a v-if=\"app.documentation && app.documentation.user\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.user\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.admin\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.admin\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.developer\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.developer\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\t\t<Markdown class=\"app-details__description\" :text=\"app.description\" />\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\n\nimport AppManagement from '../mixins/AppManagement'\nimport PrefixMixin from './PrefixMixin'\nimport Markdown from './Markdown'\n\nexport default {\n\tname: 'AppDetails',\n\n\tcomponents: {\n\t\tNcMultiselect,\n\t\tMarkdown,\n\t},\n\tmixins: [AppManagement, PrefixMixin],\n\n\tprops: {\n\t\tapp: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author]\n\t\t\t}\n\t\t\treturn this.app.author\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=43fb27d0&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=43fb27d0&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDetails.vue?vue&type=template&id=43fb27d0&scoped=true&\"\nimport script from \"./AppDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppDetails.vue?vue&type=style&index=0&id=43fb27d0&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43fb27d0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"app-details\"},[_c('div',{staticClass:\"app-details__actions\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"app-details__actions-groups\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":_vm.prefix('groups_enable', _vm.app.id),\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('NcMultiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__actions-manage\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', { version: _vm.app.update }),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active && !_vm.app.canInstall)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"app-details__documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('Markdown',{staticClass:\"app-details__description\",attrs:{\"text\":_vm.app.description}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcContent app-name=\"settings\"\n\t\t:class=\"{ 'with-app-sidebar': app}\"\n\t\t:content-class=\"{ 'icon-loading': loadingList }\"\n\t\t:navigation-class=\"{ 'icon-loading': loading }\">\n\t\t<!-- Categories & filters -->\n\t\t<NcAppNavigation>\n\t\t\t<template #list>\n\t\t\t\t<NcAppNavigationItem id=\"app-category-your-apps\"\n\t\t\t\t\t:to=\"{ name: 'apps' }\"\n\t\t\t\t\t:exact=\"true\"\n\t\t\t\t\ticon=\"icon-category-installed\"\n\t\t\t\t\t:title=\"t('settings', 'Your apps')\" />\n\t\t\t\t<NcAppNavigationItem id=\"app-category-enabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'enabled' } }\"\n\t\t\t\t\ticon=\"icon-category-enabled\"\n\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM.enabled\" />\n\t\t\t\t<NcAppNavigationItem id=\"app-category-disabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'disabled' } }\"\n\t\t\t\t\ticon=\"icon-category-disabled\"\n\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM.disabled\" />\n\t\t\t\t<NcAppNavigationItem v-if=\"updateCount > 0\"\n\t\t\t\t\tid=\"app-category-updates\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'updates' } }\"\n\t\t\t\t\ticon=\"icon-download\"\n\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM.updates\">\n\t\t\t\t\t<NcAppNavigationCounter slot=\"counter\">\n\t\t\t\t\t\t{{ updateCount }}\n\t\t\t\t\t</NcAppNavigationCounter>\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t\t<NcAppNavigationItem id=\"app-category-your-bundles\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'app-bundles' } }\"\n\t\t\t\t\ticon=\"icon-category-app-bundles\"\n\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM['app-bundles']\" />\n\n\t\t\t\t<NcAppNavigationSpacer />\n\n\t\t\t\t<!-- App store categories -->\n\t\t\t\t<template v-if=\"settings.appstoreEnabled\">\n\t\t\t\t\t<NcAppNavigationItem id=\"app-category-featured\"\n\t\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'featured' } }\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t:title=\"$options.APPS_SECTION_ENUM.featured\" />\n\n\t\t\t\t\t<NcAppNavigationItem v-for=\"cat in categories\"\n\t\t\t\t\t\t:key=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:icon=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:title=\"cat.displayName\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcAppNavigationItem id=\"app-developer-docs\"\n\t\t\t\t\t:title=\"t('settings', 'Developer documentation') + ' ↗'\"\n\t\t\t\t\t@click=\"openDeveloperDocumentation\" />\n\t\t\t</template>\n\t\t</NcAppNavigation>\n\n\t\t<!-- Apps list -->\n\t\t<NcAppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"app\" :search=\"searchQuery\" />\n\t\t</NcAppContent>\n\n\t\t<!-- Selected app details -->\n\t\t<NcAppSidebar v-if=\"id && app\"\n\t\t\tv-bind=\"appSidebar\"\n\t\t\t:class=\"{'app-sidebar--without-background': !appSidebar.background}\"\n\t\t\t@close=\"hideAppDetails\">\n\t\t\t<template v-if=\"!appSidebar.background\" #header>\n\t\t\t\t<div class=\"app-sidebar-header__figure--default-app-icon icon-settings-dark\" />\n\t\t\t</template>\n\n\t\t\t<template #description>\n\t\t\t\t<!-- Featured/Supported badges -->\n\t\t\t\t<div v-if=\"app.level === 300 || app.level === 200 || hasRating\" class=\"app-level\">\n\t\t\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\t\t\t:title=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\t\t\t:title=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t\t\t<AppScore v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"app-version\">\n\t\t\t\t\t<p>{{ app.version }}</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<!-- Tab content -->\n\n\t\t\t<NcAppSidebarTab id=\"desc\"\n\t\t\t\ticon=\"icon-category-office\"\n\t\t\t\t:name=\"t('settings', 'Details')\"\n\t\t\t\t:order=\"0\">\n\t\t\t\t<AppDetails :app=\"app\" />\n\t\t\t</NcAppSidebarTab>\n\t\t\t<NcAppSidebarTab v-if=\"app.appstoreData && app.releases[0].translations.en.changelog\"\n\t\t\t\tid=\"desca\"\n\t\t\t\ticon=\"icon-category-organization\"\n\t\t\t\t:name=\"t('settings', 'Changelog')\"\n\t\t\t\t:order=\"1\">\n\t\t\t\t<div v-for=\"release in app.releases\" :key=\"release.version\" class=\"app-sidebar-tabs__release\">\n\t\t\t\t\t<h2>{{ release.version }}</h2>\n\t\t\t\t\t<Markdown v-if=\"changelog(release)\" :text=\"changelog(release)\" />\n\t\t\t\t</div>\n\t\t\t</NcAppSidebarTab>\n\t\t</NcAppSidebar>\n\t</NcContent>\n</template>\n\n<script>\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport Vue from 'vue'\nimport VueLocalStorage from 'vue-localstorage'\n\nimport NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent'\nimport NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation'\nimport NcAppNavigationCounter from '@nextcloud/vue/dist/Components/NcAppNavigationCounter'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem'\nimport NcAppNavigationSpacer from '@nextcloud/vue/dist/Components/NcAppNavigationSpacer'\nimport NcAppSidebar from '@nextcloud/vue/dist/Components/NcAppSidebar'\nimport NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab'\nimport NcContent from '@nextcloud/vue/dist/Components/NcContent'\n\nimport AppList from '../components/AppList'\nimport AppDetails from '../components/AppDetails'\nimport AppManagement from '../mixins/AppManagement'\nimport AppScore from '../components/AppList/AppScore'\nimport Markdown from '../components/Markdown'\n\nimport { APPS_SECTION_ENUM } from './../constants/AppsConstants.js'\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\tAPPS_SECTION_ENUM,\n\tcomponents: {\n\t\tNcAppContent,\n\t\tAppDetails,\n\t\tAppList,\n\t\tNcAppNavigation,\n\t\tNcAppNavigationCounter,\n\t\tNcAppNavigationItem,\n\t\tNcAppNavigationSpacer,\n\t\tAppScore,\n\t\tNcAppSidebar,\n\t\tNcAppSidebarTab,\n\t\tNcContent,\n\t\tMarkdown,\n\t},\n\n\tmixins: [AppManagement],\n\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories')\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\tapp() {\n\t\t\treturn this.apps.find(app => app.id === this.id)\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\n\t\t// sidebar app binding\n\t\tappSidebar() {\n\t\t\tconst authorName = (xmlNode) => {\n\t\t\t\tif (xmlNode['@value']) {\n\t\t\t\t\t// Complex node (with email or homepage attribute)\n\t\t\t\t\treturn xmlNode['@value']\n\t\t\t\t}\n\n\t\t\t\t// Simple text node\n\t\t\t\treturn xmlNode\n\t\t\t}\n\n\t\t\tconst author = Array.isArray(this.app.author)\n\t\t\t\t? this.app.author.map(authorName).join(', ')\n\t\t\t\t: authorName(this.app.author)\n\t\t\tconst license = t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\n\t\t\tconst subtitle = t('settings', 'by {author}\\n{license}', { author, license })\n\n\t\t\treturn {\n\t\t\t\tsubtitle,\n\t\t\t\tbackground: this.app.screenshot && this.screenshotLoaded\n\t\t\t\t\t? this.app.screenshot\n\t\t\t\t\t: this.app.preview,\n\t\t\t\tcompact: !(this.app.screenshot && this.screenshotLoaded),\n\t\t\t\ttitle: this.app.name,\n\n\t\t\t}\n\t\t},\n\t\tchangelog() {\n\t\t\treturn (release) => release.translations.en.changelog\n\t\t},\n\t},\n\n\twatch: {\n\t\tcategory() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\tapp() {\n\t\t\tthis.screenshotLoaded = false\n\t\t\tif (this.app?.releases && this.app?.screenshot) {\n\t\t\t\tconst image = new Image()\n\t\t\t\timage.onload = (e) => {\n\t\t\t\t\tthis.screenshotLoaded = true\n\t\t\t\t}\n\t\t\t\timage.src = this.app.screenshot\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories', { shouldRefetchCategories: true })\n\t\tthis.$store.dispatch('getAllApps')\n\t\tthis.$store.dispatch('getGroups', { offset: 0, limit: 5 })\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\n\tmounted() {\n\t\tsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tsetSearch({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: { category: this.category },\n\t\t\t})\n\t\t},\n\t\topenDeveloperDocumentation() {\n\t\t\twindow.open(this.settings.developerDocumentation)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=style&index=0&id=5a76915a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=style&index=0&id=5a76915a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=5a76915a&scoped=true&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Apps.vue?vue&type=style&index=0&id=5a76915a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5a76915a\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","name","props","computed","scoreImage","_c","this","_self","staticClass","attrs","axios","generateOcsUrl","then","data","ocs","meta","statuscode","emit","apps","window","dispatchEvent","Event","appGroups","app","groups","map","group","installing","$store","getters","loading","isLoading","enableButtonText","needsDownload","t","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","groupCheckedAppsData","mounted","length","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","concat","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","response","rebuildNavigation","catch","error","showError","enable","disable","remove","install","update","filterId","filterUrl","components","AppScore","NcButton","mixins","category","listView","type","default","isSelected","scrolled","screenshotLoaded","hasRating","watch","image","watchers","showAppDetails","event","params","prefix","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","class","selected","on","preview","_e","_v","screenshot","_s","summary","version","appstoreData","releases","level","score","$event","stopPropagation","canUnInstall","active","canInstall","isCompatible","AppItem","counter","hasPendingUpdate","showUpdateAll","filter","sort","bundles","bundleApps","searchApps","useAppStoreView","useListView","useBundleView","allBundlesEnabled","bundleToggleText","toggleBundle","enableBundle","console","OC","disableBundle","updateAll","installed","store","n","_l","key","bundle","text","renderMarkdown","renderer","prot","replace","toLowerCase","out","marked","gfm","highlight","tables","breaks","pedantic","sanitize","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","domProps","NcMultiselect","Markdown","required","appstoreUrl","licence","license","author","directives","rawName","value","expression","Array","isArray","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","modifiers","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","internal","website","bugs","documentation","user","admin","developer","description","Vue","APPS_SECTION_ENUM","NcAppContent","AppDetails","AppList","NcAppNavigation","NcAppNavigationCounter","NcAppNavigationItem","NcAppNavigationSpacer","NcAppSidebar","NcAppSidebarTab","NcContent","searchQuery","loadingList","categories","updateCount","settings","appSidebar","authorName","subtitle","background","compact","title","changelog","beforeMount","shouldRefetchCategories","subscribe","beforeDestroy","unsubscribe","setSearch","resetSearch","hideAppDetails","openDeveloperDocumentation","scopedSlots","_u","fn","$options","enabled","disabled","updates","appstoreEnabled","featured","cat","ident","displayName","proxy","_b","ratingOverall","translations","en","release"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-apps-users-management.js b/dist/settings-vue-settings-apps-users-management.js
index e56f9162e02..040fc02f7cc 100644
--- a/dist/settings-vue-settings-apps-users-management.js
+++ b/dist/settings-vue-settings-apps-users-management.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-apps-users-management.js.LICENSE.txt */
-!function(){"use strict";var e,r,o,i={92652:function(e,t,r){r.d(t,{J:function(){return o}});var n=r(9944),o=Object.freeze({enabled:(0,n.translate)("settings","Active apps"),disabled:(0,n.translate)("settings","Disabled apps"),updates:(0,n.translate)("settings","Updates"),"app-bundles":(0,n.translate)("settings","App bundles"),featured:(0,n.translate)("settings","Featured apps")})},12949:function(e,r,o){var i=o(20144),u=o(34741),a=o(83678),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(s,(function(){return(0,this._self._c)("router-view")}),[],!1,null,null,null).exports,d=o(78345),p=o(79753),f=o(92652),l=o(20629),m=o(4820),g=o(10128),h=(o(65509),function(e){return e.replace(/\/$/,"")}),v=function(){return(0,g.confirmPassword)()},A=function(e,t){return m.default.get(h(e),t)},I=function(e,t){return m.default.post(h(e),t)},b=function(e,t){return m.default.put(h(e),t)},y=function(e,t){return m.default.delete(h(e),{params:t})},U=(0,o(17499).IY)().setApp("settings").detectUser().build(),P=function(e,t){return 1===t?e.sort((function(e,t){return e.usercount-e.disabled<t.usercount-t.disabled})):e.sort((function(e,t){return e.name.localeCompare(t.name)}))},L={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},C={appendUsers:function(e,t){var r=e.users.concat(Object.keys(t).map((function(e){return t[e]})));e.usersOffset+=e.usersLimit,e.users=r},setPasswordPolicyMinLength:function(e,t){e.minPasswordLength=""!==t?t:0},initGroups:function(e,t){var r=t.groups,n=t.orderBy,o=t.userCount;e.groups=r.map((function(e){return Object.assign({},L,e)})),e.orderBy=n,e.userCount=o,e.groups=P(e.groups,e.orderBy)},addGroup:function(e,t){var r=t.gid,n=t.displayName;try{if(void 0!==e.groups.find((function(e){return e.id===r})))return;var o=Object.assign({},L,{id:r,name:n});e.groups.push(o),e.groups=P(e.groups,e.orderBy)}catch(e){console.error("Can't create group",e)}},renameGroup:function(e,t){var r=t.gid,n=t.displayName,o=e.groups.findIndex((function(e){return e.id===r}));if(o>=0){var i=e.groups[o];i.name=n,e.groups.splice(o,1,i),e.groups=P(e.groups,e.orderBy)}},removeGroup:function(e,t){var r=e.groups.findIndex((function(e){return e.id===t}));r>=0&&e.groups.splice(r,1)},addUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount++,i.groups.push(n),e.groups=P(e.groups,e.orderBy)},removeUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount--;var u=i.groups;u.splice(u.indexOf(n),1),e.groups=P(e.groups,e.orderBy)},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;e.users.find((function(e){return e.id===r})).subadmin.push(n)},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid,o=e.users.find((function(e){return e.id===r})).subadmin;o.splice(o.indexOf(n),1)},deleteUser:function(e,t){var r=e.users.findIndex((function(e){return e.id===t}));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData:function(e,t){var r=t.data.ocs.data;e.users.push(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=e.users.find((function(e){return e.id===r}));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts:function(e,t){var r=t.user,n=t.actionType,o=e.groups.find((function(e){return"disabled"===e.id}));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,e.userCount+=r.enabled?1:-1,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled+=r.enabled?-1:1}));break;case"create":e.userCount++,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount++}));break;case"remove":r.enabled?(e.userCount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount--}))):(o.usercount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled--})));break;default:U.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value;if("quota"===n){var i=OC.Util.computerFileSize(o);e.users.find((function(e){return e.id===r}))[n][n]=null!==i?i:o}else e.users.find((function(e){return e.id===r}))[n]=o},resetUsers:function(e){e.users=[],e.usersOffset=0}},w=m.default.CancelToken,E=null,O={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:C,getters:{getUsers:function(e){return e.users},getGroups:function(e){return e.groups},getSubadminGroups:function(e){return e.groups.filter((function(e){return"admin"!==e.id&&"disabled"!==e.id}))},getPasswordPolicyMinLength:function(e){return e.minPasswordLength},getUsersOffset:function(e){return e.usersOffset},getUsersLimit:function(e){return e.usersLimit},getUserCount:function(e){return e.userCount}},actions:{getUsers:function(e,t){var r=t.offset,n=t.limit,o=t.search,i=t.group;return E&&E.cancel("Operation canceled by another search request."),E=w.source(),o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?A((0,p.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:E.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){m.default.isCancel(t)||e.commit("API_FAILURE",t)})):A((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:E.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){m.default.isCancel(t)||e.commit("API_FAILURE",t)}))},getGroups:function(e,t){var r=t.offset,n=t.limit,o=t.search;o="string"==typeof o?o:"";var i=-1===n?"":"&limit=".concat(n);return A((0,p.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((function(t){return Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{gid:t,displayName:t})})),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromList:function(e,t){var r=t.offset,n=t.limit,o=t.search;return o="string"==typeof o?o:"",A((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((function(t){return Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromGroup:function(e,t){var r=t.groupid,n=t.offset,o=t.limit;return A((0,p.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((function(t){return e.commit("getUsersFromList",t.data.ocs.data.users)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getPasswordPolicyMinLength:function(e){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(e,t){return v().then((function(r){return I((0,p.generateOcsUrl)("cloud/groups"),{groupid:t}).then((function(r){return e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}})).catch((function(e){throw e}))})).catch((function(r){throw e.commit("API_FAILURE",{gid:t,error:r}),r}))},renameGroup:function(e,t){var r=t.groupid,n=t.displayName;return v().then((function(t){return b((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((function(t){return e.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:function(e,t){return v().then((function(r){return y((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((function(r){return e.commit("removeGroup",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{gid:t,error:r})}))},addUserGroup:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return I((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserGroup:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return I((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},wipeUserDevices:function(e,t){return v().then((function(e){return I((0,p.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:t})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},deleteUser:function(e,t){return v().then((function(r){return y((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(r){return e.commit("deleteUser",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},addUser:function(e,t){var r=e.commit,n=e.dispatch,o=t.userid,i=t.password,u=t.displayName,a=t.email,s=t.groups,c=t.subadmin,d=t.quota,f=t.language;return v().then((function(e){return I((0,p.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:u,email:a,groups:s,subadmin:c,quota:d,language:f}).then((function(e){return n("addUserData",o||e.data.ocs.data.id)})).catch((function(e){throw e}))})).catch((function(e){throw r("API_FAILURE",{userid:o,error:e}),e}))},addUserData:function(e,t){return v().then((function(r){return A((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(t){return e.commit("addUserData",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=void 0===n||n,i=o?"enable":"disable";return v().then((function(t){return b((0,p.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((function(t){return e.commit("enableDisableUser",{userid:r,enabled:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?v().then((function(t){return b((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((function(t){return e.commit("setUserData",{userid:r,key:n,value:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(e,t){return v().then((function(e){return I((0,p.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:t})).then((function(e){return!0})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))}}},_=o(26932);function R(e,t,r,n,o,i,u){try{var a=e[i](u),s=a.value}catch(e){return void r(e)}a.done?t(s):Promise.resolve(s).then(n,o)}function x(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function u(e){R(i,n,o,u,a,"next",e)}function a(e){R(i,n,o,u,a,"throw",e)}u(void 0)}))}}o(36144);var k={APPS_API_FAILURE:function(e,r){(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories:function(e,t){var r=t.categories,n=t.updateCount;e.categories=r,e.updateCount=n},updateCategories:function(e,t){e.gettingCategoriesPromise=t},setUpdateCount:function(e,t){e.updateCount=t},addCategory:function(e,t){e.categories.push(t)},appendCategories:function(e,t){e.categories=t},setAllApps:function(e,t){e.apps=t},setError:function(e,t){var r=t.appId,n=t.error;Array.isArray(r)||(r=[r]),r.forEach((function(t){e.apps.find((function(e){return e.id===t})).error=n}))},clearError:function(e,t){var r=t.appId;t.error,e.apps.find((function(e){return e.id===r})).error=null},enableApp:function(e,t){var r=t.appId,n=t.groups,o=e.apps.find((function(e){return e.id===r}));o.active=!0,o.groups=n},disableApp:function(e,t){var r=e.apps.find((function(e){return e.id===t}));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp:function(e,t){e.apps.find((function(e){return e.id===t})).active=!1,e.apps.find((function(e){return e.id===t})).groups=[],e.apps.find((function(e){return e.id===t})).needsDownload=!0,e.apps.find((function(e){return e.id===t})).installed=!1,e.apps.find((function(e){return e.id===t})).canUnInstall=!1,e.apps.find((function(e){return e.id===t})).canInstall=!0},updateApp:function(e,t){var r=e.apps.find((function(e){return e.id===t})),n=r.update;r.update=null,r.version=n,e.updateCount--},resetApps:function(e){e.apps=[]},reset:function(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.ZP.set(e.loading,t,!0)})):i.ZP.set(e.loading,t,!0)},stopLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.ZP.set(e.loading,t,!1)})):i.ZP.set(e.loading,t,!1)}},D={enableApp:function(e,r){var n,o=r.appId,i=r.groups;return n=Array.isArray(o)?o:[o],v().then((function(r){return e.commit("startLoading",n),e.commit("startLoading","install"),I((0,p.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((function(r){return e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),A((0,p.generateUrl)("apps/files")).then((function(){r.data.update_required&&((0,_.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:function(){return window.location.reload()},close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((function(){Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(e,t){var r,n=t.appId;return t.groups,r=Array.isArray(n)?n:[n],v().then((function(){return e.commit("startLoading",r),e.commit("startLoading","install"),I((0,p.generateUrl)("settings/apps/force"),{appId:n}).then((function(e){location.reload()})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},disableApp:function(e,t){var r,n=t.appId;return r=Array.isArray(n)?n:[n],v().then((function(t){return e.commit("startLoading",r),I((0,p.generateUrl)("settings/apps/disable"),{appIds:r}).then((function(t){return e.commit("stopLoading",r),r.forEach((function(t){e.commit("disableApp",t)})),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},uninstallApp:function(e,t){var r=t.appId;return v().then((function(t){return e.commit("startLoading",r),A((0,p.generateUrl)("settings/apps/uninstall/".concat(r))).then((function(t){return e.commit("stopLoading",r),e.commit("uninstallApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},updateApp:function(e,t){var r=t.appId;return v().then((function(t){return e.commit("startLoading",r),e.commit("startLoading","install"),A((0,p.generateUrl)("settings/apps/update/".concat(r))).then((function(t){return e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},getAllApps:function(e){return e.commit("startLoading","list"),A((0,p.generateUrl)("settings/apps/list")).then((function(t){return e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0})).catch((function(t){return e.commit("API_FAILURE",t)}))},getCategories:function(e){var t=arguments;return x(regeneratorRuntime.mark((function r(){var n,o,i,u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n=t.length>1&&void 0!==t[1]?t[1]:{},(void 0===(o=n.shouldRefetchCategories)||!o)&&e.state.gettingCategoriesPromise){r.next=20;break}return e.commit("startLoading","categories"),r.prev=3,i=A((0,p.generateUrl)("settings/apps/categories")),e.commit("updateCategories",i),r.next=8,i;case 8:if(!((u=r.sent).data.length>0)){r.next=13;break}return e.commit("appendCategories",u.data),e.commit("stopLoading","categories"),r.abrupt("return",!0);case 13:return e.commit("stopLoading","categories"),r.abrupt("return",!1);case 17:r.prev=17,r.t0=r.catch(3),e.commit("API_FAILURE",r.t0);case 20:return r.abrupt("return",e.state.gettingCategoriesPromise);case 21:case"end":return r.stop()}}),r,null,[[3,17]])})))()}},F={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1,gettingCategoriesPromise:null},mutations:k,getters:{loading:function(e){return function(t){return e.loading[t]}},getCategories:function(e){return e.categories},getAllApps:function(e){return e.apps},getUpdateCount:function(e){return e.updateCount},getCategoryById:function(e){return function(t){return e.categories.find((function(e){return e.id===t}))}}},actions:D},M={state:{},mutations:{},getters:{},actions:{setAppConfig:function(e,t){var r=t.app,n=t.key,o=t.value;return v().then((function(e){return I((0,p.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{app:r,key:n,value:o,error:t})}))}}};i.ZP.use(l.ZP);var j={API_FAILURE:function(e,r){try{var n=r.error.response.data.ocs.meta.message;(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+n,{isHTML:!0})}catch(e){(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,r)}},N=new l.yh({modules:{users:O,apps:F,settings:{state:{serverData:{}},mutations:{setServerData:function(e,t){e.serverData=t}},getters:{getServerData:function(e){return e.serverData}},actions:{}},oc:M},strict:!1,mutations:j});function Z(e,t,r,n,o,i,u){try{var a=e[i](u),s=a.value}catch(e){return void r(e)}a.done?t(s):Promise.resolve(s).then(n,o)}function S(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function u(e){Z(i,n,o,u,a,"next",e)}function a(e){Z(i,n,o,u,a,"throw",e)}u(void 0)}))}}var T=function(){return Promise.all([o.e(7874),o.e(8351)]).then(o.bind(o,82883))},G=function(){return Promise.all([o.e(7874),o.e(7418)]).then(o.bind(o,35503))};i.ZP.use(d.Z);var B,z=document.title,H=new d.Z({mode:"history",base:(0,p.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:T,props:!0,name:"users",meta:{title:function(){return t("settings","Active users")}},children:[{path:":selectedGroup",name:"group",meta:{title:function(e){return"admin"===e.params.selectedGroup?t("settings","Admins"):"disabled"===e.params.selectedGroup?t("settings","Disabled users"):decodeURIComponent(e.params.selectedGroup)}},component:T}]},{path:"/:index(index.php/)?settings/apps",component:G,props:!0,name:"apps",meta:{title:function(){return t("settings","Your apps")}},children:[{path:":category",name:"apps-category",meta:{title:(B=S(regeneratorRuntime.mark((function e(r){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("apps"!==r.name){e.next=2;break}return e.abrupt("return",t("settings","Your apps"));case 2:if(!f.J[r.params.category]){e.next=4;break}return e.abrupt("return",f.J[r.params.category]);case 4:return e.next=6,N.dispatch("getCategories");case 6:if(!(n=N.getters.getCategoryById(r.params.category)).displayName){e.next=9;break}return e.abrupt("return",n.displayName);case 9:case"end":return e.stop()}}),e)}))),function(e){return B.apply(this,arguments)})},component:G,children:[{path:":id",name:"apps-details",component:G}]}]}]});H.afterEach(function(){var e=S(regeneratorRuntime.mark((function e(t){var r,n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(r=(n=t.meta).title)||void 0===r?void 0:r.call(n,t);case 2:o=e.sent,document.title=o?"".concat(o," - ").concat(z):z;case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());var q=H;i.ZP.use(u.default,{defaultHtml:!1}),(0,a.Z)(N,q),o.nc=btoa(OC.requestToken),i.ZP.prototype.t=t,i.ZP.prototype.n=n,i.ZP.prototype.OC=OC,i.ZP.prototype.OCA=OCA,i.ZP.prototype.oc_userconfig=oc_userconfig,new i.ZP({router:q,store:N,render:function(e){return e(c)}}).$mount("#content")},81490:function(e){e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:function(e){e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},u={};function a(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=i,e=[],a.O=function(t,r,n,o){if(!r){var i=1/0;for(d=0;d<e.length;d++){r=e[d][0],n=e[d][1],o=e[d][2];for(var u=!0,s=0;s<r.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[s])}))?r.splice(s--,1):(u=!1,o<i&&(i=o));if(u){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,r){return a.f[r](e,t),t}),[]))},a.u=function(e){return{7418:"settings-apps-view",8351:"settings-users"}[e]+"-"+e+".js?v="+{7418:"fc224c568df173958cf1",8351:"6b9e360c7903d202d10c"}[e]},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="nextcloud:",a.l=function(e,t,n,i){if(r[e])r[e].push(t);else{var u,s;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var p=c[d];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==o+n){u=p;break}}u||(s=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",o+n),u.src=e),r[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((function(e){return e(n)})),t)return t(n)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),s&&document.head.appendChild(u)}},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=8562,function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){a.b=document.baseURI||self.location.href;var e={8562:0};a.f.j=function(t,r){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((function(r,o){n=e[t]=[r,o]}));r.push(n[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,(function(r){if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}}),"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,o,i=r[0],u=r[1],s=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(n in u)a.o(u,n)&&(a.m[n]=u[n]);if(s)var d=s(a)}for(t&&t(r);c<i.length;c++)o=i[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),a.nc=void 0;var s=a.O(void 0,[7874],(function(){return a(12949)}));s=a.O(s)}();
-//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=886b4e229c7d8dfa9798 \ No newline at end of file
+!function(){"use strict";var e,r,o,i={92652:function(e,t,r){r.d(t,{J:function(){return o}});var n=r(9944),o=Object.freeze({enabled:(0,n.translate)("settings","Active apps"),disabled:(0,n.translate)("settings","Disabled apps"),updates:(0,n.translate)("settings","Updates"),"app-bundles":(0,n.translate)("settings","App bundles"),featured:(0,n.translate)("settings","Featured apps")})},12949:function(e,r,o){var i=o(20144),u=o(34741),a=o(83678),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(s,(function(){return(0,this._self._c)("router-view")}),[],!1,null,null,null).exports,d=o(78345),p=o(79753),f=o(92652),l=o(20629),m=o(4820),g=o(10128),h=(o(65509),function(e){return e.replace(/\/$/,"")}),v=function(){return(0,g.confirmPassword)()},A=function(e,t){return m.default.get(h(e),t)},b=function(e,t){return m.default.post(h(e),t)},I=function(e,t){return m.default.put(h(e),t)},y=function(e,t){return m.default.delete(h(e),{params:t})},U=(0,o(17499).IY)().setApp("settings").detectUser().build(),P=function(e,t){return 1===t?e.sort((function(e,t){return e.usercount-e.disabled<t.usercount-t.disabled})):e.sort((function(e,t){return e.name.localeCompare(t.name)}))},L={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},C={appendUsers:function(e,t){var r=e.users.concat(Object.keys(t).map((function(e){return t[e]})));e.usersOffset+=e.usersLimit,e.users=r},setPasswordPolicyMinLength:function(e,t){e.minPasswordLength=""!==t?t:0},initGroups:function(e,t){var r=t.groups,n=t.orderBy,o=t.userCount;e.groups=r.map((function(e){return Object.assign({},L,e)})),e.orderBy=n,e.userCount=o,e.groups=P(e.groups,e.orderBy)},addGroup:function(e,t){var r=t.gid,n=t.displayName;try{if(void 0!==e.groups.find((function(e){return e.id===r})))return;var o=Object.assign({},L,{id:r,name:n});e.groups.push(o),e.groups=P(e.groups,e.orderBy)}catch(e){console.error("Can't create group",e)}},renameGroup:function(e,t){var r=t.gid,n=t.displayName,o=e.groups.findIndex((function(e){return e.id===r}));if(o>=0){var i=e.groups[o];i.name=n,e.groups.splice(o,1,i),e.groups=P(e.groups,e.orderBy)}},removeGroup:function(e,t){var r=e.groups.findIndex((function(e){return e.id===t}));r>=0&&e.groups.splice(r,1)},addUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount++,i.groups.push(n),e.groups=P(e.groups,e.orderBy)},removeUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount--;var u=i.groups;u.splice(u.indexOf(n),1),e.groups=P(e.groups,e.orderBy)},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;e.users.find((function(e){return e.id===r})).subadmin.push(n)},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid,o=e.users.find((function(e){return e.id===r})).subadmin;o.splice(o.indexOf(n),1)},deleteUser:function(e,t){var r=e.users.findIndex((function(e){return e.id===t}));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData:function(e,t){var r=t.data.ocs.data;e.users.push(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=e.users.find((function(e){return e.id===r}));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts:function(e,t){var r=t.user,n=t.actionType,o=e.groups.find((function(e){return"disabled"===e.id}));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,e.userCount+=r.enabled?1:-1,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled+=r.enabled?-1:1}));break;case"create":e.userCount++,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount++}));break;case"remove":r.enabled?(e.userCount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount--}))):(o.usercount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled--})));break;default:U.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value;if("quota"===n){var i=OC.Util.computerFileSize(o);e.users.find((function(e){return e.id===r}))[n][n]=null!==i?i:o}else e.users.find((function(e){return e.id===r}))[n]=o},resetUsers:function(e){e.users=[],e.usersOffset=0}},w=m.default.CancelToken,E=null,O={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:C,getters:{getUsers:function(e){return e.users},getGroups:function(e){return e.groups},getSubadminGroups:function(e){return e.groups.filter((function(e){return"admin"!==e.id&&"disabled"!==e.id}))},getPasswordPolicyMinLength:function(e){return e.minPasswordLength},getUsersOffset:function(e){return e.usersOffset},getUsersLimit:function(e){return e.usersLimit},getUserCount:function(e){return e.userCount}},actions:{getUsers:function(e,t){var r=t.offset,n=t.limit,o=t.search,i=t.group;return E&&E.cancel("Operation canceled by another search request."),E=w.source(),o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?A((0,p.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:E.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){m.default.isCancel(t)||e.commit("API_FAILURE",t)})):A((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:E.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){m.default.isCancel(t)||e.commit("API_FAILURE",t)}))},getGroups:function(e,t){var r=t.offset,n=t.limit,o=t.search;o="string"==typeof o?o:"";var i=-1===n?"":"&limit=".concat(n);return A((0,p.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((function(t){return Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{gid:t,displayName:t})})),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromList:function(e,t){var r=t.offset,n=t.limit,o=t.search;return o="string"==typeof o?o:"",A((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((function(t){return Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromGroup:function(e,t){var r=t.groupid,n=t.offset,o=t.limit;return A((0,p.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((function(t){return e.commit("getUsersFromList",t.data.ocs.data.users)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getPasswordPolicyMinLength:function(e){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(e,t){return v().then((function(r){return b((0,p.generateOcsUrl)("cloud/groups"),{groupid:t}).then((function(r){return e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}})).catch((function(e){throw e}))})).catch((function(r){throw e.commit("API_FAILURE",{gid:t,error:r}),r}))},renameGroup:function(e,t){var r=t.groupid,n=t.displayName;return v().then((function(t){return I((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((function(t){return e.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:function(e,t){return v().then((function(r){return y((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((function(r){return e.commit("removeGroup",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{gid:t,error:r})}))},addUserGroup:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return b((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserGroup:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return b((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},wipeUserDevices:function(e,t){return v().then((function(e){return b((0,p.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:t})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},deleteUser:function(e,t){return v().then((function(r){return y((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(r){return e.commit("deleteUser",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},addUser:function(e,t){var r=e.commit,n=e.dispatch,o=t.userid,i=t.password,u=t.displayName,a=t.email,s=t.groups,c=t.subadmin,d=t.quota,f=t.language;return v().then((function(e){return b((0,p.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:u,email:a,groups:s,subadmin:c,quota:d,language:f}).then((function(e){return n("addUserData",o||e.data.ocs.data.id)})).catch((function(e){throw e}))})).catch((function(e){throw r("API_FAILURE",{userid:o,error:e}),e}))},addUserData:function(e,t){return v().then((function(r){return A((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(t){return e.commit("addUserData",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=void 0===n||n,i=o?"enable":"disable";return v().then((function(t){return I((0,p.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((function(t){return e.commit("enableDisableUser",{userid:r,enabled:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?v().then((function(t){return I((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((function(t){return e.commit("setUserData",{userid:r,key:n,value:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(e,t){return v().then((function(e){return b((0,p.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:t})).then((function(e){return!0})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))}}},_=o(26932);function R(e,t,r,n,o,i,u){try{var a=e[i](u),s=a.value}catch(e){return void r(e)}a.done?t(s):Promise.resolve(s).then(n,o)}function x(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function u(e){R(i,n,o,u,a,"next",e)}function a(e){R(i,n,o,u,a,"throw",e)}u(void 0)}))}}o(36144);var k={APPS_API_FAILURE:function(e,r){(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories:function(e,t){var r=t.categories,n=t.updateCount;e.categories=r,e.updateCount=n},updateCategories:function(e,t){e.gettingCategoriesPromise=t},setUpdateCount:function(e,t){e.updateCount=t},addCategory:function(e,t){e.categories.push(t)},appendCategories:function(e,t){e.categories=t},setAllApps:function(e,t){e.apps=t},setError:function(e,t){var r=t.appId,n=t.error;Array.isArray(r)||(r=[r]),r.forEach((function(t){e.apps.find((function(e){return e.id===t})).error=n}))},clearError:function(e,t){var r=t.appId;t.error,e.apps.find((function(e){return e.id===r})).error=null},enableApp:function(e,t){var r=t.appId,n=t.groups,o=e.apps.find((function(e){return e.id===r}));o.active=!0,o.groups=n},disableApp:function(e,t){var r=e.apps.find((function(e){return e.id===t}));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp:function(e,t){e.apps.find((function(e){return e.id===t})).active=!1,e.apps.find((function(e){return e.id===t})).groups=[],e.apps.find((function(e){return e.id===t})).needsDownload=!0,e.apps.find((function(e){return e.id===t})).installed=!1,e.apps.find((function(e){return e.id===t})).canUnInstall=!1,e.apps.find((function(e){return e.id===t})).canInstall=!0},updateApp:function(e,t){var r=e.apps.find((function(e){return e.id===t})),n=r.update;r.update=null,r.version=n,e.updateCount--},resetApps:function(e){e.apps=[]},reset:function(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.ZP.set(e.loading,t,!0)})):i.ZP.set(e.loading,t,!0)},stopLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.ZP.set(e.loading,t,!1)})):i.ZP.set(e.loading,t,!1)}},D={enableApp:function(e,r){var n,o=r.appId,i=r.groups;return n=Array.isArray(o)?o:[o],v().then((function(r){return e.commit("startLoading",n),e.commit("startLoading","install"),b((0,p.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((function(r){return e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),A((0,p.generateUrl)("apps/files")).then((function(){r.data.update_required&&((0,_.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:function(){return window.location.reload()},close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((function(){Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(e,t){var r,n=t.appId;return t.groups,r=Array.isArray(n)?n:[n],v().then((function(){return e.commit("startLoading",r),e.commit("startLoading","install"),b((0,p.generateUrl)("settings/apps/force"),{appId:n}).then((function(e){location.reload()})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},disableApp:function(e,t){var r,n=t.appId;return r=Array.isArray(n)?n:[n],v().then((function(t){return e.commit("startLoading",r),b((0,p.generateUrl)("settings/apps/disable"),{appIds:r}).then((function(t){return e.commit("stopLoading",r),r.forEach((function(t){e.commit("disableApp",t)})),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},uninstallApp:function(e,t){var r=t.appId;return v().then((function(t){return e.commit("startLoading",r),A((0,p.generateUrl)("settings/apps/uninstall/".concat(r))).then((function(t){return e.commit("stopLoading",r),e.commit("uninstallApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},updateApp:function(e,t){var r=t.appId;return v().then((function(t){return e.commit("startLoading",r),e.commit("startLoading","install"),A((0,p.generateUrl)("settings/apps/update/".concat(r))).then((function(t){return e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},getAllApps:function(e){return e.commit("startLoading","list"),A((0,p.generateUrl)("settings/apps/list")).then((function(t){return e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0})).catch((function(t){return e.commit("API_FAILURE",t)}))},getCategories:function(e){var t=arguments;return x(regeneratorRuntime.mark((function r(){var n,o,i,u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n=t.length>1&&void 0!==t[1]?t[1]:{},(void 0===(o=n.shouldRefetchCategories)||!o)&&e.state.gettingCategoriesPromise){r.next=20;break}return e.commit("startLoading","categories"),r.prev=3,i=A((0,p.generateUrl)("settings/apps/categories")),e.commit("updateCategories",i),r.next=8,i;case 8:if(!((u=r.sent).data.length>0)){r.next=13;break}return e.commit("appendCategories",u.data),e.commit("stopLoading","categories"),r.abrupt("return",!0);case 13:return e.commit("stopLoading","categories"),r.abrupt("return",!1);case 17:r.prev=17,r.t0=r.catch(3),e.commit("API_FAILURE",r.t0);case 20:return r.abrupt("return",e.state.gettingCategoriesPromise);case 21:case"end":return r.stop()}}),r,null,[[3,17]])})))()}},F={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1,gettingCategoriesPromise:null},mutations:k,getters:{loading:function(e){return function(t){return e.loading[t]}},getCategories:function(e){return e.categories},getAllApps:function(e){return e.apps},getUpdateCount:function(e){return e.updateCount},getCategoryById:function(e){return function(t){return e.categories.find((function(e){return e.id===t}))}}},actions:D},M={state:{},mutations:{},getters:{},actions:{setAppConfig:function(e,t){var r=t.app,n=t.key,o=t.value;return v().then((function(e){return b((0,p.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{app:r,key:n,value:o,error:t})}))}}};i.ZP.use(l.ZP);var j={API_FAILURE:function(e,r){try{var n=r.error.response.data.ocs.meta.message;(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+n,{isHTML:!0})}catch(e){(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,r)}},N=new l.yh({modules:{users:O,apps:F,settings:{state:{serverData:{}},mutations:{setServerData:function(e,t){e.serverData=t}},getters:{getServerData:function(e){return e.serverData}},actions:{}},oc:M},strict:!1,mutations:j});function Z(e,t,r,n,o,i,u){try{var a=e[i](u),s=a.value}catch(e){return void r(e)}a.done?t(s):Promise.resolve(s).then(n,o)}function S(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function u(e){Z(i,n,o,u,a,"next",e)}function a(e){Z(i,n,o,u,a,"throw",e)}u(void 0)}))}}var T=function(){return Promise.all([o.e(7874),o.e(8351)]).then(o.bind(o,82883))},G=function(){return Promise.all([o.e(7874),o.e(7418)]).then(o.bind(o,573))};i.ZP.use(d.Z);var B,z=document.title,H=new d.Z({mode:"history",base:(0,p.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:T,props:!0,name:"users",meta:{title:function(){return t("settings","Active users")}},children:[{path:":selectedGroup",name:"group",meta:{title:function(e){return"admin"===e.params.selectedGroup?t("settings","Admins"):"disabled"===e.params.selectedGroup?t("settings","Disabled users"):decodeURIComponent(e.params.selectedGroup)}},component:T}]},{path:"/:index(index.php/)?settings/apps",component:G,props:!0,name:"apps",meta:{title:function(){return t("settings","Your apps")}},children:[{path:":category",name:"apps-category",meta:{title:(B=S(regeneratorRuntime.mark((function e(r){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("apps"!==r.name){e.next=2;break}return e.abrupt("return",t("settings","Your apps"));case 2:if(!f.J[r.params.category]){e.next=4;break}return e.abrupt("return",f.J[r.params.category]);case 4:return e.next=6,N.dispatch("getCategories");case 6:if(!(n=N.getters.getCategoryById(r.params.category)).displayName){e.next=9;break}return e.abrupt("return",n.displayName);case 9:case"end":return e.stop()}}),e)}))),function(e){return B.apply(this,arguments)})},component:G,children:[{path:":id",name:"apps-details",component:G}]}]}]});H.afterEach(function(){var e=S(regeneratorRuntime.mark((function e(t){var r,n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(r=(n=t.meta).title)||void 0===r?void 0:r.call(n,t);case 2:o=e.sent,document.title=o?"".concat(o," - ").concat(z):z;case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());var q=H;i.ZP.use(u.default,{defaultHtml:!1}),(0,a.Z)(N,q),o.nc=btoa(OC.requestToken),i.ZP.prototype.t=t,i.ZP.prototype.n=n,i.ZP.prototype.OC=OC,i.ZP.prototype.OCA=OCA,i.ZP.prototype.oc_userconfig=oc_userconfig,new i.ZP({router:q,store:N,render:function(e){return e(c)}}).$mount("#content")},81490:function(e){e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:function(e){e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},u={};function a(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=i,e=[],a.O=function(t,r,n,o){if(!r){var i=1/0;for(d=0;d<e.length;d++){r=e[d][0],n=e[d][1],o=e[d][2];for(var u=!0,s=0;s<r.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[s])}))?r.splice(s--,1):(u=!1,o<i&&(i=o));if(u){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,r){return a.f[r](e,t),t}),[]))},a.u=function(e){return{7418:"settings-apps-view",8351:"settings-users"}[e]+"-"+e+".js?v="+{7418:"a56ccd56a31c241e4c7d",8351:"6b9e360c7903d202d10c"}[e]},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="nextcloud:",a.l=function(e,t,n,i){if(r[e])r[e].push(t);else{var u,s;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var p=c[d];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==o+n){u=p;break}}u||(s=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",o+n),u.src=e),r[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((function(e){return e(n)})),t)return t(n)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),s&&document.head.appendChild(u)}},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=8562,function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){a.b=document.baseURI||self.location.href;var e={8562:0};a.f.j=function(t,r){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((function(r,o){n=e[t]=[r,o]}));r.push(n[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,(function(r){if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}}),"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,o,i=r[0],u=r[1],s=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(n in u)a.o(u,n)&&(a.m[n]=u[n]);if(s)var d=s(a)}for(t&&t(r);c<i.length;c++)o=i[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),a.nc=void 0;var s=a.O(void 0,[7874],(function(){return a(12949)}));s=a.O(s)}();
+//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=1b4bb70b5382b186d260 \ No newline at end of file
diff --git a/dist/settings-vue-settings-apps-users-management.js.map b/dist/settings-vue-settings-apps-users-management.js.map
index e36616026ca..16eeca5451b 100644
--- a/dist/settings-vue-settings-apps-users-management.js.map
+++ b/dist/settings-vue-settings-apps-users-management.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=886b4e229c7d8dfa9798","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack://nextcloud/./apps/settings/src/App.vue?4d15","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright 2022, Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @author Julia Kirschenheuter <julia.kirschenheuter@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 { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n})\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('router-view')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/dist/index.css'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { APPS_SECTION_ENUM } from './constants/AppsConstants.js'\nimport store from './store/index.js'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\nconst baseTitle = document.title\nconst router = new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Active users')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: (to) => {\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'admin') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Admins')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'disabled') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Disabled users')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn decodeURIComponent(to.params.selectedGroup)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: async (to) => {\n\t\t\t\t\t\t\tif (to.name === 'apps') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (APPS_SECTION_ENUM[to.params.category]) {\n\t\t\t\t\t\t\t\treturn APPS_SECTION_ENUM[to.params.category]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait store.dispatch('getCategories')\n\t\t\t\t\t\t\tconst category = store.getters.getCategoryById(to.params.category)\n\t\t\t\t\t\t\tif (category.displayName) {\n\t\t\t\t\t\t\t\treturn category.displayName\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\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n\nrouter.afterEach(async (to) => {\n\tconst metaTitle = await to.meta.title?.(to)\n\tif (metaTitle) {\n\t\tdocument.title = `${metaTitle} - ${baseTitle}`\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\n\nexport default router\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"7418\":\"fc224c568df173958cf1\",\"8351\":\"6b9e360c7903d202d10c\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__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__(12949); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","APPS_SECTION_ENUM","Object","freeze","enabled","t","disabled","updates","featured","name","beforeMount","_c","this","_self","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","renameGroup","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","user","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","disabledGroup","forEach","userGroup","logger","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","message","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","Vue","loading","stopLoading","generateUrl","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","loadingList","getUpdateCount","getCategoryById","selectedCategoryId","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","Users","Apps","Router","baseTitle","document","title","router","mode","base","linkActiveClass","routes","path","component","props","children","to","selectedGroup","decodeURIComponent","store","afterEach","metaTitle","VTooltip","defaultHtml","sync","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=1b4bb70b5382b186d260","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack://nextcloud/./apps/settings/src/App.vue?4d15","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright 2022, Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @author Julia Kirschenheuter <julia.kirschenheuter@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 { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n})\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('router-view')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/dist/index.css'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { APPS_SECTION_ENUM } from './constants/AppsConstants.js'\nimport store from './store/index.js'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\nconst baseTitle = document.title\nconst router = new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Active users')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: (to) => {\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'admin') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Admins')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'disabled') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Disabled users')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn decodeURIComponent(to.params.selectedGroup)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: async (to) => {\n\t\t\t\t\t\t\tif (to.name === 'apps') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (APPS_SECTION_ENUM[to.params.category]) {\n\t\t\t\t\t\t\t\treturn APPS_SECTION_ENUM[to.params.category]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait store.dispatch('getCategories')\n\t\t\t\t\t\t\tconst category = store.getters.getCategoryById(to.params.category)\n\t\t\t\t\t\t\tif (category.displayName) {\n\t\t\t\t\t\t\t\treturn category.displayName\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\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n\nrouter.afterEach(async (to) => {\n\tconst metaTitle = await to.meta.title?.(to)\n\tif (metaTitle) {\n\t\tdocument.title = `${metaTitle} - ${baseTitle}`\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\n\nexport default router\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"7418\":\"a56ccd56a31c241e4c7d\",\"8351\":\"6b9e360c7903d202d10c\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__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__(12949); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","APPS_SECTION_ENUM","Object","freeze","enabled","t","disabled","updates","featured","name","beforeMount","_c","this","_self","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","renameGroup","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","user","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","disabledGroup","forEach","userGroup","logger","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","message","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","Vue","loading","stopLoading","generateUrl","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","loadingList","getUpdateCount","getCategoryById","selectedCategoryId","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","Users","Apps","Router","baseTitle","document","title","router","mode","base","linkActiveClass","routes","path","component","props","children","to","selectedGroup","decodeURIComponent","store","afterEach","metaTitle","VTooltip","defaultHtml","sync","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index 69b9071e34b..b04846e2756 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -57,6 +57,7 @@ OC.L10N.register(
"Invalid image" : "Imagem inválida",
"Avatar image is not square" : "A imagem do avatar não é quadrada",
"View profile" : "Visualizar perfil",
+ "Local time: %s" : "Hora local: %s",
"today" : "hoje",
"tomorrow" : "amanhã",
"yesterday" : "ontem",
@@ -101,6 +102,8 @@ OC.L10N.register(
"Users" : "Usuários",
"Email" : "E-mail",
"Mail %s" : "E-Mail %s",
+ "Fediverse" : "Fediverse",
+ "View %s on the fediverse" : "Ver %s no fediverse",
"Phone" : "Fone",
"Call %s" : "Chamar %s",
"Twitter" : "Twitter",
@@ -152,6 +155,7 @@ 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 was not created because the user limit has been reached. Check your notifications to learn more." : "O usuário não foi criado porque o limite de usuários foi atingido. Confira suas notificações para saber mais.",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Segunda-feira",
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index dab51898f26..4c1e39643c7 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -55,6 +55,7 @@
"Invalid image" : "Imagem inválida",
"Avatar image is not square" : "A imagem do avatar não é quadrada",
"View profile" : "Visualizar perfil",
+ "Local time: %s" : "Hora local: %s",
"today" : "hoje",
"tomorrow" : "amanhã",
"yesterday" : "ontem",
@@ -99,6 +100,8 @@
"Users" : "Usuários",
"Email" : "E-mail",
"Mail %s" : "E-Mail %s",
+ "Fediverse" : "Fediverse",
+ "View %s on the fediverse" : "Ver %s no fediverse",
"Phone" : "Fone",
"Call %s" : "Chamar %s",
"Twitter" : "Twitter",
@@ -150,6 +153,7 @@
"%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 was not created because the user limit has been reached. Check your notifications to learn more." : "O usuário não foi criado porque o limite de usuários foi atingido. Confira suas notificações para saber mais.",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Segunda-feira",
diff --git a/resources/config/ca-bundle.crt b/resources/config/ca-bundle.crt
index 0c69f9fc75e..2ae7b6cb21b 100644
--- a/resources/config/ca-bundle.crt
+++ b/resources/config/ca-bundle.crt
@@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
-## Certificate data from Mozilla as of: Tue Oct 11 03:12:05 2022 GMT
+## Certificate data from Mozilla as of: Tue Jan 10 04:12:06 2023 GMT
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@@ -14,7 +14,7 @@
## Just configure this file as the SSLCACertificateFile.
##
## Conversion done with mk-ca-bundle.pl version 1.29.
-## SHA256: 3ff8bd209b5f2e739b9f2b96eacb694a774114685b02978257824f37ff528f71
+## SHA256: 90c470e705b4b5f36f09684dc50e2b79c8b86989a848b62cd1a7bd6460ee65f6
##
@@ -489,29 +489,6 @@ IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
-----END CERTIFICATE-----
-Network Solutions Certificate Authority
-=======================================
------BEGIN CERTIFICATE-----
-MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
-EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
-IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
-MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
-MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
-jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
-aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
-crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
-/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
-AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
-BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
-bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
-A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
-4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
-GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
-wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
-ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
------END CERTIFICATE-----
-
COMODO ECC Certification Authority
==================================
-----BEGIN CERTIFICATE-----
@@ -1654,36 +1631,6 @@ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
-----END CERTIFICATE-----
-Staat der Nederlanden EV Root CA
-================================
------BEGIN CERTIFICATE-----
-MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE
-CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
-RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M
-MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl
-cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk
-SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW
-O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r
-0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8
-Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV
-XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr
-08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV
-0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd
-74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx
-fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa
-ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
-eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu
-c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq
-5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN
-b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN
-f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi
-5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4
-WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK
-DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy
-eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
------END CERTIFICATE-----
-
IdenTrust Commercial Root CA 1
==============================
-----BEGIN CERTIFICATE-----
@@ -2135,87 +2082,6 @@ F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ
aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g==
-----END CERTIFICATE-----
-TrustCor RootCert CA-1
-======================
------BEGIN CERTIFICATE-----
-MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP
-MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
-U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
-dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx
-MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu
-YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe
-VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy
-dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq
-jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4
-pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0
-JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h
-gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw
-/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j
-BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5
-mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf
-ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C
-qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P
-3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk=
------END CERTIFICATE-----
-
-TrustCor RootCert CA-2
-======================
------BEGIN CERTIFICATE-----
-MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w
-DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT
-eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0
-eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy
-MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h
-bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
-cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0
-IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb
-ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk
-RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1
-oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb
-XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1
-/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q
-jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP
-eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg
-rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh
-8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU
-2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD
-VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h
-Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp
-kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv
-2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3
-S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw
-PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv
-DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU
-RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE
-xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX
-RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ
------END CERTIFICATE-----
-
-TrustCor ECA-1
-==============
------BEGIN CERTIFICATE-----
-MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP
-MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
-U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
-dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw
-N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5
-MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y
-IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR
-MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23
-xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc
-p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+
-fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj
-YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL
-f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
-AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u
-/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F
-hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs
-J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC
-jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g==
------END CERTIFICATE-----
-
SSL.com Root Certification Authority RSA
========================================
-----BEGIN CERTIFICATE-----