Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.codecov.yml2
-rw-r--r--README.md4
-rw-r--r--apps/dav/l10n/cs.js1
-rw-r--r--apps/dav/l10n/cs.json1
-rw-r--r--apps/dav/l10n/de_DE.js1
-rw-r--r--apps/dav/l10n/de_DE.json1
-rw-r--r--apps/dav/l10n/hu.js1
-rw-r--r--apps/dav/l10n/hu.json1
-rw-r--r--apps/dav/l10n/pl.js1
-rw-r--r--apps/dav/l10n/pl.json1
-rw-r--r--apps/dav/l10n/pt_BR.js1
-rw-r--r--apps/dav/l10n/pt_BR.json1
-rw-r--r--apps/dav/l10n/ru.js24
-rw-r--r--apps/dav/l10n/ru.json24
-rw-r--r--apps/dav/l10n/tr.js1
-rw-r--r--apps/dav/l10n/tr.json1
-rw-r--r--apps/dav/l10n/zh_HK.js1
-rw-r--r--apps/dav/l10n/zh_HK.json1
-rw-r--r--apps/dav/l10n/zh_TW.js1
-rw-r--r--apps/dav/l10n/zh_TW.json1
-rw-r--r--apps/files/js/breadcrumb.js2
-rw-r--r--apps/files/js/filelist.js10
-rw-r--r--apps/files/js/files.js4
-rw-r--r--apps/files/l10n/bg.js2
-rw-r--r--apps/files/l10n/bg.json2
-rw-r--r--apps/files/l10n/cs.js2
-rw-r--r--apps/files/l10n/cs.json2
-rw-r--r--apps/files/l10n/de_DE.js2
-rw-r--r--apps/files/l10n/de_DE.json2
-rw-r--r--apps/files/l10n/es.js2
-rw-r--r--apps/files/l10n/es.json2
-rw-r--r--apps/files/l10n/eu.js2
-rw-r--r--apps/files/l10n/eu.json2
-rw-r--r--apps/files/l10n/fr.js2
-rw-r--r--apps/files/l10n/fr.json2
-rw-r--r--apps/files/l10n/hu.js2
-rw-r--r--apps/files/l10n/hu.json2
-rw-r--r--apps/files/l10n/it.js2
-rw-r--r--apps/files/l10n/it.json2
-rw-r--r--apps/files/l10n/ja.js2
-rw-r--r--apps/files/l10n/ja.json2
-rw-r--r--apps/files/l10n/pl.js2
-rw-r--r--apps/files/l10n/pl.json2
-rw-r--r--apps/files/l10n/pt_BR.js2
-rw-r--r--apps/files/l10n/pt_BR.json2
-rw-r--r--apps/files/l10n/ru.js2
-rw-r--r--apps/files/l10n/ru.json2
-rw-r--r--apps/files/l10n/sk.js2
-rw-r--r--apps/files/l10n/sk.json2
-rw-r--r--apps/files/l10n/sl.js2
-rw-r--r--apps/files/l10n/sl.json2
-rw-r--r--apps/files/l10n/tr.js2
-rw-r--r--apps/files/l10n/tr.json2
-rw-r--r--apps/files/l10n/zh_CN.js2
-rw-r--r--apps/files/l10n/zh_CN.json2
-rw-r--r--apps/files/l10n/zh_HK.js2
-rw-r--r--apps/files/l10n/zh_HK.json2
-rw-r--r--apps/files/l10n/zh_TW.js2
-rw-r--r--apps/files/l10n/zh_TW.json2
-rw-r--r--apps/files/lib/Command/Scan.php2
-rw-r--r--apps/files/templates/appnavigation.php2
-rw-r--r--apps/files_sharing/l10n/ar.js4
-rw-r--r--apps/files_sharing/l10n/ar.json4
-rw-r--r--apps/files_sharing/l10n/bg.js6
-rw-r--r--apps/files_sharing/l10n/bg.json6
-rw-r--r--apps/files_sharing/l10n/ca.js4
-rw-r--r--apps/files_sharing/l10n/ca.json4
-rw-r--r--apps/files_sharing/l10n/cs.js6
-rw-r--r--apps/files_sharing/l10n/cs.json6
-rw-r--r--apps/files_sharing/l10n/da.js4
-rw-r--r--apps/files_sharing/l10n/da.json4
-rw-r--r--apps/files_sharing/l10n/de.js4
-rw-r--r--apps/files_sharing/l10n/de.json4
-rw-r--r--apps/files_sharing/l10n/de_DE.js6
-rw-r--r--apps/files_sharing/l10n/de_DE.json6
-rw-r--r--apps/files_sharing/l10n/el.js4
-rw-r--r--apps/files_sharing/l10n/el.json4
-rw-r--r--apps/files_sharing/l10n/eo.js4
-rw-r--r--apps/files_sharing/l10n/eo.json4
-rw-r--r--apps/files_sharing/l10n/es.js6
-rw-r--r--apps/files_sharing/l10n/es.json6
-rw-r--r--apps/files_sharing/l10n/es_AR.js4
-rw-r--r--apps/files_sharing/l10n/es_AR.json4
-rw-r--r--apps/files_sharing/l10n/eu.js6
-rw-r--r--apps/files_sharing/l10n/eu.json6
-rw-r--r--apps/files_sharing/l10n/fa.js4
-rw-r--r--apps/files_sharing/l10n/fa.json4
-rw-r--r--apps/files_sharing/l10n/fi.js4
-rw-r--r--apps/files_sharing/l10n/fi.json4
-rw-r--r--apps/files_sharing/l10n/fr.js6
-rw-r--r--apps/files_sharing/l10n/fr.json6
-rw-r--r--apps/files_sharing/l10n/gl.js4
-rw-r--r--apps/files_sharing/l10n/gl.json4
-rw-r--r--apps/files_sharing/l10n/he.js4
-rw-r--r--apps/files_sharing/l10n/he.json4
-rw-r--r--apps/files_sharing/l10n/hr.js4
-rw-r--r--apps/files_sharing/l10n/hr.json4
-rw-r--r--apps/files_sharing/l10n/hu.js6
-rw-r--r--apps/files_sharing/l10n/hu.json6
-rw-r--r--apps/files_sharing/l10n/is.js4
-rw-r--r--apps/files_sharing/l10n/is.json4
-rw-r--r--apps/files_sharing/l10n/it.js6
-rw-r--r--apps/files_sharing/l10n/it.json6
-rw-r--r--apps/files_sharing/l10n/ja.js6
-rw-r--r--apps/files_sharing/l10n/ja.json6
-rw-r--r--apps/files_sharing/l10n/ko.js4
-rw-r--r--apps/files_sharing/l10n/ko.json4
-rw-r--r--apps/files_sharing/l10n/lt_LT.js4
-rw-r--r--apps/files_sharing/l10n/lt_LT.json4
-rw-r--r--apps/files_sharing/l10n/lv.js4
-rw-r--r--apps/files_sharing/l10n/lv.json4
-rw-r--r--apps/files_sharing/l10n/mk.js4
-rw-r--r--apps/files_sharing/l10n/mk.json4
-rw-r--r--apps/files_sharing/l10n/nb.js4
-rw-r--r--apps/files_sharing/l10n/nb.json4
-rw-r--r--apps/files_sharing/l10n/nl.js4
-rw-r--r--apps/files_sharing/l10n/nl.json4
-rw-r--r--apps/files_sharing/l10n/pl.js6
-rw-r--r--apps/files_sharing/l10n/pl.json6
-rw-r--r--apps/files_sharing/l10n/pt_BR.js6
-rw-r--r--apps/files_sharing/l10n/pt_BR.json6
-rw-r--r--apps/files_sharing/l10n/ru.js6
-rw-r--r--apps/files_sharing/l10n/ru.json6
-rw-r--r--apps/files_sharing/l10n/sc.js4
-rw-r--r--apps/files_sharing/l10n/sc.json4
-rw-r--r--apps/files_sharing/l10n/sk.js6
-rw-r--r--apps/files_sharing/l10n/sk.json6
-rw-r--r--apps/files_sharing/l10n/sl.js6
-rw-r--r--apps/files_sharing/l10n/sl.json6
-rw-r--r--apps/files_sharing/l10n/sr.js4
-rw-r--r--apps/files_sharing/l10n/sr.json4
-rw-r--r--apps/files_sharing/l10n/sv.js4
-rw-r--r--apps/files_sharing/l10n/sv.json4
-rw-r--r--apps/files_sharing/l10n/tr.js6
-rw-r--r--apps/files_sharing/l10n/tr.json6
-rw-r--r--apps/files_sharing/l10n/zh_CN.js6
-rw-r--r--apps/files_sharing/l10n/zh_CN.json6
-rw-r--r--apps/files_sharing/l10n/zh_HK.js6
-rw-r--r--apps/files_sharing/l10n/zh_HK.json6
-rw-r--r--apps/files_sharing/l10n/zh_TW.js6
-rw-r--r--apps/files_sharing/l10n/zh_TW.json6
-rw-r--r--apps/files_sharing/lib/ExpireSharesJob.php2
-rw-r--r--apps/files_sharing/src/views/SharingTab.vue30
-rw-r--r--apps/files_trashbin/l10n/bg.js3
-rw-r--r--apps/files_trashbin/l10n/bg.json3
-rw-r--r--apps/files_trashbin/l10n/ca.js3
-rw-r--r--apps/files_trashbin/l10n/ca.json3
-rw-r--r--apps/files_trashbin/l10n/cs.js3
-rw-r--r--apps/files_trashbin/l10n/cs.json3
-rw-r--r--apps/files_trashbin/l10n/de.js3
-rw-r--r--apps/files_trashbin/l10n/de.json3
-rw-r--r--apps/files_trashbin/l10n/de_DE.js3
-rw-r--r--apps/files_trashbin/l10n/de_DE.json3
-rw-r--r--apps/files_trashbin/l10n/es.js3
-rw-r--r--apps/files_trashbin/l10n/es.json3
-rw-r--r--apps/files_trashbin/l10n/eu.js3
-rw-r--r--apps/files_trashbin/l10n/eu.json3
-rw-r--r--apps/files_trashbin/l10n/fi.js3
-rw-r--r--apps/files_trashbin/l10n/fi.json3
-rw-r--r--apps/files_trashbin/l10n/fr.js3
-rw-r--r--apps/files_trashbin/l10n/fr.json3
-rw-r--r--apps/files_trashbin/l10n/gl.js3
-rw-r--r--apps/files_trashbin/l10n/gl.json3
-rw-r--r--apps/files_trashbin/l10n/hu.js3
-rw-r--r--apps/files_trashbin/l10n/hu.json3
-rw-r--r--apps/files_trashbin/l10n/it.js3
-rw-r--r--apps/files_trashbin/l10n/it.json3
-rw-r--r--apps/files_trashbin/l10n/ja.js3
-rw-r--r--apps/files_trashbin/l10n/ja.json3
-rw-r--r--apps/files_trashbin/l10n/nb.js3
-rw-r--r--apps/files_trashbin/l10n/nb.json3
-rw-r--r--apps/files_trashbin/l10n/pl.js3
-rw-r--r--apps/files_trashbin/l10n/pl.json3
-rw-r--r--apps/files_trashbin/l10n/pt_BR.js3
-rw-r--r--apps/files_trashbin/l10n/pt_BR.json3
-rw-r--r--apps/files_trashbin/l10n/sk.js3
-rw-r--r--apps/files_trashbin/l10n/sk.json3
-rw-r--r--apps/files_trashbin/l10n/tr.js3
-rw-r--r--apps/files_trashbin/l10n/tr.json3
-rw-r--r--apps/files_trashbin/l10n/zh_HK.js3
-rw-r--r--apps/files_trashbin/l10n/zh_HK.json3
-rw-r--r--apps/files_trashbin/l10n/zh_TW.js3
-rw-r--r--apps/files_trashbin/l10n/zh_TW.json3
-rw-r--r--apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php2
-rw-r--r--apps/provisioning_api/lib/Controller/UsersController.php4
-rw-r--r--apps/provisioning_api/tests/Controller/UsersControllerTest.php3
-rw-r--r--apps/settings/js/federationsettingsview.js3
-rw-r--r--apps/settings/l10n/ru.js35
-rw-r--r--apps/settings/l10n/ru.json35
-rw-r--r--apps/settings/src/components/PersonalInfo/EmailSection/Email.vue1
-rw-r--r--apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue11
-rw-r--r--apps/updatenotification/lib/ResetTokenBackgroundJob.php7
-rw-r--r--apps/updatenotification/tests/ResetTokenBackgroundJobTest.php32
-rw-r--r--apps/weather_status/l10n/fr.js12
-rw-r--r--apps/weather_status/l10n/fr.json12
-rw-r--r--build/integration/composer.json2
-rwxr-xr-xbuild/update-apps.sh8
-rwxr-xr-xbuild/update.sh6
-rw-r--r--core/Command/SystemTag/ListCommand.php6
-rw-r--r--core/l10n/ru.js2
-rw-r--r--core/l10n/ru.json2
-rw-r--r--dist/files_sharing-files_sharing_tab.js4
-rw-r--r--dist/files_sharing-files_sharing_tab.js.map2
-rw-r--r--dist/settings-vue-settings-personal-info.js4
-rw-r--r--dist/settings-vue-settings-personal-info.js.map2
-rw-r--r--lib/l10n/ru.js2
-rw-r--r--lib/l10n/ru.json2
-rw-r--r--lib/private/AppFramework/Bootstrap/Coordinator.php2
-rw-r--r--lib/private/AppFramework/Bootstrap/RegistrationContext.php4
-rw-r--r--lib/private/Dashboard/Manager.php31
-rw-r--r--lib/private/Encryption/HookManager.php38
-rw-r--r--lib/private/Log.php34
-rw-r--r--lib/private/Log/LogDetails.php4
-rw-r--r--lib/private/Preview/Generator.php2
-rw-r--r--lib/private/User/Database.php4
-rw-r--r--lib/public/Dashboard/IManager.php2
-rwxr-xr-xtests/acceptance/run-local.sh2
-rw-r--r--tests/lib/Log/FileTest.php30
-rw-r--r--tests/lib/LoggerTest.php33
219 files changed, 738 insertions, 353 deletions
diff --git a/.codecov.yml b/.codecov.yml
index 0514262113e..2a48968e147 100644
--- a/.codecov.yml
+++ b/.codecov.yml
@@ -1,5 +1,5 @@
codecov:
- branch: master
+ branch: stable24
ci:
- drone.nextcloud.com
- !scrutinizer-ci.com
diff --git a/README.md b/README.md
index f955bdb10f3..424f1a39d35 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Nextcloud Server ☁
-[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
-[![codecov](https://codecov.io/gh/nextcloud/server/branch/master/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=stable24)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=stable24)
+[![codecov](https://codecov.io/gh/nextcloud/server/branch/stable24/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/209/badge)](https://bestpractices.coreinfrastructure.org/projects/209)
**A safe home for all your data.**
diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js
index 94ec16a08a1..f15065305a6 100644
--- a/apps/dav/l10n/cs.js
+++ b/apps/dav/l10n/cs.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"Friday" : "pátek",
"Saturday" : "sobota",
"Sunday" : "neděle",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "V době, kdy není k dispozici, automaticky nastavit stav uživatele jako „Nerušit“ a ztlumit tak veškerá upozornění pro něho.",
"Save" : "Uložit",
"Failed to load availability" : "Nepodařilo se načíst dostupnost",
"Saved availability" : "Uložena dostupnost",
diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json
index e711cae9d70..91635a5353f 100644
--- a/apps/dav/l10n/cs.json
+++ b/apps/dav/l10n/cs.json
@@ -157,6 +157,7 @@
"Friday" : "pátek",
"Saturday" : "sobota",
"Sunday" : "neděle",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "V době, kdy není k dispozici, automaticky nastavit stav uživatele jako „Nerušit“ a ztlumit tak veškerá upozornění pro něho.",
"Save" : "Uložit",
"Failed to load availability" : "Nepodařilo se načíst dostupnost",
"Saved availability" : "Uložena dostupnost",
diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js
index 01d9a3bee6b..2a39b390d40 100644
--- a/apps/dav/l10n/de_DE.js
+++ b/apps/dav/l10n/de_DE.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"Friday" : "Freitag",
"Saturday" : "Samstag",
"Sunday" : "Sonntag",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setzen Sie den Benutzerstatus wenn Sie nicht erreichbar sind automatisch auf „Nicht stören“, um alle Benachrichtigungen stumm zu schalten.",
"Save" : "Speichern",
"Failed to load availability" : "Laden der Verfügbarkeit fehlgeschlagen",
"Saved availability" : "Verfügbarkeit gespeichert",
diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json
index 77b5cdf374a..c264ef62fde 100644
--- a/apps/dav/l10n/de_DE.json
+++ b/apps/dav/l10n/de_DE.json
@@ -157,6 +157,7 @@
"Friday" : "Freitag",
"Saturday" : "Samstag",
"Sunday" : "Sonntag",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setzen Sie den Benutzerstatus wenn Sie nicht erreichbar sind automatisch auf „Nicht stören“, um alle Benachrichtigungen stumm zu schalten.",
"Save" : "Speichern",
"Failed to load availability" : "Laden der Verfügbarkeit fehlgeschlagen",
"Saved availability" : "Verfügbarkeit gespeichert",
diff --git a/apps/dav/l10n/hu.js b/apps/dav/l10n/hu.js
index bf3de7884cb..df447038dd8 100644
--- a/apps/dav/l10n/hu.js
+++ b/apps/dav/l10n/hu.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"Friday" : "Péntek",
"Saturday" : "Szombat",
"Sunday" : "Vasárnap",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Az elérhetőségi időn túl, a felhasználói állapot automatikus beállítása „Ne zavarjanak” módba az összes értesítés némításához.",
"Save" : "Mentés",
"Failed to load availability" : "Az elérhetőség betöltése sikertelen",
"Saved availability" : "Elérhetőség mentve",
diff --git a/apps/dav/l10n/hu.json b/apps/dav/l10n/hu.json
index 07b3c53b1c3..7b4b1e63c4e 100644
--- a/apps/dav/l10n/hu.json
+++ b/apps/dav/l10n/hu.json
@@ -157,6 +157,7 @@
"Friday" : "Péntek",
"Saturday" : "Szombat",
"Sunday" : "Vasárnap",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Az elérhetőségi időn túl, a felhasználói állapot automatikus beállítása „Ne zavarjanak” módba az összes értesítés némításához.",
"Save" : "Mentés",
"Failed to load availability" : "Az elérhetőség betöltése sikertelen",
"Saved availability" : "Elérhetőség mentve",
diff --git a/apps/dav/l10n/pl.js b/apps/dav/l10n/pl.js
index e119ea59d7b..4a6e63a27d6 100644
--- a/apps/dav/l10n/pl.js
+++ b/apps/dav/l10n/pl.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"Friday" : "Piątek",
"Saturday" : "Sobota",
"Sunday" : "Niedziela",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatycznie ustaw status użytkownika na \"Nie przeszkadzać\" poza dostępnością, aby wyciszyć wszystkie powiadomienia.",
"Save" : "Zapisz",
"Failed to load availability" : "Nie udało się wczytać dostępności",
"Saved availability" : "Zapisana dostępność",
diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json
index a739cbaaef4..ec85fe58081 100644
--- a/apps/dav/l10n/pl.json
+++ b/apps/dav/l10n/pl.json
@@ -157,6 +157,7 @@
"Friday" : "Piątek",
"Saturday" : "Sobota",
"Sunday" : "Niedziela",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatycznie ustaw status użytkownika na \"Nie przeszkadzać\" poza dostępnością, aby wyciszyć wszystkie powiadomienia.",
"Save" : "Zapisz",
"Failed to load availability" : "Nie udało się wczytać dostępności",
"Saved availability" : "Zapisana dostępność",
diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js
index a28a23a147e..4136835a80a 100644
--- a/apps/dav/l10n/pt_BR.js
+++ b/apps/dav/l10n/pt_BR.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"Friday" : "Sexta-feira",
"Saturday" : "Sábado ",
"Sunday" : "Domingo",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Defina automaticamente o status do usuário como \"Não perturbe\" fora de disponibilidade para silenciar todas as notificações.",
"Save" : "Salvar",
"Failed to load availability" : "Falha ao carregar a disponibilidade",
"Saved availability" : "Disponibilidade salva",
diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json
index 71161f3f56d..792d5bf3573 100644
--- a/apps/dav/l10n/pt_BR.json
+++ b/apps/dav/l10n/pt_BR.json
@@ -157,6 +157,7 @@
"Friday" : "Sexta-feira",
"Saturday" : "Sábado ",
"Sunday" : "Domingo",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Defina automaticamente o status do usuário como \"Não perturbe\" fora de disponibilidade para silenciar todas as notificações.",
"Save" : "Salvar",
"Failed to load availability" : "Falha ao carregar a disponibilidade",
"Saved availability" : "Disponibilidade salva",
diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js
index 80367d469bd..188f950d4b3 100644
--- a/apps/dav/l10n/ru.js
+++ b/apps/dav/l10n/ru.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Календарь",
+ "To-dos" : "Задачи",
"Personal" : "Личное",
"{actor} created calendar {calendar}" : "{actor} создал(а) календарь «{calendar}»",
"You created calendar {calendar}" : "Вы создали календарь «{calendar}»",
@@ -31,12 +32,27 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Вы удалили событие «{event}» из календаря «{calendar}»",
"{actor} updated event {event} in calendar {calendar}" : "{actor} обновил(а) событие «{event}» в календаре «{calendar}»",
"You updated event {event} in calendar {calendar}" : "Вы обновили событие «{event}» в календаре «{calendar}»",
+ "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} переместил(а) событие «{event}» из календаря «{sourceCalendar}» в календарь «{targetCalendar}»",
+ "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Вы переместили событие «{event}» из календаря «{sourceCalendar}» в календарь «{targetCalendar}»",
"{actor} restored event {event} of calendar {calendar}" : "{actor} восстановил(а) событие {event} в календаре {calendar}",
"You restored event {event} of calendar {calendar}" : "Вы восстановили событие {event} в календаре {calendar}",
"Busy" : "Занято",
+ "{actor} created to-do {todo} in list {calendar}" : "{actor} создал(а) задачу «{todo}» в списке «{calendar}»",
+ "You created to-do {todo} in list {calendar}" : "Вы создали задачу «{todo}» в списке «{calendar}»",
+ "{actor} deleted to-do {todo} from list {calendar}" : "{actor} удалил(а) задачу «{todo}» из списка «{calendar}»",
+ "You deleted to-do {todo} from list {calendar}" : "Вы удалили задачу «{todo}» из списка «{calendar}»",
+ "{actor} updated to-do {todo} in list {calendar}" : "{actor} обновил(а) задачу «{todo}» из списка «{calendar}»",
+ "You updated to-do {todo} in list {calendar}" : "Вы обновили задачу «{todo}» из списка «{calendar}»",
+ "{actor} solved to-do {todo} in list {calendar}" : "{actor} завершил(а) задачу «{todo}» из списка «{calendar}»",
+ "You solved to-do {todo} in list {calendar}" : "Вы завершили задачу «{todo}» из списка «{calendar}»",
+ "{actor} reopened to-do {todo} in list {calendar}" : "{actor} повторно(а) открыл задачу «{todo}» из списка «{calendar}»",
+ "You reopened to-do {todo} in list {calendar}" : "Вы повторно открыли задачу «{todo}» из списка «{calendar}»",
+ "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} переместил(а) задачу «{todo}» из календаря «{sourceCalendar}» в календарь «{targetCalendar}»",
+ "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Вы переместили задачу «{todo}» из календаря «{sourceCalendar}» в календарь «{targetCalendar}»",
"Calendar, contacts and tasks" : "Календарь, контакты и задачи",
"A <strong>calendar</strong> was modified" : "Изменения <strong>календаря</strong> ",
"A calendar <strong>event</strong> was modified" : "В календаре изменено <strong>событие</strong>",
+ "A calendar <strong>to-do</strong> was modified" : "В календаре изменена <strong>задача</strong> ",
"Contact birthdays" : "Дни рождения контакта",
"Death of %s" : "Смерть %s",
"Calendar:" : "Календарь:",
@@ -98,6 +114,12 @@ OC.L10N.register(
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Изменение <strong>контакта</strong> или <strong>адресной книги</strong>",
"File is not updatable: %1$s" : "Файл не подлежит обновлению: %1$s",
"Could not write file contents" : "Не удалось записать содержимое файла",
+ "Could not open file" : "Не удалось открыть файл",
+ "Encryption not ready: %1$s" : "Подсистема шифрования не готова: %1$s",
+ "Failed to open file: %1$s" : "Не удалось открыть файл: %1$s",
+ "Invalid chunk name" : "Недопустимое имя сегмента",
+ "Failed to write file contents: %1$s" : "Не удалось записать содержимое файла: %1$s",
+ "File not found: %1$s" : "Файл не найден: %1$s",
"System is in maintenance mode." : "Сервер находится в режиме обслуживания.",
"Upgrade needed" : "Требуется обновление",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Ваш %s должен быть настроен на использование протокола HTTPS, чтобы можно было использовать CalDAV и CardDAV на iOS/macOS.",
@@ -109,6 +131,7 @@ OC.L10N.register(
"Completed on %s" : "Завершено %s",
"Due on %s by %s" : "До %s %s",
"Due on %s" : "До %s",
+ "Calendars including events, details and attendees" : "Календари, в том числе события, подробные сведения и участники",
"Contacts and groups" : "Контакты и группы",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "точка подключения WebDAV",
@@ -127,6 +150,7 @@ OC.L10N.register(
"Saturday" : "Суббота",
"Sunday" : "Воскресенье",
"Save" : "Сохранить",
+ "Failed to load availability" : "Не удалось получить сведения о доступности",
"Calendar server" : "Сервер календаря",
"Send invitations to attendees" : "Отправить приглашения",
"Automatically generate a birthday calendar" : "Создавать календарь дней рождения автоматически",
diff --git a/apps/dav/l10n/ru.json b/apps/dav/l10n/ru.json
index 7104a421e71..49c34dd6bc8 100644
--- a/apps/dav/l10n/ru.json
+++ b/apps/dav/l10n/ru.json
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "Календарь",
+ "To-dos" : "Задачи",
"Personal" : "Личное",
"{actor} created calendar {calendar}" : "{actor} создал(а) календарь «{calendar}»",
"You created calendar {calendar}" : "Вы создали календарь «{calendar}»",
@@ -29,12 +30,27 @@
"You deleted event {event} from calendar {calendar}" : "Вы удалили событие «{event}» из календаря «{calendar}»",
"{actor} updated event {event} in calendar {calendar}" : "{actor} обновил(а) событие «{event}» в календаре «{calendar}»",
"You updated event {event} in calendar {calendar}" : "Вы обновили событие «{event}» в календаре «{calendar}»",
+ "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} переместил(а) событие «{event}» из календаря «{sourceCalendar}» в календарь «{targetCalendar}»",
+ "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Вы переместили событие «{event}» из календаря «{sourceCalendar}» в календарь «{targetCalendar}»",
"{actor} restored event {event} of calendar {calendar}" : "{actor} восстановил(а) событие {event} в календаре {calendar}",
"You restored event {event} of calendar {calendar}" : "Вы восстановили событие {event} в календаре {calendar}",
"Busy" : "Занято",
+ "{actor} created to-do {todo} in list {calendar}" : "{actor} создал(а) задачу «{todo}» в списке «{calendar}»",
+ "You created to-do {todo} in list {calendar}" : "Вы создали задачу «{todo}» в списке «{calendar}»",
+ "{actor} deleted to-do {todo} from list {calendar}" : "{actor} удалил(а) задачу «{todo}» из списка «{calendar}»",
+ "You deleted to-do {todo} from list {calendar}" : "Вы удалили задачу «{todo}» из списка «{calendar}»",
+ "{actor} updated to-do {todo} in list {calendar}" : "{actor} обновил(а) задачу «{todo}» из списка «{calendar}»",
+ "You updated to-do {todo} in list {calendar}" : "Вы обновили задачу «{todo}» из списка «{calendar}»",
+ "{actor} solved to-do {todo} in list {calendar}" : "{actor} завершил(а) задачу «{todo}» из списка «{calendar}»",
+ "You solved to-do {todo} in list {calendar}" : "Вы завершили задачу «{todo}» из списка «{calendar}»",
+ "{actor} reopened to-do {todo} in list {calendar}" : "{actor} повторно(а) открыл задачу «{todo}» из списка «{calendar}»",
+ "You reopened to-do {todo} in list {calendar}" : "Вы повторно открыли задачу «{todo}» из списка «{calendar}»",
+ "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} переместил(а) задачу «{todo}» из календаря «{sourceCalendar}» в календарь «{targetCalendar}»",
+ "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Вы переместили задачу «{todo}» из календаря «{sourceCalendar}» в календарь «{targetCalendar}»",
"Calendar, contacts and tasks" : "Календарь, контакты и задачи",
"A <strong>calendar</strong> was modified" : "Изменения <strong>календаря</strong> ",
"A calendar <strong>event</strong> was modified" : "В календаре изменено <strong>событие</strong>",
+ "A calendar <strong>to-do</strong> was modified" : "В календаре изменена <strong>задача</strong> ",
"Contact birthdays" : "Дни рождения контакта",
"Death of %s" : "Смерть %s",
"Calendar:" : "Календарь:",
@@ -96,6 +112,12 @@
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Изменение <strong>контакта</strong> или <strong>адресной книги</strong>",
"File is not updatable: %1$s" : "Файл не подлежит обновлению: %1$s",
"Could not write file contents" : "Не удалось записать содержимое файла",
+ "Could not open file" : "Не удалось открыть файл",
+ "Encryption not ready: %1$s" : "Подсистема шифрования не готова: %1$s",
+ "Failed to open file: %1$s" : "Не удалось открыть файл: %1$s",
+ "Invalid chunk name" : "Недопустимое имя сегмента",
+ "Failed to write file contents: %1$s" : "Не удалось записать содержимое файла: %1$s",
+ "File not found: %1$s" : "Файл не найден: %1$s",
"System is in maintenance mode." : "Сервер находится в режиме обслуживания.",
"Upgrade needed" : "Требуется обновление",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Ваш %s должен быть настроен на использование протокола HTTPS, чтобы можно было использовать CalDAV и CardDAV на iOS/macOS.",
@@ -107,6 +129,7 @@
"Completed on %s" : "Завершено %s",
"Due on %s by %s" : "До %s %s",
"Due on %s" : "До %s",
+ "Calendars including events, details and attendees" : "Календари, в том числе события, подробные сведения и участники",
"Contacts and groups" : "Контакты и группы",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "точка подключения WebDAV",
@@ -125,6 +148,7 @@
"Saturday" : "Суббота",
"Sunday" : "Воскресенье",
"Save" : "Сохранить",
+ "Failed to load availability" : "Не удалось получить сведения о доступности",
"Calendar server" : "Сервер календаря",
"Send invitations to attendees" : "Отправить приглашения",
"Automatically generate a birthday calendar" : "Создавать календарь дней рождения автоматически",
diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js
index c589928a5c3..a7c71588df5 100644
--- a/apps/dav/l10n/tr.js
+++ b/apps/dav/l10n/tr.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"Friday" : "Cuma",
"Saturday" : "Cumartesi",
"Sunday" : "Pazar",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Tüm bildirimleri sessize almak için, uygunluk durumu dışında kullanıcı durumu otomatik olarak \"Rahatsız etmeyin\" olarak ayarlanır.",
"Save" : "Kaydet",
"Failed to load availability" : "Uygunluk yüklenemedi",
"Saved availability" : "Uygunluk kaydedildi",
diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json
index 4319f616101..042418f79ec 100644
--- a/apps/dav/l10n/tr.json
+++ b/apps/dav/l10n/tr.json
@@ -157,6 +157,7 @@
"Friday" : "Cuma",
"Saturday" : "Cumartesi",
"Sunday" : "Pazar",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Tüm bildirimleri sessize almak için, uygunluk durumu dışında kullanıcı durumu otomatik olarak \"Rahatsız etmeyin\" olarak ayarlanır.",
"Save" : "Kaydet",
"Failed to load availability" : "Uygunluk yüklenemedi",
"Saved availability" : "Uygunluk kaydedildi",
diff --git a/apps/dav/l10n/zh_HK.js b/apps/dav/l10n/zh_HK.js
index 6f52575901d..4dc2fbd420e 100644
--- a/apps/dav/l10n/zh_HK.js
+++ b/apps/dav/l10n/zh_HK.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"Friday" : "星期五",
"Saturday" : "星期六",
"Sunday" : "星期日",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "當系統可得性時,自動將用戶狀態設置為“請勿打擾”以關閉所有音頻通知。",
"Save" : "儲存",
"Failed to load availability" : "加載可得性失敗",
"Saved availability" : "已保存可得性",
diff --git a/apps/dav/l10n/zh_HK.json b/apps/dav/l10n/zh_HK.json
index 0e6e6062f55..6608f6e268e 100644
--- a/apps/dav/l10n/zh_HK.json
+++ b/apps/dav/l10n/zh_HK.json
@@ -157,6 +157,7 @@
"Friday" : "星期五",
"Saturday" : "星期六",
"Sunday" : "星期日",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "當系統可得性時,自動將用戶狀態設置為“請勿打擾”以關閉所有音頻通知。",
"Save" : "儲存",
"Failed to load availability" : "加載可得性失敗",
"Saved availability" : "已保存可得性",
diff --git a/apps/dav/l10n/zh_TW.js b/apps/dav/l10n/zh_TW.js
index 8db0590f231..166c6edb4c3 100644
--- a/apps/dav/l10n/zh_TW.js
+++ b/apps/dav/l10n/zh_TW.js
@@ -159,6 +159,7 @@ OC.L10N.register(
"Friday" : "週五",
"Saturday" : "週六",
"Sunday" : "週日",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "在忙碌時,自動將使用者狀態設定為「請勿打擾」以靜音所有通知。",
"Save" : "儲存",
"Failed to load availability" : "載入可用性失敗",
"Saved availability" : "已儲存可用性",
diff --git a/apps/dav/l10n/zh_TW.json b/apps/dav/l10n/zh_TW.json
index 6cfa0996d76..15c068b3350 100644
--- a/apps/dav/l10n/zh_TW.json
+++ b/apps/dav/l10n/zh_TW.json
@@ -157,6 +157,7 @@
"Friday" : "週五",
"Saturday" : "週六",
"Sunday" : "週日",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "在忙碌時,自動將使用者狀態設定為「請勿打擾」以靜音所有通知。",
"Save" : "儲存",
"Failed to load availability" : "載入可用性失敗",
"Saved availability" : "已儲存可用性",
diff --git a/apps/files/js/breadcrumb.js b/apps/files/js/breadcrumb.js
index 383d3debd09..5386d6ee4a4 100644
--- a/apps/files/js/breadcrumb.js
+++ b/apps/files/js/breadcrumb.js
@@ -220,7 +220,7 @@
});
// root part
crumbs.push({
- name: t('core', 'Home'),
+ name: t('files', 'Home'),
dir: '/',
class: 'crumbhome',
linkclass: rootIcon || 'icon-home'
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 69322273a11..3530cb66301 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -2630,7 +2630,10 @@
self.showFileBusyState($tr, false);
});
};
- return this.reportOperationProgress(fileNames, moveFileFunction, callback);
+ return this.reportOperationProgress(fileNames, moveFileFunction, callback).then(function() {
+ self.updateStorageStatistics();
+ self.updateStorageQuotas();
+ });
},
_reflect: function (promise){
@@ -2810,7 +2813,10 @@
}
});
};
- return this.reportOperationProgress(fileNames, copyFileFunction, callback);
+ return this.reportOperationProgress(fileNames, copyFileFunction, callback).then(function() {
+ self.updateStorageStatistics();
+ self.updateStorageQuotas();
+ });
},
/**
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 8645719f82b..5f00ce2cb22 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -105,9 +105,9 @@
if (response.data.quota > 0) {
$('#quota').attr('data-original-title', Math.floor(response.data.used/response.data.quota*1000)/10 + '%');
$('#quota progress').val(response.data.usedSpacePercent);
- $('#quotatext').text(t('files', '{used} of {quota} used', {used: humanUsed, quota: humanQuota}));
+ $('#quotatext').html(t('files', '{used} of {quota} used', {used: humanUsed, quota: humanQuota}));
} else {
- $('#quotatext').text(t('files', '{used} used', {used: humanUsed}));
+ $('#quotatext').html(t('files', '{used} used', {used: humanUsed}));
}
if (response.data.usedSpacePercent > 80) {
$('#quota progress').addClass('warn');
diff --git a/apps/files/l10n/bg.js b/apps/files/l10n/bg.js
index 34a4f25c5c5..52ad05355ed 100644
--- a/apps/files/l10n/bg.js
+++ b/apps/files/l10n/bg.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Информацията за файла \"{file}\" не може да бъде заредена",
"Files" : "Файлове",
"Details" : "Подробности",
+ "Show list view" : "Показване с изглед на списък",
+ "Show grid view" : "Показване в решетъчен изглед",
"Please select tag(s) to add to the selection" : "Моля, изберете етикет(и), който да добавите към селекцията",
"Apply tag(s) to selection" : "Прилагане на етикет(и) към селекцията",
"Select directory \"{dirName}\"" : "Избор на директория „{dirName}“",
diff --git a/apps/files/l10n/bg.json b/apps/files/l10n/bg.json
index 7a3d5d9ab88..a9a610d211d 100644
--- a/apps/files/l10n/bg.json
+++ b/apps/files/l10n/bg.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "Информацията за файла \"{file}\" не може да бъде заредена",
"Files" : "Файлове",
"Details" : "Подробности",
+ "Show list view" : "Показване с изглед на списък",
+ "Show grid view" : "Показване в решетъчен изглед",
"Please select tag(s) to add to the selection" : "Моля, изберете етикет(и), който да добавите към селекцията",
"Apply tag(s) to selection" : "Прилагане на етикет(и) към селекцията",
"Select directory \"{dirName}\"" : "Избор на директория „{dirName}“",
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index 45a917aafa2..241d1ed037a 100644
--- a/apps/files/l10n/cs.js
+++ b/apps/files/l10n/cs.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Nepodařilo se načíst informace pro soubor „{file}“",
"Files" : "Soubory",
"Details" : "Podrobnosti",
+ "Show list view" : "Zobrazit v seznamu",
+ "Show grid view" : "Zobrazit v mřížce",
"Please select tag(s) to add to the selection" : "Vyberte štítky které přidat do výběru",
"Apply tag(s) to selection" : "Uplatnit štítky na výběr",
"Select directory \"{dirName}\"" : "Vybrat složku „{dirName}“",
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index eee6d58c09e..f3a94892b64 100644
--- a/apps/files/l10n/cs.json
+++ b/apps/files/l10n/cs.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "Nepodařilo se načíst informace pro soubor „{file}“",
"Files" : "Soubory",
"Details" : "Podrobnosti",
+ "Show list view" : "Zobrazit v seznamu",
+ "Show grid view" : "Zobrazit v mřížce",
"Please select tag(s) to add to the selection" : "Vyberte štítky které přidat do výběru",
"Apply tag(s) to selection" : "Uplatnit štítky na výběr",
"Select directory \"{dirName}\"" : "Vybrat složku „{dirName}“",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index b6e73aa44df..fb69bf55508 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Die Informationen zur Datei \"{file}\" konnten nicht geladen werden",
"Files" : "Dateien",
"Details" : "Details",
+ "Show list view" : "Listenansicht anzeigen",
+ "Show grid view" : "Rasteransicht anzeigen",
"Please select tag(s) to add to the selection" : "Bitte wählen Sie das/die Schlagwort(e) aus, das/die Sie zur Auswahl hinzufügen möchten",
"Apply tag(s) to selection" : "Schlagwort(e) auf die Auswahl anwenden",
"Select directory \"{dirName}\"" : "Ordner \"{dirName}\" auswählen",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index b812b78f60f..dbba63fcdca 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "Die Informationen zur Datei \"{file}\" konnten nicht geladen werden",
"Files" : "Dateien",
"Details" : "Details",
+ "Show list view" : "Listenansicht anzeigen",
+ "Show grid view" : "Rasteransicht anzeigen",
"Please select tag(s) to add to the selection" : "Bitte wählen Sie das/die Schlagwort(e) aus, das/die Sie zur Auswahl hinzufügen möchten",
"Apply tag(s) to selection" : "Schlagwort(e) auf die Auswahl anwenden",
"Select directory \"{dirName}\"" : "Ordner \"{dirName}\" auswählen",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index da77b7682d0..c248471672b 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "No se ha podido cargar información para el archivo \"{file}\"",
"Files" : "Archivos",
"Details" : "Detalles",
+ "Show list view" : "Mostrar vista de lista",
+ "Show grid view" : "Mostrar vista de cuadrícula",
"Please select tag(s) to add to the selection" : "Seleccione la(s) etiqueta(s) para añadir a la selección",
"Apply tag(s) to selection" : "Aplicar etiqueta(s) a la selección",
"Select directory \"{dirName}\"" : "Seleccione el directorio \"{dirName}\"",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index a1b3e3eb1a2..45605d6e2c2 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "No se ha podido cargar información para el archivo \"{file}\"",
"Files" : "Archivos",
"Details" : "Detalles",
+ "Show list view" : "Mostrar vista de lista",
+ "Show grid view" : "Mostrar vista de cuadrícula",
"Please select tag(s) to add to the selection" : "Seleccione la(s) etiqueta(s) para añadir a la selección",
"Apply tag(s) to selection" : "Aplicar etiqueta(s) a la selección",
"Select directory \"{dirName}\"" : "Seleccione el directorio \"{dirName}\"",
diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js
index 4066cb09eae..e2cd8ace9f0 100644
--- a/apps/files/l10n/eu.js
+++ b/apps/files/l10n/eu.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Ezin izan da \"{file}\" fitxategiaren informazioa kargatu",
"Files" : "Fitxategiak",
"Details" : "Xehetasunak",
+ "Show list view" : "Erakutsi zerrenda ikuspegia",
+ "Show grid view" : "Erakutsi sareta-ikuspegia",
"Please select tag(s) to add to the selection" : "Hautatu etiketa(k) hautapenera gehitzeko",
"Apply tag(s) to selection" : "Aplikatu etiketa(k) hautapenari",
"Select directory \"{dirName}\"" : "Hautatu \"{dirName}\" direktorioa",
diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json
index 7e72df1fbc9..d516d381caf 100644
--- a/apps/files/l10n/eu.json
+++ b/apps/files/l10n/eu.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "Ezin izan da \"{file}\" fitxategiaren informazioa kargatu",
"Files" : "Fitxategiak",
"Details" : "Xehetasunak",
+ "Show list view" : "Erakutsi zerrenda ikuspegia",
+ "Show grid view" : "Erakutsi sareta-ikuspegia",
"Please select tag(s) to add to the selection" : "Hautatu etiketa(k) hautapenera gehitzeko",
"Apply tag(s) to selection" : "Aplikatu etiketa(k) hautapenari",
"Select directory \"{dirName}\"" : "Hautatu \"{dirName}\" direktorioa",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index b3f245d0fe9..81c1ed0050e 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -39,6 +39,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Impossible de charger les informations du fichier \"{file}\"",
"Files" : "Fichiers",
"Details" : "Détails",
+ "Show list view" : "Afficher la vue en liste",
+ "Show grid view" : "Afficher la vue en grille",
"Please select tag(s) to add to the selection" : "Veuillez sélectionner la ou les étiquette(s) à ajouter à la sélection",
"Apply tag(s) to selection" : "Appliquer la ou les étiquette(s) à la sélection",
"Select directory \"{dirName}\"" : "Sélectionner le dossier \"{dirName}\"",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index 842358667d7..e5a1a9c1089 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -37,6 +37,8 @@
"Could not load info for file \"{file}\"" : "Impossible de charger les informations du fichier \"{file}\"",
"Files" : "Fichiers",
"Details" : "Détails",
+ "Show list view" : "Afficher la vue en liste",
+ "Show grid view" : "Afficher la vue en grille",
"Please select tag(s) to add to the selection" : "Veuillez sélectionner la ou les étiquette(s) à ajouter à la sélection",
"Apply tag(s) to selection" : "Appliquer la ou les étiquette(s) à la sélection",
"Select directory \"{dirName}\"" : "Sélectionner le dossier \"{dirName}\"",
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index cafba163897..deaeb413b38 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Nem sikerült betölteni a(z) „{file}” fájl információit",
"Files" : "Fájlok",
"Details" : "Részletek",
+ "Show list view" : "Listanézet megjelenítése",
+ "Show grid view" : "Rácsnézet megjelenítése",
"Please select tag(s) to add to the selection" : "Válassza ki a kijelöléshez adandó címkéket",
"Apply tag(s) to selection" : "Címkék alkalmazása a kijelölésre",
"Select directory \"{dirName}\"" : "A(z) „{dirName}” könyvtár kiválasztása",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index 9a75032e206..c6a52035307 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "Nem sikerült betölteni a(z) „{file}” fájl információit",
"Files" : "Fájlok",
"Details" : "Részletek",
+ "Show list view" : "Listanézet megjelenítése",
+ "Show grid view" : "Rácsnézet megjelenítése",
"Please select tag(s) to add to the selection" : "Válassza ki a kijelöléshez adandó címkéket",
"Apply tag(s) to selection" : "Címkék alkalmazása a kijelölésre",
"Select directory \"{dirName}\"" : "A(z) „{dirName}” könyvtár kiválasztása",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 68d45e9aa66..cd76cf38f57 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -39,6 +39,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Impossibile caricare le informazioni per il file \"{file}\"",
"Files" : "File",
"Details" : "Dettagli",
+ "Show list view" : "Commuta la vista a lista",
+ "Show grid view" : "Commuta la vista a griglia",
"Please select tag(s) to add to the selection" : "Seleziona un'etichetta(e) da aggiungere alla selezione",
"Apply tag(s) to selection" : "Applica etichetta(e) alla selezione",
"Select directory \"{dirName}\"" : "Seleziona cartella \"{dirName}\"",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index a17ebfec115..f08c3c6af34 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -37,6 +37,8 @@
"Could not load info for file \"{file}\"" : "Impossibile caricare le informazioni per il file \"{file}\"",
"Files" : "File",
"Details" : "Dettagli",
+ "Show list view" : "Commuta la vista a lista",
+ "Show grid view" : "Commuta la vista a griglia",
"Please select tag(s) to add to the selection" : "Seleziona un'etichetta(e) da aggiungere alla selezione",
"Apply tag(s) to selection" : "Applica etichetta(e) alla selezione",
"Select directory \"{dirName}\"" : "Seleziona cartella \"{dirName}\"",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index 094b558dcf5..c773caa90c5 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -39,6 +39,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "\"{file}\" ファイルの情報を読み込めませんでした",
"Files" : "ファイル",
"Details" : "詳細",
+ "Show list view" : "リストビューで表示",
+ "Show grid view" : "グリッドビューで表示",
"Please select tag(s) to add to the selection" : "選択項目に付与するタグを選択してください",
"Apply tag(s) to selection" : "選択項目にタグを適用",
"Select directory \"{dirName}\"" : "ディレクトリを選択: \"{dirName}\"",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index 53304d0949f..e9596a2ee45 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -37,6 +37,8 @@
"Could not load info for file \"{file}\"" : "\"{file}\" ファイルの情報を読み込めませんでした",
"Files" : "ファイル",
"Details" : "詳細",
+ "Show list view" : "リストビューで表示",
+ "Show grid view" : "グリッドビューで表示",
"Please select tag(s) to add to the selection" : "選択項目に付与するタグを選択してください",
"Apply tag(s) to selection" : "選択項目にタグを適用",
"Select directory \"{dirName}\"" : "ディレクトリを選択: \"{dirName}\"",
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 01ff55fcc82..58959b5c4ba 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Nie można załadować informacji o pliku \"{file}\"",
"Files" : "Pliki",
"Details" : "Szczegóły",
+ "Show list view" : "Pokaż widok listy",
+ "Show grid view" : "Pokaż widok siatki",
"Please select tag(s) to add to the selection" : "Wybierz etykietę(y) do dodania dla zaznaczenia",
"Apply tag(s) to selection" : "Zastosuj etykietę(y) dla zaznaczenia",
"Select directory \"{dirName}\"" : "Wybierz katalog \"{dirName}\"",
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index dced96ba16e..e7ad2986c40 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "Nie można załadować informacji o pliku \"{file}\"",
"Files" : "Pliki",
"Details" : "Szczegóły",
+ "Show list view" : "Pokaż widok listy",
+ "Show grid view" : "Pokaż widok siatki",
"Please select tag(s) to add to the selection" : "Wybierz etykietę(y) do dodania dla zaznaczenia",
"Apply tag(s) to selection" : "Zastosuj etykietę(y) dla zaznaczenia",
"Select directory \"{dirName}\"" : "Wybierz katalog \"{dirName}\"",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 46220216c25..f26181b87fe 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Não foi possível carregar informações para o arquivo \"{file}\" ",
"Files" : "Arquivos",
"Details" : "Detalhes",
+ "Show list view" : "Mostrar visualização em lista",
+ "Show grid view" : "Mostrar visualização em grade",
"Please select tag(s) to add to the selection" : "Selecione a(s) etiquetas(s) para adicionar à seleção ",
"Apply tag(s) to selection" : "Aplicar as etiqueta(s) a seleção",
"Select directory \"{dirName}\"" : "Selecione o diretório \"{dirName}\"",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index cf3dca37127..4fc792ca0b5 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "Não foi possível carregar informações para o arquivo \"{file}\" ",
"Files" : "Arquivos",
"Details" : "Detalhes",
+ "Show list view" : "Mostrar visualização em lista",
+ "Show grid view" : "Mostrar visualização em grade",
"Please select tag(s) to add to the selection" : "Selecione a(s) etiquetas(s) para adicionar à seleção ",
"Apply tag(s) to selection" : "Aplicar as etiqueta(s) a seleção",
"Select directory \"{dirName}\"" : "Selecione o diretório \"{dirName}\"",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 35714033e54..72dc9402790 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -39,6 +39,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Не удаётся загрузить информацию для файла \"{file}\"",
"Files" : "Файлы",
"Details" : "Подробно",
+ "Show list view" : "Просмотр списком",
+ "Show grid view" : "Просмотр сеткой",
"Please select tag(s) to add to the selection" : "Выберите метки для назначения выбранным объектам",
"Apply tag(s) to selection" : "Назначить метки выбранным объектам",
"Pending" : "Ожидается",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 7ab269c742d..11635b80549 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -37,6 +37,8 @@
"Could not load info for file \"{file}\"" : "Не удаётся загрузить информацию для файла \"{file}\"",
"Files" : "Файлы",
"Details" : "Подробно",
+ "Show list view" : "Просмотр списком",
+ "Show grid view" : "Просмотр сеткой",
"Please select tag(s) to add to the selection" : "Выберите метки для назначения выбранным объектам",
"Apply tag(s) to selection" : "Назначить метки выбранным объектам",
"Pending" : "Ожидается",
diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js
index d506c1f63e0..7ef8cbd25c8 100644
--- a/apps/files/l10n/sk.js
+++ b/apps/files/l10n/sk.js
@@ -39,6 +39,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Nebolo možné načítať informácie súboru \"{file}\"",
"Files" : "Súbory",
"Details" : "Podrobnosti",
+ "Show list view" : "Zobraziť ako zoznam",
+ "Show grid view" : "Zobraziť v mriežke",
"Please select tag(s) to add to the selection" : "Prosím vyberte štítok(štítky) pre pridanie do výberu",
"Apply tag(s) to selection" : "Aplikovať štítok(štítky) do výberu",
"Select directory \"{dirName}\"" : "Vybrať priečinok \"{dirName}\"",
diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json
index adb1e591efd..edb8b51287b 100644
--- a/apps/files/l10n/sk.json
+++ b/apps/files/l10n/sk.json
@@ -37,6 +37,8 @@
"Could not load info for file \"{file}\"" : "Nebolo možné načítať informácie súboru \"{file}\"",
"Files" : "Súbory",
"Details" : "Podrobnosti",
+ "Show list view" : "Zobraziť ako zoznam",
+ "Show grid view" : "Zobraziť v mriežke",
"Please select tag(s) to add to the selection" : "Prosím vyberte štítok(štítky) pre pridanie do výberu",
"Apply tag(s) to selection" : "Aplikovať štítok(štítky) do výberu",
"Select directory \"{dirName}\"" : "Vybrať priečinok \"{dirName}\"",
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index fdc7f055a62..abc18ce2572 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -39,6 +39,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "Ni mogoče naložiti podatkov za datoteko »{file}«.",
"Files" : "Datoteke",
"Details" : "Podrobnosti",
+ "Show list view" : "Pokaži seznamski pogled",
+ "Show grid view" : "Pokaži mrežni pogled",
"Pending" : "Na čakanju ...",
"Unable to determine date" : "Ni mogoče določiti datuma",
"This operation is forbidden" : "To dejanje ni dovoljeno!",
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index a4ecaed7bfe..bb1ed1fa1b3 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -37,6 +37,8 @@
"Could not load info for file \"{file}\"" : "Ni mogoče naložiti podatkov za datoteko »{file}«.",
"Files" : "Datoteke",
"Details" : "Podrobnosti",
+ "Show list view" : "Pokaži seznamski pogled",
+ "Show grid view" : "Pokaži mrežni pogled",
"Pending" : "Na čakanju ...",
"Unable to determine date" : "Ni mogoče določiti datuma",
"This operation is forbidden" : "To dejanje ni dovoljeno!",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index 93791a1e446..886a2cbaecf 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "\"{file}\" dosyasının bilgileri alınamadı",
"Files" : "Dosyalar",
"Details" : "Ayrıntılar",
+ "Show list view" : "Liste görünümüne geç",
+ "Show grid view" : "Tablo görünümüne geç",
"Please select tag(s) to add to the selection" : "Seçime eklemek için etiketleri seçin",
"Apply tag(s) to selection" : "Etiketleri seçime uygula",
"Select directory \"{dirName}\"" : "\"{dirName}\" klasörünü seçin",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index ca172214030..514ce907b0e 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "\"{file}\" dosyasının bilgileri alınamadı",
"Files" : "Dosyalar",
"Details" : "Ayrıntılar",
+ "Show list view" : "Liste görünümüne geç",
+ "Show grid view" : "Tablo görünümüne geç",
"Please select tag(s) to add to the selection" : "Seçime eklemek için etiketleri seçin",
"Apply tag(s) to selection" : "Etiketleri seçime uygula",
"Select directory \"{dirName}\"" : "\"{dirName}\" klasörünü seçin",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 44f8965054f..72be5f9f4d1 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -39,6 +39,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息",
"Files" : "文件",
"Details" : "详细信息",
+ "Show list view" : "显示列表视图",
+ "Show grid view" : "显示网格视图",
"Please select tag(s) to add to the selection" : "请选择要添加到所选项目的标签",
"Apply tag(s) to selection" : "将标签应用到所选项目",
"Pending" : "等待",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 7c2f8a04b1c..abdf0fc15cd 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -37,6 +37,8 @@
"Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息",
"Files" : "文件",
"Details" : "详细信息",
+ "Show list view" : "显示列表视图",
+ "Show grid view" : "显示网格视图",
"Please select tag(s) to add to the selection" : "请选择要添加到所选项目的标签",
"Apply tag(s) to selection" : "将标签应用到所选项目",
"Pending" : "等待",
diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js
index 811491f4513..572351152c3 100644
--- a/apps/files/l10n/zh_HK.js
+++ b/apps/files/l10n/zh_HK.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "無法讀取 \"{file}\" 的詳細資料",
"Files" : "檔案",
"Details" : "詳細資料",
+ "Show list view" : "顯示清單視圖",
+ "Show grid view" : "顯示網格視圖",
"Please select tag(s) to add to the selection" : "請選擇要添加到所選項目中的標籤",
"Apply tag(s) to selection" : "將標籤應用於所選項目",
"Select directory \"{dirName}\"" : "選擇目錄「{dirName}」",
diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json
index a2ec9fa8e82..f564ca5d8d8 100644
--- a/apps/files/l10n/zh_HK.json
+++ b/apps/files/l10n/zh_HK.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "無法讀取 \"{file}\" 的詳細資料",
"Files" : "檔案",
"Details" : "詳細資料",
+ "Show list view" : "顯示清單視圖",
+ "Show grid view" : "顯示網格視圖",
"Please select tag(s) to add to the selection" : "請選擇要添加到所選項目中的標籤",
"Apply tag(s) to selection" : "將標籤應用於所選項目",
"Select directory \"{dirName}\"" : "選擇目錄「{dirName}」",
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index e8b7cf9a046..68a39b2b44e 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -40,6 +40,8 @@ OC.L10N.register(
"Could not load info for file \"{file}\"" : "無法讀取「{file}」的詳細資料",
"Files" : "檔案",
"Details" : "詳細資料",
+ "Show list view" : "顯示清單檢視",
+ "Show grid view" : "顯示網格檢視",
"Please select tag(s) to add to the selection" : "請選取要新增到選定項目的標籤",
"Apply tag(s) to selection" : "將標籤套用至選定項目",
"Select directory \"{dirName}\"" : "選取目錄「{dirName}」",
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index e9fb670cc42..71933d06d29 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -38,6 +38,8 @@
"Could not load info for file \"{file}\"" : "無法讀取「{file}」的詳細資料",
"Files" : "檔案",
"Details" : "詳細資料",
+ "Show list view" : "顯示清單檢視",
+ "Show grid view" : "顯示網格檢視",
"Please select tag(s) to add to the selection" : "請選取要新增到選定項目的標籤",
"Apply tag(s) to selection" : "將標籤套用至選定項目",
"Select directory \"{dirName}\"" : "選取目錄「{dirName}」",
diff --git a/apps/files/lib/Command/Scan.php b/apps/files/lib/Command/Scan.php
index 7b2ad199ba4..cfab4a42932 100644
--- a/apps/files/lib/Command/Scan.php
+++ b/apps/files/lib/Command/Scan.php
@@ -144,7 +144,7 @@ class Scan extends Base {
$scanner->scan($path, $recursive, $homeOnly ? [$this, 'filterHomeMount'] : null);
}
} catch (ForbiddenException $e) {
- $output->writeln("<error>Home storage for user $user not writable</error>");
+ $output->writeln("<error>Home storage for user $user not writable or 'files' subdirectory missing</error>");
$output->writeln('Make sure you\'re running the scan command only as the user the web server runs as');
} catch (InterruptedException $e) {
# exit the function if ctrl-c has been pressed
diff --git a/apps/files/templates/appnavigation.php b/apps/files/templates/appnavigation.php
index 0bfdc6f0b54..9aea68fef99 100644
--- a/apps/files/templates/appnavigation.php
+++ b/apps/files/templates/appnavigation.php
@@ -12,7 +12,7 @@
<?php if ($_['quota'] === \OCP\Files\FileInfo::SPACE_UNLIMITED): ?>
<li id="quota" class="pinned <?php p($pinned === 0 ? 'first-pinned ' : '') ?>">
<a href="#" class="icon-quota svg">
- <p><?php p($l->t('%s used', [$_['usage']])); ?></p>
+ <p id="quotatext"><?php p($l->t('%s used', [$_['usage']])); ?></p>
</a>
</li>
<?php else: ?>
diff --git a/apps/files_sharing/l10n/ar.js b/apps/files_sharing/l10n/ar.js
index efaa8ef4ef2..3a63b199fa9 100644
--- a/apps/files_sharing/l10n/ar.js
+++ b/apps/files_sharing/l10n/ar.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"sharing is disabled" : "المشاركة غير مفعلة",
"For more info, please ask the person who sent this link." : "لمزيد من المعلومات، يرجى سؤال الشخص الذي أرسل هذا الرابط",
"Share note" : "ملاحظة المشاركة",
- "Toggle grid view" : "تفعيل/تعطيل وضع القائمة",
"Upload files to %s" : "ارسل ملفات إلى %s",
"Note" : "ملاحظة",
"Select or drop files" : "اختر أو اسحب ملفات هنا",
@@ -234,6 +233,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "خطأ في معرف المشاركة، مشاركة غير موجودة",
"Wrong path, file/folder doesn't exist" : "مسار الملف/المجد غير موجود",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "مشاركة ارسال كلمة المرور من قبل التحدث Nextcloud فشلت بسبب عدم تفعيل خاصية التحدث.",
- "Sorry, this link doesn’t seem to work anymore." : "عذرا، يبدو أن هذا الرابط لم يعد يعمل."
+ "Sorry, this link doesn’t seem to work anymore." : "عذرا، يبدو أن هذا الرابط لم يعد يعمل.",
+ "Toggle grid view" : "تفعيل/تعطيل وضع القائمة"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/apps/files_sharing/l10n/ar.json b/apps/files_sharing/l10n/ar.json
index 1d6ffc6a85b..5ac9476cba2 100644
--- a/apps/files_sharing/l10n/ar.json
+++ b/apps/files_sharing/l10n/ar.json
@@ -221,7 +221,6 @@
"sharing is disabled" : "المشاركة غير مفعلة",
"For more info, please ask the person who sent this link." : "لمزيد من المعلومات، يرجى سؤال الشخص الذي أرسل هذا الرابط",
"Share note" : "ملاحظة المشاركة",
- "Toggle grid view" : "تفعيل/تعطيل وضع القائمة",
"Upload files to %s" : "ارسل ملفات إلى %s",
"Note" : "ملاحظة",
"Select or drop files" : "اختر أو اسحب ملفات هنا",
@@ -232,6 +231,7 @@
"Wrong share ID, share doesn't exist" : "خطأ في معرف المشاركة، مشاركة غير موجودة",
"Wrong path, file/folder doesn't exist" : "مسار الملف/المجد غير موجود",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "مشاركة ارسال كلمة المرور من قبل التحدث Nextcloud فشلت بسبب عدم تفعيل خاصية التحدث.",
- "Sorry, this link doesn’t seem to work anymore." : "عذرا، يبدو أن هذا الرابط لم يعد يعمل."
+ "Sorry, this link doesn’t seem to work anymore." : "عذرا، يبدو أن هذا الرابط لم يعد يعمل.",
+ "Toggle grid view" : "تفعيل/تعطيل وضع القائمة"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/bg.js b/apps/files_sharing/l10n/bg.js
index 3707e0cdc2f..eea722c7e1a 100644
--- a/apps/files_sharing/l10n/bg.js
+++ b/apps/files_sharing/l10n/bg.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "споделянето е изключено",
"For more info, please ask the person who sent this link." : "За допълнителна информация, моля питай човека, който е изпратил връзката.",
"Share note" : "Сподели бележка",
- "Toggle grid view" : "Превключи решетъчния изглед",
+ "Show list view" : "Показване с изглед на списък",
+ "Show grid view" : "Показване в решетъчен изглед",
"Upload files to %s" : "Качване на файлове към %s",
"Note" : "Бележка",
"Select or drop files" : "Изберете файл или преместете с мишката",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Грешен път, файл / папка не съществува",
"Cannot change permissions for public share links" : "Не могат да се променят права на връзки за публично споделяне",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Споделянето на изпращането на паролата от Nextcloud Talk не бе успешно, тъй като Nextcloud Talk не е активирано",
- "Sorry, this link doesn’t seem to work anymore." : "Връзката вече не е активна."
+ "Sorry, this link doesn’t seem to work anymore." : "Връзката вече не е активна.",
+ "Toggle grid view" : "Превключи решетъчния изглед"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/bg.json b/apps/files_sharing/l10n/bg.json
index 4759774d381..51a2c5e6ab1 100644
--- a/apps/files_sharing/l10n/bg.json
+++ b/apps/files_sharing/l10n/bg.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "споделянето е изключено",
"For more info, please ask the person who sent this link." : "За допълнителна информация, моля питай човека, който е изпратил връзката.",
"Share note" : "Сподели бележка",
- "Toggle grid view" : "Превключи решетъчния изглед",
+ "Show list view" : "Показване с изглед на списък",
+ "Show grid view" : "Показване в решетъчен изглед",
"Upload files to %s" : "Качване на файлове към %s",
"Note" : "Бележка",
"Select or drop files" : "Изберете файл или преместете с мишката",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Грешен път, файл / папка не съществува",
"Cannot change permissions for public share links" : "Не могат да се променят права на връзки за публично споделяне",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Споделянето на изпращането на паролата от Nextcloud Talk не бе успешно, тъй като Nextcloud Talk не е активирано",
- "Sorry, this link doesn’t seem to work anymore." : "Връзката вече не е активна."
+ "Sorry, this link doesn’t seem to work anymore." : "Връзката вече не е активна.",
+ "Toggle grid view" : "Превключи решетъчния изглед"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/ca.js b/apps/files_sharing/l10n/ca.js
index 8710b243b4f..ad562755205 100644
--- a/apps/files_sharing/l10n/ca.js
+++ b/apps/files_sharing/l10n/ca.js
@@ -222,7 +222,6 @@ OC.L10N.register(
"sharing is disabled" : "s'ha desactivat la compartició",
"For more info, please ask the person who sent this link." : "Per més informació contacteu amb qui us ha enviat l'enllaç.",
"Share note" : "Comparteix nota",
- "Toggle grid view" : "Commuta la vista de la graella",
"Upload files to %s" : "Carrega fitxers a %s",
"Note" : "Nota",
"Select or drop files" : "Selecciona o deixa anar els fitxers",
@@ -233,6 +232,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "L'identificador de la compartició és incorrecte, la compartició no existeix",
"Wrong path, file/folder doesn't exist" : "El camí és erroni, el fitxer o la carpeta no existeixen",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "No s’ha pogut compartir enviant la contrasenya per Nextcloud Talk perquè Nextcloud Talk no està activat",
- "Sorry, this link doesn’t seem to work anymore." : "Aquest enllaç sembla que no funciona."
+ "Sorry, this link doesn’t seem to work anymore." : "Aquest enllaç sembla que no funciona.",
+ "Toggle grid view" : "Commuta la vista de la graella"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/ca.json b/apps/files_sharing/l10n/ca.json
index 8867f34d525..f64449f3e69 100644
--- a/apps/files_sharing/l10n/ca.json
+++ b/apps/files_sharing/l10n/ca.json
@@ -220,7 +220,6 @@
"sharing is disabled" : "s'ha desactivat la compartició",
"For more info, please ask the person who sent this link." : "Per més informació contacteu amb qui us ha enviat l'enllaç.",
"Share note" : "Comparteix nota",
- "Toggle grid view" : "Commuta la vista de la graella",
"Upload files to %s" : "Carrega fitxers a %s",
"Note" : "Nota",
"Select or drop files" : "Selecciona o deixa anar els fitxers",
@@ -231,6 +230,7 @@
"Wrong share ID, share doesn't exist" : "L'identificador de la compartició és incorrecte, la compartició no existeix",
"Wrong path, file/folder doesn't exist" : "El camí és erroni, el fitxer o la carpeta no existeixen",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "No s’ha pogut compartir enviant la contrasenya per Nextcloud Talk perquè Nextcloud Talk no està activat",
- "Sorry, this link doesn’t seem to work anymore." : "Aquest enllaç sembla que no funciona."
+ "Sorry, this link doesn’t seem to work anymore." : "Aquest enllaç sembla que no funciona.",
+ "Toggle grid view" : "Commuta la vista de la graella"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js
index 7e44386305a..134d89e4299 100644
--- a/apps/files_sharing/l10n/cs.js
+++ b/apps/files_sharing/l10n/cs.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "sdílení je vypnuto",
"For more info, please ask the person who sent this link." : "Pokud potřebujete další podrobnosti, obraťte se na osobu, která vám tento odkaz zaslala.",
"Share note" : "Sdílet poznámku",
- "Toggle grid view" : "Vyp/zap. zobrazení v mřížce",
+ "Show list view" : "Zobrazit v seznamu",
+ "Show grid view" : "Zobrazit v mřížce",
"Upload files to %s" : "Nahrát soubory do %s",
"Note" : "Poznámka",
"Select or drop files" : "Vyberte nebo přetáhněte soubory",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Nesprávný popis umístění – soubor/složka neexistuje",
"Cannot change permissions for public share links" : "Nelze změnit oprávnění pro veřejně sdílené odkazy",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sdílení posláním hesla prostřednictvím Nextcloud Talk se nezdařilo protože Nextcloud Talk není zapnutý",
- "Sorry, this link doesn’t seem to work anymore." : "Je nám líto, ale tento odkaz už není funkční."
+ "Sorry, this link doesn’t seem to work anymore." : "Je nám líto, ale tento odkaz už není funkční.",
+ "Toggle grid view" : "Vyp/zap. zobrazení v mřížce"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json
index 27cd5bcc31e..1c0197ded7a 100644
--- a/apps/files_sharing/l10n/cs.json
+++ b/apps/files_sharing/l10n/cs.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "sdílení je vypnuto",
"For more info, please ask the person who sent this link." : "Pokud potřebujete další podrobnosti, obraťte se na osobu, která vám tento odkaz zaslala.",
"Share note" : "Sdílet poznámku",
- "Toggle grid view" : "Vyp/zap. zobrazení v mřížce",
+ "Show list view" : "Zobrazit v seznamu",
+ "Show grid view" : "Zobrazit v mřížce",
"Upload files to %s" : "Nahrát soubory do %s",
"Note" : "Poznámka",
"Select or drop files" : "Vyberte nebo přetáhněte soubory",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Nesprávný popis umístění – soubor/složka neexistuje",
"Cannot change permissions for public share links" : "Nelze změnit oprávnění pro veřejně sdílené odkazy",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sdílení posláním hesla prostřednictvím Nextcloud Talk se nezdařilo protože Nextcloud Talk není zapnutý",
- "Sorry, this link doesn’t seem to work anymore." : "Je nám líto, ale tento odkaz už není funkční."
+ "Sorry, this link doesn’t seem to work anymore." : "Je nám líto, ale tento odkaz už není funkční.",
+ "Toggle grid view" : "Vyp/zap. zobrazení v mřížce"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js
index 1fca2d39bce..7fb49f8a8f7 100644
--- a/apps/files_sharing/l10n/da.js
+++ b/apps/files_sharing/l10n/da.js
@@ -177,7 +177,6 @@ OC.L10N.register(
"sharing is disabled" : "deling er deaktiveret",
"For more info, please ask the person who sent this link." : "For yderligere information, kontakt venligst personen der sendte linket. ",
"Share note" : "Del note",
- "Toggle grid view" : "Vis som liste",
"Upload files to %s" : "Upload filer til %s",
"Note" : "Note",
"Select or drop files" : "Vælg eller slip filer",
@@ -185,6 +184,7 @@ OC.L10N.register(
"Add to your Nextcloud" : "Tilføj til din Nextcloud",
"Wrong share ID, share doesn't exist" : "Forkert DelingsID, deling findes ikke",
"Wrong path, file/folder doesn't exist" : "Forkert sti, fil/mappe findes ikke",
- "Sorry, this link doesn’t seem to work anymore." : "Desværre, dette link ser ikke ud til at fungerer længere."
+ "Sorry, this link doesn’t seem to work anymore." : "Desværre, dette link ser ikke ud til at fungerer længere.",
+ "Toggle grid view" : "Vis som liste"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json
index 350985a6de9..6997a3c361c 100644
--- a/apps/files_sharing/l10n/da.json
+++ b/apps/files_sharing/l10n/da.json
@@ -175,7 +175,6 @@
"sharing is disabled" : "deling er deaktiveret",
"For more info, please ask the person who sent this link." : "For yderligere information, kontakt venligst personen der sendte linket. ",
"Share note" : "Del note",
- "Toggle grid view" : "Vis som liste",
"Upload files to %s" : "Upload filer til %s",
"Note" : "Note",
"Select or drop files" : "Vælg eller slip filer",
@@ -183,6 +182,7 @@
"Add to your Nextcloud" : "Tilføj til din Nextcloud",
"Wrong share ID, share doesn't exist" : "Forkert DelingsID, deling findes ikke",
"Wrong path, file/folder doesn't exist" : "Forkert sti, fil/mappe findes ikke",
- "Sorry, this link doesn’t seem to work anymore." : "Desværre, dette link ser ikke ud til at fungerer længere."
+ "Sorry, this link doesn’t seem to work anymore." : "Desværre, dette link ser ikke ud til at fungerer længere.",
+ "Toggle grid view" : "Vis som liste"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index bd1d16a03ac..4e87275965f 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -241,7 +241,6 @@ OC.L10N.register(
"sharing is disabled" : "Teilen ist deaktiviert",
"For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende Dich bitte an die Person, die Dir diesen Link geschickt hat.",
"Share note" : "Notiz teilen",
- "Toggle grid view" : "Rasteransicht umschalten",
"Upload files to %s" : "Dateien für %s hochladen",
"Note" : "Notiz",
"Select or drop files" : "Dateien auswählen oder hierher ziehen",
@@ -253,6 +252,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Ordner existiert nicht",
"Cannot change permissions for public share links" : "Kann Berechtigungen für öffentlich freigegebene Links nicht ändern",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
- "Sorry, this link doesn’t seem to work anymore." : "Entschuldigung, dieser Link scheint nicht mehr zu funktionieren."
+ "Sorry, this link doesn’t seem to work anymore." : "Entschuldigung, dieser Link scheint nicht mehr zu funktionieren.",
+ "Toggle grid view" : "Rasteransicht umschalten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 40a608fb8c9..1fdf370367b 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -239,7 +239,6 @@
"sharing is disabled" : "Teilen ist deaktiviert",
"For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende Dich bitte an die Person, die Dir diesen Link geschickt hat.",
"Share note" : "Notiz teilen",
- "Toggle grid view" : "Rasteransicht umschalten",
"Upload files to %s" : "Dateien für %s hochladen",
"Note" : "Notiz",
"Select or drop files" : "Dateien auswählen oder hierher ziehen",
@@ -251,6 +250,7 @@
"Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Ordner existiert nicht",
"Cannot change permissions for public share links" : "Kann Berechtigungen für öffentlich freigegebene Links nicht ändern",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
- "Sorry, this link doesn’t seem to work anymore." : "Entschuldigung, dieser Link scheint nicht mehr zu funktionieren."
+ "Sorry, this link doesn’t seem to work anymore." : "Entschuldigung, dieser Link scheint nicht mehr zu funktionieren.",
+ "Toggle grid view" : "Rasteransicht umschalten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 030c2d67d0a..4930ecb0535 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "Teilen ist deaktiviert",
"For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wenden Sie sich bitte an die Person, die Ihnen diesen Link geschickt hat.",
"Share note" : "Notiz teilen",
- "Toggle grid view" : "Rasteransicht umschalten",
+ "Show list view" : "Listenansicht anzeigen",
+ "Show grid view" : "Rasteransicht anzeigen",
"Upload files to %s" : "Dateien für %s hochladen",
"Note" : "Notiz",
"Select or drop files" : "Dateien auswählen oder hierher ziehen",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Ordner existiert nicht",
"Cannot change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
- "Sorry, this link doesn’t seem to work anymore." : "Entschuldigung, dieser Link scheint nicht mehr zu funktionieren."
+ "Sorry, this link doesn’t seem to work anymore." : "Entschuldigung, dieser Link scheint nicht mehr zu funktionieren.",
+ "Toggle grid view" : "Rasteransicht umschalten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index c274a92a5cf..521bcf8465c 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "Teilen ist deaktiviert",
"For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wenden Sie sich bitte an die Person, die Ihnen diesen Link geschickt hat.",
"Share note" : "Notiz teilen",
- "Toggle grid view" : "Rasteransicht umschalten",
+ "Show list view" : "Listenansicht anzeigen",
+ "Show grid view" : "Rasteransicht anzeigen",
"Upload files to %s" : "Dateien für %s hochladen",
"Note" : "Notiz",
"Select or drop files" : "Dateien auswählen oder hierher ziehen",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Ordner existiert nicht",
"Cannot change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
- "Sorry, this link doesn’t seem to work anymore." : "Entschuldigung, dieser Link scheint nicht mehr zu funktionieren."
+ "Sorry, this link doesn’t seem to work anymore." : "Entschuldigung, dieser Link scheint nicht mehr zu funktionieren.",
+ "Toggle grid view" : "Rasteransicht umschalten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js
index aef67ff9c8d..550ce74d786 100644
--- a/apps/files_sharing/l10n/el.js
+++ b/apps/files_sharing/l10n/el.js
@@ -235,7 +235,6 @@ OC.L10N.register(
"sharing is disabled" : "ο διαμοιρασμός απενεργοποιήθηκε",
"For more info, please ask the person who sent this link." : "Για περισσότερες πληροφορίες, παρακαλούμε ρωτήστε το άτομο που σας έστειλε αυτόν τον σύνδεσμο.",
"Share note" : "Σημείωση κοινόχρηστου",
- "Toggle grid view" : "Εναλλαγή σε προβολή πλέγματος",
"Upload files to %s" : "Αποστολή αρχείων σε %s",
"Note" : "Σημείωση",
"Select or drop files" : "Επιλέξτε ή αποθέστε αρχεία",
@@ -247,6 +246,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Λάθος διαδρομή, αρχείο/φάκελος δεν υπάρχει",
"Cannot change permissions for public share links" : "Δεν είναι δυνατή η αλλαγή των δικαιωμάτων για συνδέσμους δημόσιας κοινής χρήσης",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Η αποστολή του κοινόχρηστου κωδικού πρόσβασης από το Nextcloud Talk απέτυχε επειδή δεν είναι ενεργοποιημένο το Nextcloud Talk",
- "Sorry, this link doesn’t seem to work anymore." : "Συγγνώμη, αυτός ο σύνδεσμος μοιάζει να μην ισχύει πια."
+ "Sorry, this link doesn’t seem to work anymore." : "Συγγνώμη, αυτός ο σύνδεσμος μοιάζει να μην ισχύει πια.",
+ "Toggle grid view" : "Εναλλαγή σε προβολή πλέγματος"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json
index 694f4ea8bde..83a0c4d0e68 100644
--- a/apps/files_sharing/l10n/el.json
+++ b/apps/files_sharing/l10n/el.json
@@ -233,7 +233,6 @@
"sharing is disabled" : "ο διαμοιρασμός απενεργοποιήθηκε",
"For more info, please ask the person who sent this link." : "Για περισσότερες πληροφορίες, παρακαλούμε ρωτήστε το άτομο που σας έστειλε αυτόν τον σύνδεσμο.",
"Share note" : "Σημείωση κοινόχρηστου",
- "Toggle grid view" : "Εναλλαγή σε προβολή πλέγματος",
"Upload files to %s" : "Αποστολή αρχείων σε %s",
"Note" : "Σημείωση",
"Select or drop files" : "Επιλέξτε ή αποθέστε αρχεία",
@@ -245,6 +244,7 @@
"Wrong path, file/folder doesn't exist" : "Λάθος διαδρομή, αρχείο/φάκελος δεν υπάρχει",
"Cannot change permissions for public share links" : "Δεν είναι δυνατή η αλλαγή των δικαιωμάτων για συνδέσμους δημόσιας κοινής χρήσης",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Η αποστολή του κοινόχρηστου κωδικού πρόσβασης από το Nextcloud Talk απέτυχε επειδή δεν είναι ενεργοποιημένο το Nextcloud Talk",
- "Sorry, this link doesn’t seem to work anymore." : "Συγγνώμη, αυτός ο σύνδεσμος μοιάζει να μην ισχύει πια."
+ "Sorry, this link doesn’t seem to work anymore." : "Συγγνώμη, αυτός ο σύνδεσμος μοιάζει να μην ισχύει πια.",
+ "Toggle grid view" : "Εναλλαγή σε προβολή πλέγματος"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/eo.js b/apps/files_sharing/l10n/eo.js
index 2c6264f5caa..949a821b544 100644
--- a/apps/files_sharing/l10n/eo.js
+++ b/apps/files_sharing/l10n/eo.js
@@ -193,7 +193,6 @@ OC.L10N.register(
"sharing is disabled" : "kunhavigo malkapablas",
"For more info, please ask the person who sent this link." : "Por plia informo, bonvolu peti al la persono, kiu sendis ĉi tiun ligilon.",
"Share note" : "Kunhavigo noton",
- "Toggle grid view" : "Baskuligi kradan vidon",
"Upload files to %s" : "Alŝuti dosierojn al %s",
"Note" : "Noto",
"Select or drop files" : "Elekti aŭ demeti dosierojn",
@@ -203,6 +202,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Neĝusta kunhava identigilo, kunhavo ne ekzistas",
"Wrong path, file/folder doesn't exist" : "Neĝusta vojo, dosiero aŭ dosierujo ne ekzistas",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Kunhavigo per sendado de la pasvorto per „Nextcloud Talk“ malsukcesis, ĉar Nextcloud Talk ne estas ebligita",
- "Sorry, this link doesn’t seem to work anymore." : "Pardonu, ĉi tiu ligilo ŝajne ne plu funkcias."
+ "Sorry, this link doesn’t seem to work anymore." : "Pardonu, ĉi tiu ligilo ŝajne ne plu funkcias.",
+ "Toggle grid view" : "Baskuligi kradan vidon"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/eo.json b/apps/files_sharing/l10n/eo.json
index d882f1450a8..d41d8c96512 100644
--- a/apps/files_sharing/l10n/eo.json
+++ b/apps/files_sharing/l10n/eo.json
@@ -191,7 +191,6 @@
"sharing is disabled" : "kunhavigo malkapablas",
"For more info, please ask the person who sent this link." : "Por plia informo, bonvolu peti al la persono, kiu sendis ĉi tiun ligilon.",
"Share note" : "Kunhavigo noton",
- "Toggle grid view" : "Baskuligi kradan vidon",
"Upload files to %s" : "Alŝuti dosierojn al %s",
"Note" : "Noto",
"Select or drop files" : "Elekti aŭ demeti dosierojn",
@@ -201,6 +200,7 @@
"Wrong share ID, share doesn't exist" : "Neĝusta kunhava identigilo, kunhavo ne ekzistas",
"Wrong path, file/folder doesn't exist" : "Neĝusta vojo, dosiero aŭ dosierujo ne ekzistas",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Kunhavigo per sendado de la pasvorto per „Nextcloud Talk“ malsukcesis, ĉar Nextcloud Talk ne estas ebligita",
- "Sorry, this link doesn’t seem to work anymore." : "Pardonu, ĉi tiu ligilo ŝajne ne plu funkcias."
+ "Sorry, this link doesn’t seem to work anymore." : "Pardonu, ĉi tiu ligilo ŝajne ne plu funkcias.",
+ "Toggle grid view" : "Baskuligi kradan vidon"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index 6685c8a5d42..eee40b0534d 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "compartir está desactivado",
"For more info, please ask the person who sent this link." : "Para más información, pregunte a la persona que le envió el enlace.",
"Share note" : "Compartir nota",
- "Toggle grid view" : "Alternar vista de cuadrícula",
+ "Show list view" : "Mostrar vista de lista",
+ "Show grid view" : "Mostrar vista de cuadrícula",
"Upload files to %s" : "Subir archivos a %s",
"Note" : "Nota",
"Select or drop files" : "Seleccione o arrastre y suelte archivos",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Ubicación incorrecta, el archivo/carpeta no existe",
"Cannot change permissions for public share links" : "No se puede cambiar los permisos para enlaces compartidos públicos",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir enviando la contraseña por Nextcloud Talk ha fallado porque Nextcloud Talk no está activado",
- "Sorry, this link doesn’t seem to work anymore." : "Vaya, este enlace parece que no volverá a funcionar."
+ "Sorry, this link doesn’t seem to work anymore." : "Vaya, este enlace parece que no volverá a funcionar.",
+ "Toggle grid view" : "Alternar vista de cuadrícula"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 4b490fd605a..af4958ce2ce 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "compartir está desactivado",
"For more info, please ask the person who sent this link." : "Para más información, pregunte a la persona que le envió el enlace.",
"Share note" : "Compartir nota",
- "Toggle grid view" : "Alternar vista de cuadrícula",
+ "Show list view" : "Mostrar vista de lista",
+ "Show grid view" : "Mostrar vista de cuadrícula",
"Upload files to %s" : "Subir archivos a %s",
"Note" : "Nota",
"Select or drop files" : "Seleccione o arrastre y suelte archivos",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Ubicación incorrecta, el archivo/carpeta no existe",
"Cannot change permissions for public share links" : "No se puede cambiar los permisos para enlaces compartidos públicos",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir enviando la contraseña por Nextcloud Talk ha fallado porque Nextcloud Talk no está activado",
- "Sorry, this link doesn’t seem to work anymore." : "Vaya, este enlace parece que no volverá a funcionar."
+ "Sorry, this link doesn’t seem to work anymore." : "Vaya, este enlace parece que no volverá a funcionar.",
+ "Toggle grid view" : "Alternar vista de cuadrícula"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/es_AR.js b/apps/files_sharing/l10n/es_AR.js
index ca3d8b51f6a..6d0405f3591 100644
--- a/apps/files_sharing/l10n/es_AR.js
+++ b/apps/files_sharing/l10n/es_AR.js
@@ -136,7 +136,6 @@ OC.L10N.register(
"sharing is disabled" : "compartir está deshabilitado",
"For more info, please ask the person who sent this link." : "Para mayores informes, contacte a la persona que le envió este link.",
"Share note" : "Compartir nota",
- "Toggle grid view" : "Vista de cuadrícula",
"Upload files to %s" : "Cargar archivos a %s",
"Note" : "Nota",
"Select or drop files" : "Seleccione o suelte los archivos",
@@ -144,6 +143,7 @@ OC.L10N.register(
"Add to your Nextcloud" : "Agregar a su Nextcloud",
"Wrong share ID, share doesn't exist" : "ID del elemento compartido equivocado, el elemento compartido no existe",
"Wrong path, file/folder doesn't exist" : "La ruta es incorrecta, el archivo/carpeta no existe",
- "Sorry, this link doesn’t seem to work anymore." : "Lo sentimos, este link no parece funcionar más. "
+ "Sorry, this link doesn’t seem to work anymore." : "Lo sentimos, este link no parece funcionar más. ",
+ "Toggle grid view" : "Vista de cuadrícula"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/es_AR.json b/apps/files_sharing/l10n/es_AR.json
index af6d611e82c..ba22861d26f 100644
--- a/apps/files_sharing/l10n/es_AR.json
+++ b/apps/files_sharing/l10n/es_AR.json
@@ -134,7 +134,6 @@
"sharing is disabled" : "compartir está deshabilitado",
"For more info, please ask the person who sent this link." : "Para mayores informes, contacte a la persona que le envió este link.",
"Share note" : "Compartir nota",
- "Toggle grid view" : "Vista de cuadrícula",
"Upload files to %s" : "Cargar archivos a %s",
"Note" : "Nota",
"Select or drop files" : "Seleccione o suelte los archivos",
@@ -142,6 +141,7 @@
"Add to your Nextcloud" : "Agregar a su Nextcloud",
"Wrong share ID, share doesn't exist" : "ID del elemento compartido equivocado, el elemento compartido no existe",
"Wrong path, file/folder doesn't exist" : "La ruta es incorrecta, el archivo/carpeta no existe",
- "Sorry, this link doesn’t seem to work anymore." : "Lo sentimos, este link no parece funcionar más. "
+ "Sorry, this link doesn’t seem to work anymore." : "Lo sentimos, este link no parece funcionar más. ",
+ "Toggle grid view" : "Vista de cuadrícula"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/eu.js b/apps/files_sharing/l10n/eu.js
index 706f1fb6e29..aa045de5a0d 100644
--- a/apps/files_sharing/l10n/eu.js
+++ b/apps/files_sharing/l10n/eu.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "partekatzea desgaituta dago",
"For more info, please ask the person who sent this link." : "Informazio gehiagorako, galdetu esteka hau bidali zuen pertsonari",
"Share note" : "Partekatu oharra",
- "Toggle grid view" : "Txandakatu sareta ikuspegia",
+ "Show list view" : "Erakutsi zerrenda ikuspegia",
+ "Show grid view" : "Erakutsi sareta-ikuspegia",
"Upload files to %s" : "Kargatu fitxategiak hona: %s",
"Note" : "Oharra",
"Select or drop files" : "Hautatu edo jaregin fitxategiak",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Bide okerra, fitxategia/karpeta ez da existitzen",
"Cannot change permissions for public share links" : "Publikoki partekatutako esteken baimenak ezin dira aldatu",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk-etik pasahitza bidaliz partekatzeak huts egin du, Nextcloud Talk ez dagoelako gaituta",
- "Sorry, this link doesn’t seem to work anymore." : "Barkatu, esteka hori jada ez dabilela dirudi."
+ "Sorry, this link doesn’t seem to work anymore." : "Barkatu, esteka hori jada ez dabilela dirudi.",
+ "Toggle grid view" : "Txandakatu sareta ikuspegia"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/eu.json b/apps/files_sharing/l10n/eu.json
index 4033d8f7320..5c9afe75afc 100644
--- a/apps/files_sharing/l10n/eu.json
+++ b/apps/files_sharing/l10n/eu.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "partekatzea desgaituta dago",
"For more info, please ask the person who sent this link." : "Informazio gehiagorako, galdetu esteka hau bidali zuen pertsonari",
"Share note" : "Partekatu oharra",
- "Toggle grid view" : "Txandakatu sareta ikuspegia",
+ "Show list view" : "Erakutsi zerrenda ikuspegia",
+ "Show grid view" : "Erakutsi sareta-ikuspegia",
"Upload files to %s" : "Kargatu fitxategiak hona: %s",
"Note" : "Oharra",
"Select or drop files" : "Hautatu edo jaregin fitxategiak",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Bide okerra, fitxategia/karpeta ez da existitzen",
"Cannot change permissions for public share links" : "Publikoki partekatutako esteken baimenak ezin dira aldatu",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk-etik pasahitza bidaliz partekatzeak huts egin du, Nextcloud Talk ez dagoelako gaituta",
- "Sorry, this link doesn’t seem to work anymore." : "Barkatu, esteka hori jada ez dabilela dirudi."
+ "Sorry, this link doesn’t seem to work anymore." : "Barkatu, esteka hori jada ez dabilela dirudi.",
+ "Toggle grid view" : "Txandakatu sareta ikuspegia"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/fa.js b/apps/files_sharing/l10n/fa.js
index f4d14227b1a..7a59060c20e 100644
--- a/apps/files_sharing/l10n/fa.js
+++ b/apps/files_sharing/l10n/fa.js
@@ -220,7 +220,6 @@ OC.L10N.register(
"sharing is disabled" : "قابلیت اشتراک گذاری غیرفعال است",
"For more info, please ask the person who sent this link." : "برای اطلاعات بیشتر، لطفا از شخصی که این پیوند را ارسال کرده سوال بفرمایید.",
"Share note" : "یادداشت اشتراک گذاری",
- "Toggle grid view" : "نمای دریچه را تغییر دهید",
"Upload files to %s" : "بارگیری پرونده ها به%s",
"Note" : "یادداشت",
"Select or drop files" : "پرونده ها را انتخاب یا رها کنید",
@@ -231,6 +230,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "مسیر ، پرونده / پوشه اشتباه وجود ندارد",
"Cannot change permissions for public share links" : "سطح دسترسی لینک هایی که به صورت عمومی منتشر شده اند قابل تغییر نیست.",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "اشتراک ارسال رمز عبور توسط Nextcloud Talk به دلیل فعال نشدن Nextcloud Talk انجام نشد",
- "Sorry, this link doesn’t seem to work anymore." : "متاسفانه این پیوند دیگر کار نمی کند"
+ "Sorry, this link doesn’t seem to work anymore." : "متاسفانه این پیوند دیگر کار نمی کند",
+ "Toggle grid view" : "نمای دریچه را تغییر دهید"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_sharing/l10n/fa.json b/apps/files_sharing/l10n/fa.json
index bcb199d6484..cb23accf240 100644
--- a/apps/files_sharing/l10n/fa.json
+++ b/apps/files_sharing/l10n/fa.json
@@ -218,7 +218,6 @@
"sharing is disabled" : "قابلیت اشتراک گذاری غیرفعال است",
"For more info, please ask the person who sent this link." : "برای اطلاعات بیشتر، لطفا از شخصی که این پیوند را ارسال کرده سوال بفرمایید.",
"Share note" : "یادداشت اشتراک گذاری",
- "Toggle grid view" : "نمای دریچه را تغییر دهید",
"Upload files to %s" : "بارگیری پرونده ها به%s",
"Note" : "یادداشت",
"Select or drop files" : "پرونده ها را انتخاب یا رها کنید",
@@ -229,6 +228,7 @@
"Wrong path, file/folder doesn't exist" : "مسیر ، پرونده / پوشه اشتباه وجود ندارد",
"Cannot change permissions for public share links" : "سطح دسترسی لینک هایی که به صورت عمومی منتشر شده اند قابل تغییر نیست.",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "اشتراک ارسال رمز عبور توسط Nextcloud Talk به دلیل فعال نشدن Nextcloud Talk انجام نشد",
- "Sorry, this link doesn’t seem to work anymore." : "متاسفانه این پیوند دیگر کار نمی کند"
+ "Sorry, this link doesn’t seem to work anymore." : "متاسفانه این پیوند دیگر کار نمی کند",
+ "Toggle grid view" : "نمای دریچه را تغییر دهید"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/fi.js b/apps/files_sharing/l10n/fi.js
index 71403f5320e..4d82c290613 100644
--- a/apps/files_sharing/l10n/fi.js
+++ b/apps/files_sharing/l10n/fi.js
@@ -232,7 +232,6 @@ OC.L10N.register(
"sharing is disabled" : "jakaminen on poistettu käytöstä",
"For more info, please ask the person who sent this link." : "Kysy lisätietoja henkilöltä, jolta sait linkin.",
"Share note" : "Jaa muistiinpano",
- "Toggle grid view" : "Ruudukkonäkymä päälle/pois",
"Upload files to %s" : "Lähetä tiedostoja käyttäjälle %s",
"Note" : "Huomio",
"Select or drop files" : "Valitse tai pudota tiedostoja",
@@ -243,6 +242,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Väärä jakotunniste, jakoa ei ole olemassa",
"Wrong path, file/folder doesn't exist" : "Väärä polku, tiedostoa tai kansiota ei ole olemassa",
"Cannot change permissions for public share links" : "Julkisten jakolinkkien oikeuksia ei voi muuttaa",
- "Sorry, this link doesn’t seem to work anymore." : "Valitettavasti linkki ei vaikuta enää toimivan."
+ "Sorry, this link doesn’t seem to work anymore." : "Valitettavasti linkki ei vaikuta enää toimivan.",
+ "Toggle grid view" : "Ruudukkonäkymä päälle/pois"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/fi.json b/apps/files_sharing/l10n/fi.json
index 6c11352e3b4..5077d982bd7 100644
--- a/apps/files_sharing/l10n/fi.json
+++ b/apps/files_sharing/l10n/fi.json
@@ -230,7 +230,6 @@
"sharing is disabled" : "jakaminen on poistettu käytöstä",
"For more info, please ask the person who sent this link." : "Kysy lisätietoja henkilöltä, jolta sait linkin.",
"Share note" : "Jaa muistiinpano",
- "Toggle grid view" : "Ruudukkonäkymä päälle/pois",
"Upload files to %s" : "Lähetä tiedostoja käyttäjälle %s",
"Note" : "Huomio",
"Select or drop files" : "Valitse tai pudota tiedostoja",
@@ -241,6 +240,7 @@
"Wrong share ID, share doesn't exist" : "Väärä jakotunniste, jakoa ei ole olemassa",
"Wrong path, file/folder doesn't exist" : "Väärä polku, tiedostoa tai kansiota ei ole olemassa",
"Cannot change permissions for public share links" : "Julkisten jakolinkkien oikeuksia ei voi muuttaa",
- "Sorry, this link doesn’t seem to work anymore." : "Valitettavasti linkki ei vaikuta enää toimivan."
+ "Sorry, this link doesn’t seem to work anymore." : "Valitettavasti linkki ei vaikuta enää toimivan.",
+ "Toggle grid view" : "Ruudukkonäkymä päälle/pois"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index f3da5abccf9..c8ec96b730f 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "le partage est désactivé",
"For more info, please ask the person who sent this link." : "Pour plus d'informations, veuillez contacter la personne qui vous a envoyé ce lien.",
"Share note" : "Partager la note",
- "Toggle grid view" : "Activer/Désactiver l'affichage mosaïque",
+ "Show list view" : "Afficher la vue en liste",
+ "Show grid view" : "Afficher la vue en grille",
"Upload files to %s" : "Envoi des fichiers vers %s",
"Note" : "Note",
"Select or drop files" : "Sélectionner ou glisser-déposer vos fichiers",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Mauvais chemin, Le fichier/dossier n'existe pas",
"Cannot change permissions for public share links" : "Impossible de changer les autorisations pour les liens publics partagés",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Le partage de l'envoi du mot de passe par Nextcloud Talk a échoué parce que Nextcloud Talk n'est pas activé.",
- "Sorry, this link doesn’t seem to work anymore." : "Désolé, ce lien semble ne plus fonctionner."
+ "Sorry, this link doesn’t seem to work anymore." : "Désolé, ce lien semble ne plus fonctionner.",
+ "Toggle grid view" : "Activer/Désactiver l'affichage mosaïque"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index 481f70ba2a7..0075bd1ab30 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "le partage est désactivé",
"For more info, please ask the person who sent this link." : "Pour plus d'informations, veuillez contacter la personne qui vous a envoyé ce lien.",
"Share note" : "Partager la note",
- "Toggle grid view" : "Activer/Désactiver l'affichage mosaïque",
+ "Show list view" : "Afficher la vue en liste",
+ "Show grid view" : "Afficher la vue en grille",
"Upload files to %s" : "Envoi des fichiers vers %s",
"Note" : "Note",
"Select or drop files" : "Sélectionner ou glisser-déposer vos fichiers",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Mauvais chemin, Le fichier/dossier n'existe pas",
"Cannot change permissions for public share links" : "Impossible de changer les autorisations pour les liens publics partagés",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Le partage de l'envoi du mot de passe par Nextcloud Talk a échoué parce que Nextcloud Talk n'est pas activé.",
- "Sorry, this link doesn’t seem to work anymore." : "Désolé, ce lien semble ne plus fonctionner."
+ "Sorry, this link doesn’t seem to work anymore." : "Désolé, ce lien semble ne plus fonctionner.",
+ "Toggle grid view" : "Activer/Désactiver l'affichage mosaïque"
},"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/gl.js b/apps/files_sharing/l10n/gl.js
index bc1bedd9f8f..fd9a36eaaa2 100644
--- a/apps/files_sharing/l10n/gl.js
+++ b/apps/files_sharing/l10n/gl.js
@@ -226,7 +226,6 @@ OC.L10N.register(
"sharing is disabled" : "foi desactivada a compartición",
"For more info, please ask the person who sent this link." : "Para obter máis información, pregúntelle á persoa que lle enviou a ligazón.",
"Share note" : "Compartir nota",
- "Toggle grid view" : "Alternar a vista de grella",
"Upload files to %s" : "Enviar ficheiros a %s",
"Note" : "Nota",
"Select or drop files" : "Seleccione ou arrastre e solte ficheiros",
@@ -237,6 +236,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "O ID do recurso compartido non é correcto, o recurso compartido non existe",
"Wrong path, file/folder doesn't exist" : "Ruta incorrecta, o ficheiro/cartafol non existe",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir enviando o contrasinal por Nextcloud Talk fallou porque Nextcloud Talk non está activado",
- "Sorry, this link doesn’t seem to work anymore." : "Semella que esta ligazón non funciona."
+ "Sorry, this link doesn’t seem to work anymore." : "Semella que esta ligazón non funciona.",
+ "Toggle grid view" : "Alternar a vista de grella"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json
index 8374e4f811d..58b0d04b5f4 100644
--- a/apps/files_sharing/l10n/gl.json
+++ b/apps/files_sharing/l10n/gl.json
@@ -224,7 +224,6 @@
"sharing is disabled" : "foi desactivada a compartición",
"For more info, please ask the person who sent this link." : "Para obter máis información, pregúntelle á persoa que lle enviou a ligazón.",
"Share note" : "Compartir nota",
- "Toggle grid view" : "Alternar a vista de grella",
"Upload files to %s" : "Enviar ficheiros a %s",
"Note" : "Nota",
"Select or drop files" : "Seleccione ou arrastre e solte ficheiros",
@@ -235,6 +234,7 @@
"Wrong share ID, share doesn't exist" : "O ID do recurso compartido non é correcto, o recurso compartido non existe",
"Wrong path, file/folder doesn't exist" : "Ruta incorrecta, o ficheiro/cartafol non existe",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir enviando o contrasinal por Nextcloud Talk fallou porque Nextcloud Talk non está activado",
- "Sorry, this link doesn’t seem to work anymore." : "Semella que esta ligazón non funciona."
+ "Sorry, this link doesn’t seem to work anymore." : "Semella que esta ligazón non funciona.",
+ "Toggle grid view" : "Alternar a vista de grella"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js
index d14429fc85d..7b7fd8cfe26 100644
--- a/apps/files_sharing/l10n/he.js
+++ b/apps/files_sharing/l10n/he.js
@@ -223,7 +223,6 @@ OC.L10N.register(
"sharing is disabled" : "השיתוף נוטרל",
"For more info, please ask the person who sent this link." : "למידע נוסף, יש לפנות לשולח קישור זה.",
"Share note" : "פתק שיתוף",
- "Toggle grid view" : "החלפת תצוגת טבלה",
"Upload files to %s" : "העלאת קבצים על %s",
"Note" : "פתק",
"Select or drop files" : "בחירה או השלכה של קבצים",
@@ -234,6 +233,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים",
"Wrong path, file/folder doesn't exist" : "נתיב שגוי, קובץ/תיקייה אינם קיימים",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "שיתוף שליחת הסיסמה באמצעות Nextcloud Talk נכשל מכיוון ש- Nextcloud Talk אינו מופעל",
- "Sorry, this link doesn’t seem to work anymore." : "מצטערים, לא נראה שקישור זה עובד יותר. "
+ "Sorry, this link doesn’t seem to work anymore." : "מצטערים, לא נראה שקישור זה עובד יותר. ",
+ "Toggle grid view" : "החלפת תצוגת טבלה"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json
index f39229c5ea7..7ef4984310a 100644
--- a/apps/files_sharing/l10n/he.json
+++ b/apps/files_sharing/l10n/he.json
@@ -221,7 +221,6 @@
"sharing is disabled" : "השיתוף נוטרל",
"For more info, please ask the person who sent this link." : "למידע נוסף, יש לפנות לשולח קישור זה.",
"Share note" : "פתק שיתוף",
- "Toggle grid view" : "החלפת תצוגת טבלה",
"Upload files to %s" : "העלאת קבצים על %s",
"Note" : "פתק",
"Select or drop files" : "בחירה או השלכה של קבצים",
@@ -232,6 +231,7 @@
"Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים",
"Wrong path, file/folder doesn't exist" : "נתיב שגוי, קובץ/תיקייה אינם קיימים",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "שיתוף שליחת הסיסמה באמצעות Nextcloud Talk נכשל מכיוון ש- Nextcloud Talk אינו מופעל",
- "Sorry, this link doesn’t seem to work anymore." : "מצטערים, לא נראה שקישור זה עובד יותר. "
+ "Sorry, this link doesn’t seem to work anymore." : "מצטערים, לא נראה שקישור זה עובד יותר. ",
+ "Toggle grid view" : "החלפת תצוגת טבלה"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/hr.js b/apps/files_sharing/l10n/hr.js
index 135187ae731..3e28d1170e2 100644
--- a/apps/files_sharing/l10n/hr.js
+++ b/apps/files_sharing/l10n/hr.js
@@ -231,7 +231,6 @@ OC.L10N.register(
"sharing is disabled" : "dijeljenje je onemogućeno",
"For more info, please ask the person who sent this link." : "Za više se informacija obratite osobi koja je poslala ovu poveznicu.",
"Share note" : "Dijeli bilješku",
- "Toggle grid view" : "Uključi/isključi prikaz rešetke",
"Upload files to %s" : "Otpremi datoteke na %s",
"Note" : "Bilješka",
"Select or drop files" : "Odaberi ili ispusti datoteke",
@@ -243,6 +242,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Pogrešan put, datoteka/mapa ne postoji",
"Cannot change permissions for public share links" : "Nije moguće promijeniti dopuštenja za javne poveznice dijeljenja",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Neuspješno dijeljenje slanjem zaporke za Nextcloud Talk jer Nextcloud Talk nije omogućen",
- "Sorry, this link doesn’t seem to work anymore." : "Žao nam je, čini se da ova poveznica više ne radi."
+ "Sorry, this link doesn’t seem to work anymore." : "Žao nam je, čini se da ova poveznica više ne radi.",
+ "Toggle grid view" : "Uključi/isključi prikaz rešetke"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/hr.json b/apps/files_sharing/l10n/hr.json
index 29117fd270d..4c793a13d4e 100644
--- a/apps/files_sharing/l10n/hr.json
+++ b/apps/files_sharing/l10n/hr.json
@@ -229,7 +229,6 @@
"sharing is disabled" : "dijeljenje je onemogućeno",
"For more info, please ask the person who sent this link." : "Za više se informacija obratite osobi koja je poslala ovu poveznicu.",
"Share note" : "Dijeli bilješku",
- "Toggle grid view" : "Uključi/isključi prikaz rešetke",
"Upload files to %s" : "Otpremi datoteke na %s",
"Note" : "Bilješka",
"Select or drop files" : "Odaberi ili ispusti datoteke",
@@ -241,6 +240,7 @@
"Wrong path, file/folder doesn't exist" : "Pogrešan put, datoteka/mapa ne postoji",
"Cannot change permissions for public share links" : "Nije moguće promijeniti dopuštenja za javne poveznice dijeljenja",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Neuspješno dijeljenje slanjem zaporke za Nextcloud Talk jer Nextcloud Talk nije omogućen",
- "Sorry, this link doesn’t seem to work anymore." : "Žao nam je, čini se da ova poveznica više ne radi."
+ "Sorry, this link doesn’t seem to work anymore." : "Žao nam je, čini se da ova poveznica više ne radi.",
+ "Toggle grid view" : "Uključi/isključi prikaz rešetke"
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/hu.js b/apps/files_sharing/l10n/hu.js
index 9965123f758..7439d4d15ff 100644
--- a/apps/files_sharing/l10n/hu.js
+++ b/apps/files_sharing/l10n/hu.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "a megosztás letiltásra került",
"For more info, please ask the person who sent this link." : "További információért forduljon ahhoz, aki ezt a hivatkozást küldte.",
"Share note" : "Jegyzet megosztása",
- "Toggle grid view" : "Rácsnézet be/ki",
+ "Show list view" : "Listanézet megjelenítése",
+ "Show grid view" : "Rácsnézet megjelenítése",
"Upload files to %s" : "Fájlok feltöltése ide: %s",
"Note" : "Megjegyzés",
"Select or drop files" : "Válasszon vagy dobjon ide fájlokat",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Hibás útvonal, a fájl/mappa nem létezik",
"Cannot change permissions for public share links" : "Nem lehet módosítani a nyilvános megosztási hivatkozások jogosultságait",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "A megosztás jelszavának Nextcloud Beszélgetéssel történő elküldése sikertelen, mert a Nextcloud Beszélgetés nem engedélyezett",
- "Sorry, this link doesn’t seem to work anymore." : "Sajnos úgy tűnik, ez a hivatkozás már nem működik."
+ "Sorry, this link doesn’t seem to work anymore." : "Sajnos úgy tűnik, ez a hivatkozás már nem működik.",
+ "Toggle grid view" : "Rácsnézet be/ki"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/hu.json b/apps/files_sharing/l10n/hu.json
index fcbbab00eca..ce75794f664 100644
--- a/apps/files_sharing/l10n/hu.json
+++ b/apps/files_sharing/l10n/hu.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "a megosztás letiltásra került",
"For more info, please ask the person who sent this link." : "További információért forduljon ahhoz, aki ezt a hivatkozást küldte.",
"Share note" : "Jegyzet megosztása",
- "Toggle grid view" : "Rácsnézet be/ki",
+ "Show list view" : "Listanézet megjelenítése",
+ "Show grid view" : "Rácsnézet megjelenítése",
"Upload files to %s" : "Fájlok feltöltése ide: %s",
"Note" : "Megjegyzés",
"Select or drop files" : "Válasszon vagy dobjon ide fájlokat",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Hibás útvonal, a fájl/mappa nem létezik",
"Cannot change permissions for public share links" : "Nem lehet módosítani a nyilvános megosztási hivatkozások jogosultságait",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "A megosztás jelszavának Nextcloud Beszélgetéssel történő elküldése sikertelen, mert a Nextcloud Beszélgetés nem engedélyezett",
- "Sorry, this link doesn’t seem to work anymore." : "Sajnos úgy tűnik, ez a hivatkozás már nem működik."
+ "Sorry, this link doesn’t seem to work anymore." : "Sajnos úgy tűnik, ez a hivatkozás már nem működik.",
+ "Toggle grid view" : "Rácsnézet be/ki"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js
index 6a78ad04ad8..5fb72750bab 100644
--- a/apps/files_sharing/l10n/is.js
+++ b/apps/files_sharing/l10n/is.js
@@ -171,7 +171,6 @@ OC.L10N.register(
"sharing is disabled" : "slökkt er á skráadeilingu",
"For more info, please ask the person who sent this link." : "Til að vita meira skaltu hafa samband við þann sem sendi þér þennan tengil.",
"Share note" : "Deila minnispunkti",
- "Toggle grid view" : "Víxla reitasýn af/á",
"Upload files to %s" : "Senda inn skrár á %s",
"Note" : "Minnispunktur",
"Select or drop files" : "Veldu eða slepptu skrám",
@@ -181,6 +180,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Rangt auðkenni sameignar, sameign er ekki til",
"Wrong path, file/folder doesn't exist" : "Röng slóð, skrá/mappa er ekki til",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Deiling með því að senda lykilorð með Nextcloud Talk mistókst því að Nextcloud Talk er ekki virkt",
- "Sorry, this link doesn’t seem to work anymore." : "Því miður, þessi tengill virðist ekki virka lengur."
+ "Sorry, this link doesn’t seem to work anymore." : "Því miður, þessi tengill virðist ekki virka lengur.",
+ "Toggle grid view" : "Víxla reitasýn af/á"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json
index 617c2b6738d..97ac3e5eb8b 100644
--- a/apps/files_sharing/l10n/is.json
+++ b/apps/files_sharing/l10n/is.json
@@ -169,7 +169,6 @@
"sharing is disabled" : "slökkt er á skráadeilingu",
"For more info, please ask the person who sent this link." : "Til að vita meira skaltu hafa samband við þann sem sendi þér þennan tengil.",
"Share note" : "Deila minnispunkti",
- "Toggle grid view" : "Víxla reitasýn af/á",
"Upload files to %s" : "Senda inn skrár á %s",
"Note" : "Minnispunktur",
"Select or drop files" : "Veldu eða slepptu skrám",
@@ -179,6 +178,7 @@
"Wrong share ID, share doesn't exist" : "Rangt auðkenni sameignar, sameign er ekki til",
"Wrong path, file/folder doesn't exist" : "Röng slóð, skrá/mappa er ekki til",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Deiling með því að senda lykilorð með Nextcloud Talk mistókst því að Nextcloud Talk er ekki virkt",
- "Sorry, this link doesn’t seem to work anymore." : "Því miður, þessi tengill virðist ekki virka lengur."
+ "Sorry, this link doesn’t seem to work anymore." : "Því miður, þessi tengill virðist ekki virka lengur.",
+ "Toggle grid view" : "Víxla reitasýn af/á"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index 5025e51b670..68b723a78ab 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -240,7 +240,8 @@ OC.L10N.register(
"sharing is disabled" : "la condivisione è disabilitata",
"For more info, please ask the person who sent this link." : "Per ulteriori informazioni, chiedi alla persona che ti ha inviato il collegamento.",
"Share note" : "Condividi nota",
- "Toggle grid view" : "Commuta la vista a griglia",
+ "Show list view" : "Commuta la vista a lista",
+ "Show grid view" : "Commuta la vista a griglia",
"Upload files to %s" : "Carica file su %s",
"Note" : "Nota",
"Select or drop files" : "Seleziona o deseleziona file",
@@ -252,6 +253,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Percorso errato, file/cartella inesistente",
"Cannot change permissions for public share links" : "Impossibile cambiare i permessi per i collegamenti di condivisione pubblici",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "La condivisione tramite invio della password da Nextcloud Talk non è riuscito poiché Nextcloud Talk non è abilitato",
- "Sorry, this link doesn’t seem to work anymore." : "Spiacenti, questo collegamento sembra non essere più attivo."
+ "Sorry, this link doesn’t seem to work anymore." : "Spiacenti, questo collegamento sembra non essere più attivo.",
+ "Toggle grid view" : "Commuta la vista a griglia"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index 15eb05eaf6b..c8d1dde8e0d 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -238,7 +238,8 @@
"sharing is disabled" : "la condivisione è disabilitata",
"For more info, please ask the person who sent this link." : "Per ulteriori informazioni, chiedi alla persona che ti ha inviato il collegamento.",
"Share note" : "Condividi nota",
- "Toggle grid view" : "Commuta la vista a griglia",
+ "Show list view" : "Commuta la vista a lista",
+ "Show grid view" : "Commuta la vista a griglia",
"Upload files to %s" : "Carica file su %s",
"Note" : "Nota",
"Select or drop files" : "Seleziona o deseleziona file",
@@ -250,6 +251,7 @@
"Wrong path, file/folder doesn't exist" : "Percorso errato, file/cartella inesistente",
"Cannot change permissions for public share links" : "Impossibile cambiare i permessi per i collegamenti di condivisione pubblici",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "La condivisione tramite invio della password da Nextcloud Talk non è riuscito poiché Nextcloud Talk non è abilitato",
- "Sorry, this link doesn’t seem to work anymore." : "Spiacenti, questo collegamento sembra non essere più attivo."
+ "Sorry, this link doesn’t seem to work anymore." : "Spiacenti, questo collegamento sembra non essere più attivo.",
+ "Toggle grid view" : "Commuta la vista a griglia"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js
index a591bbb1dfe..b0b539c5bbe 100644
--- a/apps/files_sharing/l10n/ja.js
+++ b/apps/files_sharing/l10n/ja.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "共有は無効になっています",
"For more info, please ask the person who sent this link." : "不明な点は、こちらのリンクの提供者に確認をお願いします。",
"Share note" : "共有ノート",
- "Toggle grid view" : "グリッド表示の切り替え",
+ "Show list view" : "リストビューで表示",
+ "Show grid view" : "グリッドビューで表示",
"Upload files to %s" : "%s にファイルをアップロード",
"Note" : "ノート",
"Select or drop files" : "ファイルを選択するか、ドラッグ&ドロップしてください",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "パスが間違っています。ファイル/フォルダーがありません",
"Cannot change permissions for public share links" : "URLリンク共有のパーミッションを変更できません",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talkが有効になっていないため、Nextcloud Talkによるパスワードの共有に失敗しました",
- "Sorry, this link doesn’t seem to work anymore." : "すみません。このリンクはもう利用できません。"
+ "Sorry, this link doesn’t seem to work anymore." : "すみません。このリンクはもう利用できません。",
+ "Toggle grid view" : "グリッド表示の切り替え"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json
index 17419df32b5..985e4aefdf7 100644
--- a/apps/files_sharing/l10n/ja.json
+++ b/apps/files_sharing/l10n/ja.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "共有は無効になっています",
"For more info, please ask the person who sent this link." : "不明な点は、こちらのリンクの提供者に確認をお願いします。",
"Share note" : "共有ノート",
- "Toggle grid view" : "グリッド表示の切り替え",
+ "Show list view" : "リストビューで表示",
+ "Show grid view" : "グリッドビューで表示",
"Upload files to %s" : "%s にファイルをアップロード",
"Note" : "ノート",
"Select or drop files" : "ファイルを選択するか、ドラッグ&ドロップしてください",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "パスが間違っています。ファイル/フォルダーがありません",
"Cannot change permissions for public share links" : "URLリンク共有のパーミッションを変更できません",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talkが有効になっていないため、Nextcloud Talkによるパスワードの共有に失敗しました",
- "Sorry, this link doesn’t seem to work anymore." : "すみません。このリンクはもう利用できません。"
+ "Sorry, this link doesn’t seem to work anymore." : "すみません。このリンクはもう利用できません。",
+ "Toggle grid view" : "グリッド表示の切り替え"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/ko.js b/apps/files_sharing/l10n/ko.js
index b8cf81f6cf7..f3289c83810 100644
--- a/apps/files_sharing/l10n/ko.js
+++ b/apps/files_sharing/l10n/ko.js
@@ -176,7 +176,6 @@ OC.L10N.register(
"sharing is disabled" : "공유가 비활성화됨",
"For more info, please ask the person who sent this link." : "자세한 정보는 링크를 보낸 사람에게 문의하십시오.",
"Share note" : "공유 노트",
- "Toggle grid view" : "모눈 보기 전환",
"Upload files to %s" : "%s에 파일 업로드",
"Note" : "노트",
"Select or drop files" : "파일을 선택하거나 끌어다 놓기",
@@ -187,6 +186,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "잘못된 공유 ID, 공유가 존재하지 않음",
"Wrong path, file/folder doesn't exist" : "잘못된 경로, 파일/폴더가 존재하지 않음",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud 토크가 활성화되어 있지 않기 때문에 Nextcloud 토크로 공유 암호를 전송할 수 없음",
- "Sorry, this link doesn’t seem to work anymore." : "죄송합니다. 이 링크는 더 이상 작동하지 않습니다."
+ "Sorry, this link doesn’t seem to work anymore." : "죄송합니다. 이 링크는 더 이상 작동하지 않습니다.",
+ "Toggle grid view" : "모눈 보기 전환"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/ko.json b/apps/files_sharing/l10n/ko.json
index 92ff9cf282e..86501e14909 100644
--- a/apps/files_sharing/l10n/ko.json
+++ b/apps/files_sharing/l10n/ko.json
@@ -174,7 +174,6 @@
"sharing is disabled" : "공유가 비활성화됨",
"For more info, please ask the person who sent this link." : "자세한 정보는 링크를 보낸 사람에게 문의하십시오.",
"Share note" : "공유 노트",
- "Toggle grid view" : "모눈 보기 전환",
"Upload files to %s" : "%s에 파일 업로드",
"Note" : "노트",
"Select or drop files" : "파일을 선택하거나 끌어다 놓기",
@@ -185,6 +184,7 @@
"Wrong share ID, share doesn't exist" : "잘못된 공유 ID, 공유가 존재하지 않음",
"Wrong path, file/folder doesn't exist" : "잘못된 경로, 파일/폴더가 존재하지 않음",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud 토크가 활성화되어 있지 않기 때문에 Nextcloud 토크로 공유 암호를 전송할 수 없음",
- "Sorry, this link doesn’t seem to work anymore." : "죄송합니다. 이 링크는 더 이상 작동하지 않습니다."
+ "Sorry, this link doesn’t seem to work anymore." : "죄송합니다. 이 링크는 더 이상 작동하지 않습니다.",
+ "Toggle grid view" : "모눈 보기 전환"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js
index b496b2c9823..8e1029c7799 100644
--- a/apps/files_sharing/l10n/lt_LT.js
+++ b/apps/files_sharing/l10n/lt_LT.js
@@ -228,7 +228,6 @@ OC.L10N.register(
"sharing is disabled" : "dalinimasis yra išjungtas",
"For more info, please ask the person who sent this link." : "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.",
"Share note" : "Pasidalinimo pastaba",
- "Toggle grid view" : "Rodyti tinkleliu",
"Upload files to %s" : "Įkelkite failus į %s",
"Note" : "Pastaba",
"Select or drop files" : "Pasirinkite arba vilkite failus",
@@ -239,6 +238,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Neteisingas dalinamų duomenų ID",
"Wrong path, file/folder doesn't exist" : "Neteisingas kelias, failo/aplanko nėra",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nepavyko išsiųsti slaptažodžio bendrinimui panaudojant Nextcloud Talk, kadangi Nextcloud Talk neįjungtas ",
- "Sorry, this link doesn’t seem to work anymore." : "Nuoroda yra neveiksni."
+ "Sorry, this link doesn’t seem to work anymore." : "Nuoroda yra neveiksni.",
+ "Toggle grid view" : "Rodyti tinkleliu"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json
index 8bf7e3082a2..1fdbd563813 100644
--- a/apps/files_sharing/l10n/lt_LT.json
+++ b/apps/files_sharing/l10n/lt_LT.json
@@ -226,7 +226,6 @@
"sharing is disabled" : "dalinimasis yra išjungtas",
"For more info, please ask the person who sent this link." : "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.",
"Share note" : "Pasidalinimo pastaba",
- "Toggle grid view" : "Rodyti tinkleliu",
"Upload files to %s" : "Įkelkite failus į %s",
"Note" : "Pastaba",
"Select or drop files" : "Pasirinkite arba vilkite failus",
@@ -237,6 +236,7 @@
"Wrong share ID, share doesn't exist" : "Neteisingas dalinamų duomenų ID",
"Wrong path, file/folder doesn't exist" : "Neteisingas kelias, failo/aplanko nėra",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nepavyko išsiųsti slaptažodžio bendrinimui panaudojant Nextcloud Talk, kadangi Nextcloud Talk neįjungtas ",
- "Sorry, this link doesn’t seem to work anymore." : "Nuoroda yra neveiksni."
+ "Sorry, this link doesn’t seem to work anymore." : "Nuoroda yra neveiksni.",
+ "Toggle grid view" : "Rodyti tinkleliu"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/lv.js b/apps/files_sharing/l10n/lv.js
index 19a4497469f..3dffe166719 100644
--- a/apps/files_sharing/l10n/lv.js
+++ b/apps/files_sharing/l10n/lv.js
@@ -190,7 +190,6 @@ OC.L10N.register(
"sharing is disabled" : "koplietošana nav ieslēgta",
"For more info, please ask the person who sent this link." : "Vairāk informācijas vaicā personai, kas nosūtīja šo saiti.",
"Share note" : "Koplietot piezīmi",
- "Toggle grid view" : "Pārslēgt režģa skatu",
"Upload files to %s" : "Augšupielādēt datnes uz %s",
"Note" : "Piezīme",
"Select or drop files" : "Izvēlies vai ievelc datnes",
@@ -200,6 +199,7 @@ OC.L10N.register(
"Add to your Nextcloud" : "Pievienot savam Nextcloud",
"Wrong share ID, share doesn't exist" : "Nepareizs koplietošanas ID, koplietotne neeksistē",
"Wrong path, file/folder doesn't exist" : "Nepareizs ceļš, datne/mape neeksistē",
- "Sorry, this link doesn’t seem to work anymore." : "Izskatās, ka šī saite vairs nedarbojas"
+ "Sorry, this link doesn’t seem to work anymore." : "Izskatās, ka šī saite vairs nedarbojas",
+ "Toggle grid view" : "Pārslēgt režģa skatu"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/files_sharing/l10n/lv.json b/apps/files_sharing/l10n/lv.json
index 05987643ba1..1a24fb250f0 100644
--- a/apps/files_sharing/l10n/lv.json
+++ b/apps/files_sharing/l10n/lv.json
@@ -188,7 +188,6 @@
"sharing is disabled" : "koplietošana nav ieslēgta",
"For more info, please ask the person who sent this link." : "Vairāk informācijas vaicā personai, kas nosūtīja šo saiti.",
"Share note" : "Koplietot piezīmi",
- "Toggle grid view" : "Pārslēgt režģa skatu",
"Upload files to %s" : "Augšupielādēt datnes uz %s",
"Note" : "Piezīme",
"Select or drop files" : "Izvēlies vai ievelc datnes",
@@ -198,6 +197,7 @@
"Add to your Nextcloud" : "Pievienot savam Nextcloud",
"Wrong share ID, share doesn't exist" : "Nepareizs koplietošanas ID, koplietotne neeksistē",
"Wrong path, file/folder doesn't exist" : "Nepareizs ceļš, datne/mape neeksistē",
- "Sorry, this link doesn’t seem to work anymore." : "Izskatās, ka šī saite vairs nedarbojas"
+ "Sorry, this link doesn’t seem to work anymore." : "Izskatās, ka šī saite vairs nedarbojas",
+ "Toggle grid view" : "Pārslēgt režģa skatu"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/mk.js b/apps/files_sharing/l10n/mk.js
index b6a60dacbd4..f887234b0d4 100644
--- a/apps/files_sharing/l10n/mk.js
+++ b/apps/files_sharing/l10n/mk.js
@@ -230,7 +230,6 @@ OC.L10N.register(
"sharing is disabled" : "споделувањето не е дозволено",
"For more info, please ask the person who sent this link." : "За повеќе информации, прашајте го лицето кое ви го испратил линкот.",
"Share note" : "Споделување со забелешка ",
- "Toggle grid view" : "Промена во мрежа",
"Upload files to %s" : "Прикачи датотеки во %s",
"Note" : "Белешка",
"Select or drop files" : "Изберете или испуштете датотеки",
@@ -242,6 +241,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Погрешна патека, датотеката/папката не постои",
"Cannot change permissions for public share links" : "Неможат да се сменат дозволите за јавно споделени линкови",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Неуспешно испраќање на лозинка за споделувањето преку разговор бидејќи разговорот не е овозможен",
- "Sorry, this link doesn’t seem to work anymore." : "Извенете, но овој линк повеќе не функционира."
+ "Sorry, this link doesn’t seem to work anymore." : "Извенете, но овој линк повеќе не функционира.",
+ "Toggle grid view" : "Промена во мрежа"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/files_sharing/l10n/mk.json b/apps/files_sharing/l10n/mk.json
index 07b661973f9..06a7e86f501 100644
--- a/apps/files_sharing/l10n/mk.json
+++ b/apps/files_sharing/l10n/mk.json
@@ -228,7 +228,6 @@
"sharing is disabled" : "споделувањето не е дозволено",
"For more info, please ask the person who sent this link." : "За повеќе информации, прашајте го лицето кое ви го испратил линкот.",
"Share note" : "Споделување со забелешка ",
- "Toggle grid view" : "Промена во мрежа",
"Upload files to %s" : "Прикачи датотеки во %s",
"Note" : "Белешка",
"Select or drop files" : "Изберете или испуштете датотеки",
@@ -240,6 +239,7 @@
"Wrong path, file/folder doesn't exist" : "Погрешна патека, датотеката/папката не постои",
"Cannot change permissions for public share links" : "Неможат да се сменат дозволите за јавно споделени линкови",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Неуспешно испраќање на лозинка за споделувањето преку разговор бидејќи разговорот не е овозможен",
- "Sorry, this link doesn’t seem to work anymore." : "Извенете, но овој линк повеќе не функционира."
+ "Sorry, this link doesn’t seem to work anymore." : "Извенете, но овој линк повеќе не функционира.",
+ "Toggle grid view" : "Промена во мрежа"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/nb.js b/apps/files_sharing/l10n/nb.js
index a3fdbefd26b..fe262c910be 100644
--- a/apps/files_sharing/l10n/nb.js
+++ b/apps/files_sharing/l10n/nb.js
@@ -203,7 +203,6 @@ OC.L10N.register(
"sharing is disabled" : "deling er avskrudd",
"For more info, please ask the person who sent this link." : "For mer informasjon, spør personen som sendte lenken.",
"Share note" : "Delingsnotat",
- "Toggle grid view" : "Veksle rutenett-visning",
"Upload files to %s" : "Last opp filer til %s",
"Note" : "Melding",
"Select or drop files" : "Velg eller slipp filer",
@@ -213,6 +212,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Feil ressurs ID, ressursen finnes ikke",
"Wrong path, file/folder doesn't exist" : "Feil filbane, filen/mappen finnes ikke",
"Cannot change permissions for public share links" : "Kan ikke endre rettigheter for offentlig delingslenker",
- "Sorry, this link doesn’t seem to work anymore." : "Beklager, denne lenken ser ikke ut til å virke lenger."
+ "Sorry, this link doesn’t seem to work anymore." : "Beklager, denne lenken ser ikke ut til å virke lenger.",
+ "Toggle grid view" : "Veksle rutenett-visning"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/nb.json b/apps/files_sharing/l10n/nb.json
index 11d6873b3fd..f21993bcb48 100644
--- a/apps/files_sharing/l10n/nb.json
+++ b/apps/files_sharing/l10n/nb.json
@@ -201,7 +201,6 @@
"sharing is disabled" : "deling er avskrudd",
"For more info, please ask the person who sent this link." : "For mer informasjon, spør personen som sendte lenken.",
"Share note" : "Delingsnotat",
- "Toggle grid view" : "Veksle rutenett-visning",
"Upload files to %s" : "Last opp filer til %s",
"Note" : "Melding",
"Select or drop files" : "Velg eller slipp filer",
@@ -211,6 +210,7 @@
"Wrong share ID, share doesn't exist" : "Feil ressurs ID, ressursen finnes ikke",
"Wrong path, file/folder doesn't exist" : "Feil filbane, filen/mappen finnes ikke",
"Cannot change permissions for public share links" : "Kan ikke endre rettigheter for offentlig delingslenker",
- "Sorry, this link doesn’t seem to work anymore." : "Beklager, denne lenken ser ikke ut til å virke lenger."
+ "Sorry, this link doesn’t seem to work anymore." : "Beklager, denne lenken ser ikke ut til å virke lenger.",
+ "Toggle grid view" : "Veksle rutenett-visning"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js
index c8bb54906b3..aa5c624ff2e 100644
--- a/apps/files_sharing/l10n/nl.js
+++ b/apps/files_sharing/l10n/nl.js
@@ -235,7 +235,6 @@ OC.L10N.register(
"sharing is disabled" : "delen is uitgeschakeld",
"For more info, please ask the person who sent this link." : "Voor meer informatie, neem contact op met de persoon die u deze link heeft gestuurd.",
"Share note" : "Notitie delen",
- "Toggle grid view" : "Omschakelen roosterweergave",
"Upload files to %s" : "Upload bestanden naar %s",
"Note" : "Notitie",
"Select or drop files" : "Selecteer bestanden of sleep ze naar dit venster",
@@ -247,6 +246,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Onjuist pad, bestand/map bestaat niet",
"Cannot change permissions for public share links" : "Kan machtigingen voor openbaar gedeelde links niet wijzigen",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delen versturen van het wachtwoord via Nextcloud Talk is mislukt omdat Nextcloud Talk niet is ingeschakeld",
- "Sorry, this link doesn’t seem to work anymore." : "Sorry, deze link lijkt niet meer in gebruik te zijn."
+ "Sorry, this link doesn’t seem to work anymore." : "Sorry, deze link lijkt niet meer in gebruik te zijn.",
+ "Toggle grid view" : "Omschakelen roosterweergave"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json
index a80648fca28..e4fa7e15b60 100644
--- a/apps/files_sharing/l10n/nl.json
+++ b/apps/files_sharing/l10n/nl.json
@@ -233,7 +233,6 @@
"sharing is disabled" : "delen is uitgeschakeld",
"For more info, please ask the person who sent this link." : "Voor meer informatie, neem contact op met de persoon die u deze link heeft gestuurd.",
"Share note" : "Notitie delen",
- "Toggle grid view" : "Omschakelen roosterweergave",
"Upload files to %s" : "Upload bestanden naar %s",
"Note" : "Notitie",
"Select or drop files" : "Selecteer bestanden of sleep ze naar dit venster",
@@ -245,6 +244,7 @@
"Wrong path, file/folder doesn't exist" : "Onjuist pad, bestand/map bestaat niet",
"Cannot change permissions for public share links" : "Kan machtigingen voor openbaar gedeelde links niet wijzigen",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delen versturen van het wachtwoord via Nextcloud Talk is mislukt omdat Nextcloud Talk niet is ingeschakeld",
- "Sorry, this link doesn’t seem to work anymore." : "Sorry, deze link lijkt niet meer in gebruik te zijn."
+ "Sorry, this link doesn’t seem to work anymore." : "Sorry, deze link lijkt niet meer in gebruik te zijn.",
+ "Toggle grid view" : "Omschakelen roosterweergave"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js
index a19f7dc8937..43ce4c31060 100644
--- a/apps/files_sharing/l10n/pl.js
+++ b/apps/files_sharing/l10n/pl.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "udostępnianie jest wyłączone",
"For more info, please ask the person who sent this link." : "Aby uzyskać więcej informacji, zapytaj osobę, która wysłała ten link.",
"Share note" : "Notatka udostępnienia",
- "Toggle grid view" : "Przełącz widok siatki",
+ "Show list view" : "Pokaż widok listy",
+ "Show grid view" : "Pokaż widok siatki",
"Upload files to %s" : "Wyślij pliki do %s",
"Note" : "Notatka",
"Select or drop files" : "Wybierz lub upuść pliki",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Ścieżka nieprawidłowa, plik/katalog nie istnieje",
"Cannot change permissions for public share links" : "Nie można zmienić uprawnień dla publicznych linków udostępnienia",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Udostępnienie hasła przez Nextcloud Talk nie powiodło się, ponieważ usługa Nextcloud Talk jest wyłączona",
- "Sorry, this link doesn’t seem to work anymore." : "Niestety, ten link już nie działa."
+ "Sorry, this link doesn’t seem to work anymore." : "Niestety, ten link już nie działa.",
+ "Toggle grid view" : "Przełącz widok siatki"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json
index f2a14f8c9f4..ba826ea2348 100644
--- a/apps/files_sharing/l10n/pl.json
+++ b/apps/files_sharing/l10n/pl.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "udostępnianie jest wyłączone",
"For more info, please ask the person who sent this link." : "Aby uzyskać więcej informacji, zapytaj osobę, która wysłała ten link.",
"Share note" : "Notatka udostępnienia",
- "Toggle grid view" : "Przełącz widok siatki",
+ "Show list view" : "Pokaż widok listy",
+ "Show grid view" : "Pokaż widok siatki",
"Upload files to %s" : "Wyślij pliki do %s",
"Note" : "Notatka",
"Select or drop files" : "Wybierz lub upuść pliki",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Ścieżka nieprawidłowa, plik/katalog nie istnieje",
"Cannot change permissions for public share links" : "Nie można zmienić uprawnień dla publicznych linków udostępnienia",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Udostępnienie hasła przez Nextcloud Talk nie powiodło się, ponieważ usługa Nextcloud Talk jest wyłączona",
- "Sorry, this link doesn’t seem to work anymore." : "Niestety, ten link już nie działa."
+ "Sorry, this link doesn’t seem to work anymore." : "Niestety, ten link już nie działa.",
+ "Toggle grid view" : "Przełącz widok siatki"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index 4b1acceac3a..002ac8ecd84 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "o compartilhamento está desativado",
"For more info, please ask the person who sent this link." : "Para mais informações, pergunte à pessoa que lhe enviou o link.",
"Share note" : "Anotação de compartilhamento",
- "Toggle grid view" : "Alternar visualização de grade",
+ "Show list view" : "Mostrar visualização em lista",
+ "Show grid view" : "Mostrar visualização em grade",
"Upload files to %s" : "Enviar arquivos para %s",
"Note" : "Nota",
"Select or drop files" : "Selecione ou solte arquivos",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Caminho errado, o arquivo ou pasta não existe",
"Cannot change permissions for public share links" : "Não foi possível alterar as permissões para links de compartilhamento público",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "O compartilhamento falhou ao enviar a senha ao Nextcloud Talk porque este não está ativado",
- "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não funcionar mais."
+ "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não funcionar mais.",
+ "Toggle grid view" : "Alternar visualização de grade"
},
"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 71dba6807ef..1612c927f47 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "o compartilhamento está desativado",
"For more info, please ask the person who sent this link." : "Para mais informações, pergunte à pessoa que lhe enviou o link.",
"Share note" : "Anotação de compartilhamento",
- "Toggle grid view" : "Alternar visualização de grade",
+ "Show list view" : "Mostrar visualização em lista",
+ "Show grid view" : "Mostrar visualização em grade",
"Upload files to %s" : "Enviar arquivos para %s",
"Note" : "Nota",
"Select or drop files" : "Selecione ou solte arquivos",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Caminho errado, o arquivo ou pasta não existe",
"Cannot change permissions for public share links" : "Não foi possível alterar as permissões para links de compartilhamento público",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "O compartilhamento falhou ao enviar a senha ao Nextcloud Talk porque este não está ativado",
- "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não funcionar mais."
+ "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não funcionar mais.",
+ "Toggle grid view" : "Alternar visualização de grade"
},"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/ru.js b/apps/files_sharing/l10n/ru.js
index 524c4ad2b8f..1a004673f1c 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -236,7 +236,8 @@ OC.L10N.register(
"sharing is disabled" : "закрыт общий доступ",
"For more info, please ask the person who sent this link." : "Для получения дополнительной информации, свяжитесь с тем, кто отправил вам эту ссылку.",
"Share note" : "Комментарий к общему ресурсу",
- "Toggle grid view" : "Включить или отключить режим просмотра сеткой",
+ "Show list view" : "Просмотр списком",
+ "Show grid view" : "Просмотр сеткой",
"Upload files to %s" : "Загрузка файлов в %s",
"Note" : "Примечание",
"Select or drop files" : "Выберите или перетащите файлы",
@@ -248,6 +249,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Неверный путь, файл или каталог не существует",
"Cannot change permissions for public share links" : "Для общедоступных ссылок изменение прав невозможно",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа: приложение Nextcloud Talk отключено.",
- "Sorry, this link doesn’t seem to work anymore." : "Похоже, эта ссылка больше не работает."
+ "Sorry, this link doesn’t seem to work anymore." : "Похоже, эта ссылка больше не работает.",
+ "Toggle grid view" : "Включить или отключить режим просмотра сеткой"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index 4cea8b39d4c..3d6d15e5f7d 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -234,7 +234,8 @@
"sharing is disabled" : "закрыт общий доступ",
"For more info, please ask the person who sent this link." : "Для получения дополнительной информации, свяжитесь с тем, кто отправил вам эту ссылку.",
"Share note" : "Комментарий к общему ресурсу",
- "Toggle grid view" : "Включить или отключить режим просмотра сеткой",
+ "Show list view" : "Просмотр списком",
+ "Show grid view" : "Просмотр сеткой",
"Upload files to %s" : "Загрузка файлов в %s",
"Note" : "Примечание",
"Select or drop files" : "Выберите или перетащите файлы",
@@ -246,6 +247,7 @@
"Wrong path, file/folder doesn't exist" : "Неверный путь, файл или каталог не существует",
"Cannot change permissions for public share links" : "Для общедоступных ссылок изменение прав невозможно",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа: приложение Nextcloud Talk отключено.",
- "Sorry, this link doesn’t seem to work anymore." : "Похоже, эта ссылка больше не работает."
+ "Sorry, this link doesn’t seem to work anymore." : "Похоже, эта ссылка больше не работает.",
+ "Toggle grid view" : "Включить или отключить режим просмотра сеткой"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sc.js b/apps/files_sharing/l10n/sc.js
index 043729e698d..71eb56c5497 100644
--- a/apps/files_sharing/l10n/sc.js
+++ b/apps/files_sharing/l10n/sc.js
@@ -231,7 +231,6 @@ OC.L10N.register(
"sharing is disabled" : "sa cumpartzidura no est ativa",
"For more info, please ask the person who sent this link." : "Pro nde ischire de prus, dimanda a chie at imbiadu custu ligòngiu.",
"Share note" : "Cumpartzi sa nota",
- "Toggle grid view" : "Càmbia a visualizatzione in mosàicu",
"Upload files to %s" : "Càrriga archìvios in %s",
"Note" : "Nota",
"Select or drop files" : "Sèbera o iscapa archìvios",
@@ -243,6 +242,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Percursu isballiadu, s'archìviu/cartella no esistit",
"Cannot change permissions for public share links" : "Non faghet a cambiare is permissos pro is ligòngios de cumpartzidura pùblicos",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sa cumpartzidura cun s'imbiu de sa crae dae Nextcloud Talk est faddida ca Nextcloud Talk est disativadu",
- "Sorry, this link doesn’t seem to work anymore." : "Custu ligòngiu non funtzionat prus."
+ "Sorry, this link doesn’t seem to work anymore." : "Custu ligòngiu non funtzionat prus.",
+ "Toggle grid view" : "Càmbia a visualizatzione in mosàicu"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/sc.json b/apps/files_sharing/l10n/sc.json
index a0da26ded52..3f00873f0c2 100644
--- a/apps/files_sharing/l10n/sc.json
+++ b/apps/files_sharing/l10n/sc.json
@@ -229,7 +229,6 @@
"sharing is disabled" : "sa cumpartzidura no est ativa",
"For more info, please ask the person who sent this link." : "Pro nde ischire de prus, dimanda a chie at imbiadu custu ligòngiu.",
"Share note" : "Cumpartzi sa nota",
- "Toggle grid view" : "Càmbia a visualizatzione in mosàicu",
"Upload files to %s" : "Càrriga archìvios in %s",
"Note" : "Nota",
"Select or drop files" : "Sèbera o iscapa archìvios",
@@ -241,6 +240,7 @@
"Wrong path, file/folder doesn't exist" : "Percursu isballiadu, s'archìviu/cartella no esistit",
"Cannot change permissions for public share links" : "Non faghet a cambiare is permissos pro is ligòngios de cumpartzidura pùblicos",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sa cumpartzidura cun s'imbiu de sa crae dae Nextcloud Talk est faddida ca Nextcloud Talk est disativadu",
- "Sorry, this link doesn’t seem to work anymore." : "Custu ligòngiu non funtzionat prus."
+ "Sorry, this link doesn’t seem to work anymore." : "Custu ligòngiu non funtzionat prus.",
+ "Toggle grid view" : "Càmbia a visualizatzione in mosàicu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js
index 14410436df3..2b305fef4e8 100644
--- a/apps/files_sharing/l10n/sk.js
+++ b/apps/files_sharing/l10n/sk.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "sprístupňovanie je zakázané",
"For more info, please ask the person who sent this link." : "Pre viac informácií kontaktujte osobu, ktorá vám poslala tento odkaz.",
"Share note" : "Poznámka k zdieľaniu",
- "Toggle grid view" : "Prepnúť zobrazenie mriežky",
+ "Show list view" : "Zobraziť ako zoznam",
+ "Show grid view" : "Zobraziť v mriežke",
"Upload files to %s" : "Nahrať súbory do %s",
"Note" : "Poznámka",
"Select or drop files" : "Vyberte alebo položte súbory",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Neplatná cesta, súbor alebo priečinok neexistuje",
"Cannot change permissions for public share links" : "Nemožno zmeniť oprávnenia pre verejné sprístupnené odkazy",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Zdieľanie odoslaním hesla cez Nextcloud Talk zlyhalo, pretože Nextcloud Talk nie je zapnutý",
- "Sorry, this link doesn’t seem to work anymore." : "To je nepríjemné, ale tento odkaz už nie je funkčný."
+ "Sorry, this link doesn’t seem to work anymore." : "To je nepríjemné, ale tento odkaz už nie je funkčný.",
+ "Toggle grid view" : "Prepnúť zobrazenie mriežky"
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json
index 10b42a2adde..6ed734e3592 100644
--- a/apps/files_sharing/l10n/sk.json
+++ b/apps/files_sharing/l10n/sk.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "sprístupňovanie je zakázané",
"For more info, please ask the person who sent this link." : "Pre viac informácií kontaktujte osobu, ktorá vám poslala tento odkaz.",
"Share note" : "Poznámka k zdieľaniu",
- "Toggle grid view" : "Prepnúť zobrazenie mriežky",
+ "Show list view" : "Zobraziť ako zoznam",
+ "Show grid view" : "Zobraziť v mriežke",
"Upload files to %s" : "Nahrať súbory do %s",
"Note" : "Poznámka",
"Select or drop files" : "Vyberte alebo položte súbory",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Neplatná cesta, súbor alebo priečinok neexistuje",
"Cannot change permissions for public share links" : "Nemožno zmeniť oprávnenia pre verejné sprístupnené odkazy",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Zdieľanie odoslaním hesla cez Nextcloud Talk zlyhalo, pretože Nextcloud Talk nie je zapnutý",
- "Sorry, this link doesn’t seem to work anymore." : "To je nepríjemné, ale tento odkaz už nie je funkčný."
+ "Sorry, this link doesn’t seem to work anymore." : "To je nepríjemné, ale tento odkaz už nie je funkčný.",
+ "Toggle grid view" : "Prepnúť zobrazenie mriežky"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js
index f61802e853d..678cf41dc42 100644
--- a/apps/files_sharing/l10n/sl.js
+++ b/apps/files_sharing/l10n/sl.js
@@ -231,7 +231,8 @@ OC.L10N.register(
"sharing is disabled" : "souporaba je onemogočena.",
"For more info, please ask the person who sent this link." : "Za več podrobnosti stopite v stik s pošiljateljem te povezave.",
"Share note" : "Omogoči souporabo zabeležke",
- "Toggle grid view" : "Preklopi mrežni pogled",
+ "Show list view" : "Pokaži seznamski pogled",
+ "Show grid view" : "Pokaži mrežni pogled",
"Upload files to %s" : "Pošlji datoteke v račun %s",
"Note" : "Opomba",
"Select or drop files" : "Izberte ali povlecite datoteke",
@@ -243,6 +244,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Napačna pot; datoteka ali mapa ne obstaja",
"Cannot change permissions for public share links" : "Za javne povezave souporabe spreminjanje dovoljenj ni mogoče.",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Souporaba s pošiljanjem gesla prek programa Nextcloud Talk je spodletela, ker program Talk ni omogočen.",
- "Sorry, this link doesn’t seem to work anymore." : "Povezava očitno ni več v uporabi."
+ "Sorry, this link doesn’t seem to work anymore." : "Povezava očitno ni več v uporabi.",
+ "Toggle grid view" : "Preklopi mrežni pogled"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json
index 4c4a5c3f00b..d898c00f769 100644
--- a/apps/files_sharing/l10n/sl.json
+++ b/apps/files_sharing/l10n/sl.json
@@ -229,7 +229,8 @@
"sharing is disabled" : "souporaba je onemogočena.",
"For more info, please ask the person who sent this link." : "Za več podrobnosti stopite v stik s pošiljateljem te povezave.",
"Share note" : "Omogoči souporabo zabeležke",
- "Toggle grid view" : "Preklopi mrežni pogled",
+ "Show list view" : "Pokaži seznamski pogled",
+ "Show grid view" : "Pokaži mrežni pogled",
"Upload files to %s" : "Pošlji datoteke v račun %s",
"Note" : "Opomba",
"Select or drop files" : "Izberte ali povlecite datoteke",
@@ -241,6 +242,7 @@
"Wrong path, file/folder doesn't exist" : "Napačna pot; datoteka ali mapa ne obstaja",
"Cannot change permissions for public share links" : "Za javne povezave souporabe spreminjanje dovoljenj ni mogoče.",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Souporaba s pošiljanjem gesla prek programa Nextcloud Talk je spodletela, ker program Talk ni omogočen.",
- "Sorry, this link doesn’t seem to work anymore." : "Povezava očitno ni več v uporabi."
+ "Sorry, this link doesn’t seem to work anymore." : "Povezava očitno ni več v uporabi.",
+ "Toggle grid view" : "Preklopi mrežni pogled"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js
index 09527b62ca8..a79b0280e89 100644
--- a/apps/files_sharing/l10n/sr.js
+++ b/apps/files_sharing/l10n/sr.js
@@ -220,7 +220,6 @@ OC.L10N.register(
"sharing is disabled" : "дељење је искључено",
"For more info, please ask the person who sent this link." : "За више информација, питајте особу која вам је послала везу.",
"Share note" : "Белешка дељења",
- "Toggle grid view" : "Укључи/искључи приказ мреже",
"Upload files to %s" : "Отпремите фајлове на%s",
"Note" : "Белешка",
"Select or drop files" : "Одаберите или превуците фајлове",
@@ -231,6 +230,7 @@ OC.L10N.register(
"Wrong share ID, share doesn't exist" : "Погрешна идентификација дељења, дељење не постоји",
"Wrong path, file/folder doesn't exist" : "Погрешна путања, фајл/фасцикла не постоји",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен",
- "Sorry, this link doesn’t seem to work anymore." : "Нажалост, изгледа да веза више не ради."
+ "Sorry, this link doesn’t seem to work anymore." : "Нажалост, изгледа да веза више не ради.",
+ "Toggle grid view" : "Укључи/искључи приказ мреже"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json
index ba6029ce932..ce569261c94 100644
--- a/apps/files_sharing/l10n/sr.json
+++ b/apps/files_sharing/l10n/sr.json
@@ -218,7 +218,6 @@
"sharing is disabled" : "дељење је искључено",
"For more info, please ask the person who sent this link." : "За више информација, питајте особу која вам је послала везу.",
"Share note" : "Белешка дељења",
- "Toggle grid view" : "Укључи/искључи приказ мреже",
"Upload files to %s" : "Отпремите фајлове на%s",
"Note" : "Белешка",
"Select or drop files" : "Одаберите или превуците фајлове",
@@ -229,6 +228,7 @@
"Wrong share ID, share doesn't exist" : "Погрешна идентификација дељења, дељење не постоји",
"Wrong path, file/folder doesn't exist" : "Погрешна путања, фајл/фасцикла не постоји",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен",
- "Sorry, this link doesn’t seem to work anymore." : "Нажалост, изгледа да веза више не ради."
+ "Sorry, this link doesn’t seem to work anymore." : "Нажалост, изгледа да веза више не ради.",
+ "Toggle grid view" : "Укључи/искључи приказ мреже"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js
index c17a4301e04..3866644bb28 100644
--- a/apps/files_sharing/l10n/sv.js
+++ b/apps/files_sharing/l10n/sv.js
@@ -237,7 +237,6 @@ OC.L10N.register(
"sharing is disabled" : "delning är inaktiverat",
"For more info, please ask the person who sent this link." : "För mer information, kontakta den person som skickade den här länken.",
"Share note" : "Dela kommentar",
- "Toggle grid view" : "Växla rutnätsvy",
"Upload files to %s" : "Ladda upp filer till %s",
"Note" : "Anteckning",
"Select or drop files" : "Välj eller dra filer hit",
@@ -249,6 +248,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Fel sökväg, fil/mapp finns inte",
"Cannot change permissions for public share links" : "Kan inte ändra behörigheter för publika delningslänkar",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delning och skicka lösenordet via Nextcloud Talk går inte eftersom Nextcloud Talk är inte aktiverad",
- "Sorry, this link doesn’t seem to work anymore." : "Tyvärr, denna länk verkar inte fungera längre."
+ "Sorry, this link doesn’t seem to work anymore." : "Tyvärr, denna länk verkar inte fungera längre.",
+ "Toggle grid view" : "Växla rutnätsvy"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json
index b45d83a1f57..f99d0e40983 100644
--- a/apps/files_sharing/l10n/sv.json
+++ b/apps/files_sharing/l10n/sv.json
@@ -235,7 +235,6 @@
"sharing is disabled" : "delning är inaktiverat",
"For more info, please ask the person who sent this link." : "För mer information, kontakta den person som skickade den här länken.",
"Share note" : "Dela kommentar",
- "Toggle grid view" : "Växla rutnätsvy",
"Upload files to %s" : "Ladda upp filer till %s",
"Note" : "Anteckning",
"Select or drop files" : "Välj eller dra filer hit",
@@ -247,6 +246,7 @@
"Wrong path, file/folder doesn't exist" : "Fel sökväg, fil/mapp finns inte",
"Cannot change permissions for public share links" : "Kan inte ändra behörigheter för publika delningslänkar",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delning och skicka lösenordet via Nextcloud Talk går inte eftersom Nextcloud Talk är inte aktiverad",
- "Sorry, this link doesn’t seem to work anymore." : "Tyvärr, denna länk verkar inte fungera längre."
+ "Sorry, this link doesn’t seem to work anymore." : "Tyvärr, denna länk verkar inte fungera längre.",
+ "Toggle grid view" : "Växla rutnätsvy"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js
index 2c059c3a56f..7af72233742 100644
--- a/apps/files_sharing/l10n/tr.js
+++ b/apps/files_sharing/l10n/tr.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "paylaşım devre dışı bırakılmış",
"For more info, please ask the person who sent this link." : "Ayrıntılı bilgi almak için bu bağlantıyı aldığınız kişi ile görüşün.",
"Share note" : "Notu paylaş",
- "Toggle grid view" : "Tablo görünümünü değiştir",
+ "Show list view" : "Liste görünümüne geç",
+ "Show grid view" : "Tablo görünümüne geç",
"Upload files to %s" : "Dosyaları %s konumuna yükle",
"Note" : "Not",
"Select or drop files" : "Dosyaları seçin ya da sürükleyip bırakın",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "Yol yanlış. Dosya ya da klasör bulunamadı",
"Cannot change permissions for public share links" : "Herkese açık olarak paylaşılan bağlantıların erişim hakları değiştirilemez",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk etkinleştirilmemiş olduğundan, Nextcloud Talk ile paylaşım parolası gönderilemedi",
- "Sorry, this link doesn’t seem to work anymore." : "Ne yazık ki, bu bağlantı artık çalışmıyor gibi görünüyor."
+ "Sorry, this link doesn’t seem to work anymore." : "Ne yazık ki, bu bağlantı artık çalışmıyor gibi görünüyor.",
+ "Toggle grid view" : "Tablo görünümünü değiştir"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json
index 17fab18fc80..7c014a5f88c 100644
--- a/apps/files_sharing/l10n/tr.json
+++ b/apps/files_sharing/l10n/tr.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "paylaşım devre dışı bırakılmış",
"For more info, please ask the person who sent this link." : "Ayrıntılı bilgi almak için bu bağlantıyı aldığınız kişi ile görüşün.",
"Share note" : "Notu paylaş",
- "Toggle grid view" : "Tablo görünümünü değiştir",
+ "Show list view" : "Liste görünümüne geç",
+ "Show grid view" : "Tablo görünümüne geç",
"Upload files to %s" : "Dosyaları %s konumuna yükle",
"Note" : "Not",
"Select or drop files" : "Dosyaları seçin ya da sürükleyip bırakın",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "Yol yanlış. Dosya ya da klasör bulunamadı",
"Cannot change permissions for public share links" : "Herkese açık olarak paylaşılan bağlantıların erişim hakları değiştirilemez",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk etkinleştirilmemiş olduğundan, Nextcloud Talk ile paylaşım parolası gönderilemedi",
- "Sorry, this link doesn’t seem to work anymore." : "Ne yazık ki, bu bağlantı artık çalışmıyor gibi görünüyor."
+ "Sorry, this link doesn’t seem to work anymore." : "Ne yazık ki, bu bağlantı artık çalışmıyor gibi görünüyor.",
+ "Toggle grid view" : "Tablo görünümünü değiştir"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index 834c1ced5f1..db3575d2473 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -235,7 +235,8 @@ OC.L10N.register(
"sharing is disabled" : "已禁用共享",
"For more info, please ask the person who sent this link." : "欲知详情,请联系发给您该链接的人。",
"Share note" : "共享笔记",
- "Toggle grid view" : "切换网格视图",
+ "Show list view" : "显示列表视图",
+ "Show grid view" : "显示网格视图",
"Upload files to %s" : "上传文件到 %s",
"Note" : "备注",
"Select or drop files" : "选择或拖放文件",
@@ -247,6 +248,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "路径错误,文件或文件夹不存在",
"Cannot change permissions for public share links" : "无法更改公共共享链接的权限 ",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用,所以通过 Nextcloud Talk 发送共享密码失败。",
- "Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效。"
+ "Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效。",
+ "Toggle grid view" : "切换网格视图"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index faa9f4cc828..b6ebe5eeacc 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -233,7 +233,8 @@
"sharing is disabled" : "已禁用共享",
"For more info, please ask the person who sent this link." : "欲知详情,请联系发给您该链接的人。",
"Share note" : "共享笔记",
- "Toggle grid view" : "切换网格视图",
+ "Show list view" : "显示列表视图",
+ "Show grid view" : "显示网格视图",
"Upload files to %s" : "上传文件到 %s",
"Note" : "备注",
"Select or drop files" : "选择或拖放文件",
@@ -245,6 +246,7 @@
"Wrong path, file/folder doesn't exist" : "路径错误,文件或文件夹不存在",
"Cannot change permissions for public share links" : "无法更改公共共享链接的权限 ",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用,所以通过 Nextcloud Talk 发送共享密码失败。",
- "Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效。"
+ "Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效。",
+ "Toggle grid view" : "切换网格视图"
},"pluralForm" :"nplurals=1; plural=0;"
} \ 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 99ad9a5a457..cb5474e2760 100644
--- a/apps/files_sharing/l10n/zh_HK.js
+++ b/apps/files_sharing/l10n/zh_HK.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "分享功能已停用",
"For more info, please ask the person who sent this link." : "請詢問告訴您此連結的人以瞭解更多",
"Share note" : "分享筆記",
- "Toggle grid view" : "切換網格檢視",
+ "Show list view" : "顯示清單視圖",
+ "Show grid view" : "顯示網格視圖",
"Upload files to %s" : "上傳檔案到 %s",
"Note" : "筆記",
"Select or drop files" : "選擇或拖曳檔案至此",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "錯誤的路徑,該檔案或資料夾不存在",
"Cannot change permissions for public share links" : "無法由公開分享的連結變更權限",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "因為未啟用 Nextcloud Talk,因此透過 Nextcloud Talk 傳送密碼分享失敗",
- "Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效"
+ "Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效",
+ "Toggle grid view" : "切換網格檢視"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/zh_HK.json b/apps/files_sharing/l10n/zh_HK.json
index 356e190e205..c2877de4016 100644
--- a/apps/files_sharing/l10n/zh_HK.json
+++ b/apps/files_sharing/l10n/zh_HK.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "分享功能已停用",
"For more info, please ask the person who sent this link." : "請詢問告訴您此連結的人以瞭解更多",
"Share note" : "分享筆記",
- "Toggle grid view" : "切換網格檢視",
+ "Show list view" : "顯示清單視圖",
+ "Show grid view" : "顯示網格視圖",
"Upload files to %s" : "上傳檔案到 %s",
"Note" : "筆記",
"Select or drop files" : "選擇或拖曳檔案至此",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "錯誤的路徑,該檔案或資料夾不存在",
"Cannot change permissions for public share links" : "無法由公開分享的連結變更權限",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "因為未啟用 Nextcloud Talk,因此透過 Nextcloud Talk 傳送密碼分享失敗",
- "Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效"
+ "Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效",
+ "Toggle grid view" : "切換網格檢視"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js
index def4d4a1a16..7dd06561342 100644
--- a/apps/files_sharing/l10n/zh_TW.js
+++ b/apps/files_sharing/l10n/zh_TW.js
@@ -244,7 +244,8 @@ OC.L10N.register(
"sharing is disabled" : "分享功能已停用",
"For more info, please ask the person who sent this link." : "要取得更多資訊,請詢問傳送此連結給您的人。",
"Share note" : "分享訊息",
- "Toggle grid view" : "切換網格檢視",
+ "Show list view" : "顯示清單檢視",
+ "Show grid view" : "顯示網格檢視",
"Upload files to %s" : "上傳檔案到 %s",
"Note" : "筆記",
"Select or drop files" : "選取或拖曳檔案",
@@ -256,6 +257,7 @@ OC.L10N.register(
"Wrong path, file/folder doesn't exist" : "錯誤的路徑,該檔案或資料夾不存在",
"Cannot change permissions for public share links" : "無法變更公開分享連結的權限",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "因為未啟用 Nextcloud Talk,因此透過 Nextcloud Talk 傳送密碼分享失敗",
- "Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效"
+ "Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效",
+ "Toggle grid view" : "切換網格檢視"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json
index 66db1e765c7..2fad6a35187 100644
--- a/apps/files_sharing/l10n/zh_TW.json
+++ b/apps/files_sharing/l10n/zh_TW.json
@@ -242,7 +242,8 @@
"sharing is disabled" : "分享功能已停用",
"For more info, please ask the person who sent this link." : "要取得更多資訊,請詢問傳送此連結給您的人。",
"Share note" : "分享訊息",
- "Toggle grid view" : "切換網格檢視",
+ "Show list view" : "顯示清單檢視",
+ "Show grid view" : "顯示網格檢視",
"Upload files to %s" : "上傳檔案到 %s",
"Note" : "筆記",
"Select or drop files" : "選取或拖曳檔案",
@@ -254,6 +255,7 @@
"Wrong path, file/folder doesn't exist" : "錯誤的路徑,該檔案或資料夾不存在",
"Cannot change permissions for public share links" : "無法變更公開分享連結的權限",
"Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "因為未啟用 Nextcloud Talk,因此透過 Nextcloud Talk 傳送密碼分享失敗",
- "Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效"
+ "Sorry, this link doesn’t seem to work anymore." : "抱歉,此連結已經失效",
+ "Toggle grid view" : "切換網格檢視"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/lib/ExpireSharesJob.php b/apps/files_sharing/lib/ExpireSharesJob.php
index dd0979e4b0b..f5eb5856aea 100644
--- a/apps/files_sharing/lib/ExpireSharesJob.php
+++ b/apps/files_sharing/lib/ExpireSharesJob.php
@@ -85,7 +85,7 @@ class ExpireSharesJob extends TimedJob {
)
);
- $shares = $qb->execute();
+ $shares = $qb->executeQuery();
while ($share = $shares->fetch()) {
if ((int)$share['share_type'] === IShare::TYPE_LINK) {
$id = 'ocinternal';
diff --git a/apps/files_sharing/src/views/SharingTab.vue b/apps/files_sharing/src/views/SharingTab.vue
index d1174218b08..53e48dfa1e9 100644
--- a/apps/files_sharing/src/views/SharingTab.vue
+++ b/apps/files_sharing/src/views/SharingTab.vue
@@ -23,7 +23,7 @@
<template>
<div :class="{ 'icon-loading': loading }">
<!-- error message -->
- <div v-if="error" class="emptycontent">
+ <div v-if="error" class="emptycontent" :class="{ emptyContentWithSections: sections.length > 0 }">
<div class="icon icon-error" />
<h2>{{ error }}</h2>
</div>
@@ -73,15 +73,15 @@
:id="`${fileInfo.id}`"
type="file"
:name="fileInfo.name" />
-
- <!-- additionnal entries, use it with cautious -->
- <div v-for="(section, index) in sections"
- :ref="'section-' + index"
- :key="index"
- class="sharingTab__additionalContent">
- <component :is="section($refs['section-'+index], fileInfo)" :file-info="fileInfo" />
- </div>
</template>
+
+ <!-- additionnal entries, use it with cautious -->
+ <div v-for="(section, index) in sections"
+ :ref="'section-' + index"
+ :key="index"
+ class="sharingTab__additionalContent">
+ <component :is="section($refs['section-'+index], fileInfo)" :file-info="fileInfo" />
+ </div>
</div>
</template>
@@ -204,7 +204,11 @@ export default {
this.processSharedWithMe(sharedWithMe)
this.processShares(shares)
} catch (error) {
- this.error = t('files_sharing', 'Unable to load the shares list')
+ if (error.response.data?.ocs?.meta?.message) {
+ this.error = error.response.data.ocs.meta.message
+ } else {
+ this.error = t('files_sharing', 'Unable to load the shares list')
+ }
this.loading = false
console.error('Error loading the shares list', error)
}
@@ -353,3 +357,9 @@ export default {
},
}
</script>
+
+<style scoped lang="scss">
+.emptyContentWithSections {
+ margin: 1rem auto;
+}
+</style>
diff --git a/apps/files_trashbin/l10n/bg.js b/apps/files_trashbin/l10n/bg.js
index aaf98703baf..d3231afa88a 100644
--- a/apps/files_trashbin/l10n/bg.js
+++ b/apps/files_trashbin/l10n/bg.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Грешка при премахване на файла от кошчето",
"Error while restoring files from trashbin" : "Грешка при възстановяване на файлове от кошчето",
"Error while emptying trashbin" : "Грешка при изпразване кошчето",
- "Error while removing files from trashbin" : "Грешка при премахване на файлове от кошчето",
- "Deleted files and folders in the trash bin" : "Изтрити файлове и папки в кошчето за боклук"
+ "Error while removing files from trashbin" : "Грешка при премахване на файлове от кошчето"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/bg.json b/apps/files_trashbin/l10n/bg.json
index 082ed74d772..c635e11faa0 100644
--- a/apps/files_trashbin/l10n/bg.json
+++ b/apps/files_trashbin/l10n/bg.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "Грешка при премахване на файла от кошчето",
"Error while restoring files from trashbin" : "Грешка при възстановяване на файлове от кошчето",
"Error while emptying trashbin" : "Грешка при изпразване кошчето",
- "Error while removing files from trashbin" : "Грешка при премахване на файлове от кошчето",
- "Deleted files and folders in the trash bin" : "Изтрити файлове и папки в кошчето за боклук"
+ "Error while removing files from trashbin" : "Грешка при премахване на файлове от кошчето"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/ca.js b/apps/files_trashbin/l10n/ca.js
index 42e9de2d7a8..cf40c6e34e0 100644
--- a/apps/files_trashbin/l10n/ca.js
+++ b/apps/files_trashbin/l10n/ca.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "S'ha produït un error en suprimir el fitxer de la paperera",
"Error while restoring files from trashbin" : "S'ha produït un error en restaurar els fitxers de la paperera",
"Error while emptying trashbin" : "S'ha produït un error en buidar la paperera",
- "Error while removing files from trashbin" : "S'ha produït un error en suprimir els fitxers de la paperera",
- "Deleted files and folders in the trash bin" : "Fitxers i carpetes eliminats en la paperera"
+ "Error while removing files from trashbin" : "S'ha produït un error en suprimir els fitxers de la paperera"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/ca.json b/apps/files_trashbin/l10n/ca.json
index 2bfb7c1ced2..deb49344231 100644
--- a/apps/files_trashbin/l10n/ca.json
+++ b/apps/files_trashbin/l10n/ca.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "S'ha produït un error en suprimir el fitxer de la paperera",
"Error while restoring files from trashbin" : "S'ha produït un error en restaurar els fitxers de la paperera",
"Error while emptying trashbin" : "S'ha produït un error en buidar la paperera",
- "Error while removing files from trashbin" : "S'ha produït un error en suprimir els fitxers de la paperera",
- "Deleted files and folders in the trash bin" : "Fitxers i carpetes eliminats en la paperera"
+ "Error while removing files from trashbin" : "S'ha produït un error en suprimir els fitxers de la paperera"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/cs.js b/apps/files_trashbin/l10n/cs.js
index 37e37cfa8d3..d14057dc4ad 100644
--- a/apps/files_trashbin/l10n/cs.js
+++ b/apps/files_trashbin/l10n/cs.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Chyba při odebírání souboru z Koše",
"Error while restoring files from trashbin" : "Chyba při obnovování souborů z Koše",
"Error while emptying trashbin" : "Chyba při vyprazdňování Koše",
- "Error while removing files from trashbin" : "Chyba při odebírání souborů z Koše",
- "Deleted files and folders in the trash bin" : "Smazané soubory a složky v koši"
+ "Error while removing files from trashbin" : "Chyba při odebírání souborů z Koše"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/files_trashbin/l10n/cs.json b/apps/files_trashbin/l10n/cs.json
index 77e7152bf0d..bd9b642de38 100644
--- a/apps/files_trashbin/l10n/cs.json
+++ b/apps/files_trashbin/l10n/cs.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "Chyba při odebírání souboru z Koše",
"Error while restoring files from trashbin" : "Chyba při obnovování souborů z Koše",
"Error while emptying trashbin" : "Chyba při vyprazdňování Koše",
- "Error while removing files from trashbin" : "Chyba při odebírání souborů z Koše",
- "Deleted files and folders in the trash bin" : "Smazané soubory a složky v koši"
+ "Error while removing files from trashbin" : "Chyba při odebírání souborů z Koše"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/de.js b/apps/files_trashbin/l10n/de.js
index 6baaf23efa9..c74c14ab3c5 100644
--- a/apps/files_trashbin/l10n/de.js
+++ b/apps/files_trashbin/l10n/de.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Fehler beim Entfernen einer Datei aus dem Papierkorb",
"Error while restoring files from trashbin" : "Fehler beim Wiederherstellen von Dateien aus dem Papierkorb",
"Error while emptying trashbin" : "Fehler beim Leeren des Papierkorbs",
- "Error while removing files from trashbin" : "Fehler beim Entfernen von Dateien aus dem Papierkorb",
- "Deleted files and folders in the trash bin" : "Gelöschte Dateien und Ordner im Papierkorb"
+ "Error while removing files from trashbin" : "Fehler beim Entfernen von Dateien aus dem Papierkorb"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/de.json b/apps/files_trashbin/l10n/de.json
index 7ec3b4757d2..65a74d78ca7 100644
--- a/apps/files_trashbin/l10n/de.json
+++ b/apps/files_trashbin/l10n/de.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "Fehler beim Entfernen einer Datei aus dem Papierkorb",
"Error while restoring files from trashbin" : "Fehler beim Wiederherstellen von Dateien aus dem Papierkorb",
"Error while emptying trashbin" : "Fehler beim Leeren des Papierkorbs",
- "Error while removing files from trashbin" : "Fehler beim Entfernen von Dateien aus dem Papierkorb",
- "Deleted files and folders in the trash bin" : "Gelöschte Dateien und Ordner im Papierkorb"
+ "Error while removing files from trashbin" : "Fehler beim Entfernen von Dateien aus dem Papierkorb"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/de_DE.js b/apps/files_trashbin/l10n/de_DE.js
index 762872f11c0..42e65def06b 100644
--- a/apps/files_trashbin/l10n/de_DE.js
+++ b/apps/files_trashbin/l10n/de_DE.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Fehler beim Entfernen der Datei aus dem Papierkorb",
"Error while restoring files from trashbin" : "Fehler beim Wiederherstellen von Dateien aus dem Papierkorb",
"Error while emptying trashbin" : "Fehler beim Leeren des Papierkorbs",
- "Error while removing files from trashbin" : "Fehler beim Entfernen von Dateien aus dem Papierkorb",
- "Deleted files and folders in the trash bin" : "Gelöschte Dateien und Ordner im Papierkorb"
+ "Error while removing files from trashbin" : "Fehler beim Entfernen von Dateien aus dem Papierkorb"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/de_DE.json b/apps/files_trashbin/l10n/de_DE.json
index 0f185668f54..b87f8df21da 100644
--- a/apps/files_trashbin/l10n/de_DE.json
+++ b/apps/files_trashbin/l10n/de_DE.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "Fehler beim Entfernen der Datei aus dem Papierkorb",
"Error while restoring files from trashbin" : "Fehler beim Wiederherstellen von Dateien aus dem Papierkorb",
"Error while emptying trashbin" : "Fehler beim Leeren des Papierkorbs",
- "Error while removing files from trashbin" : "Fehler beim Entfernen von Dateien aus dem Papierkorb",
- "Deleted files and folders in the trash bin" : "Gelöschte Dateien und Ordner im Papierkorb"
+ "Error while removing files from trashbin" : "Fehler beim Entfernen von Dateien aus dem Papierkorb"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/es.js b/apps/files_trashbin/l10n/es.js
index 8ea610bfb51..15290761620 100644
--- a/apps/files_trashbin/l10n/es.js
+++ b/apps/files_trashbin/l10n/es.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Error al eliminar el archivo de la papelera",
"Error while restoring files from trashbin" : "Error al restaurar los archivos desde papelera",
"Error while emptying trashbin" : "Error al vaciar la papelera",
- "Error while removing files from trashbin" : "Error al eliminar los archivos de la papelera",
- "Deleted files and folders in the trash bin" : "Archivos y carpetas borrados en la papelera"
+ "Error while removing files from trashbin" : "Error al eliminar los archivos de la papelera"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_trashbin/l10n/es.json b/apps/files_trashbin/l10n/es.json
index 9dfe62cc2fc..3221a8b9427 100644
--- a/apps/files_trashbin/l10n/es.json
+++ b/apps/files_trashbin/l10n/es.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "Error al eliminar el archivo de la papelera",
"Error while restoring files from trashbin" : "Error al restaurar los archivos desde papelera",
"Error while emptying trashbin" : "Error al vaciar la papelera",
- "Error while removing files from trashbin" : "Error al eliminar los archivos de la papelera",
- "Deleted files and folders in the trash bin" : "Archivos y carpetas borrados en la papelera"
+ "Error while removing files from trashbin" : "Error al eliminar los archivos de la papelera"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/eu.js b/apps/files_trashbin/l10n/eu.js
index 77ba243ace8..3bbbc41b5b9 100644
--- a/apps/files_trashbin/l10n/eu.js
+++ b/apps/files_trashbin/l10n/eu.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Errore bat gertatu da fitxategia zakarrontzitik ezabatzean",
"Error while restoring files from trashbin" : "Errore bat gertatu da fitxategiak zakarrontzitik berrezartzean",
"Error while emptying trashbin" : "Errore bat gertatu da zakarrontzia hustutzean",
- "Error while removing files from trashbin" : "Errore bat gertatu da fitxategiak zakarrontzitik ezabatzean",
- "Deleted files and folders in the trash bin" : "Ezabatutako fitxategiak eta karpetak zakarrontzira"
+ "Error while removing files from trashbin" : "Errore bat gertatu da fitxategiak zakarrontzitik ezabatzean"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/eu.json b/apps/files_trashbin/l10n/eu.json
index b8135db75ae..0469ae1de87 100644
--- a/apps/files_trashbin/l10n/eu.json
+++ b/apps/files_trashbin/l10n/eu.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "Errore bat gertatu da fitxategia zakarrontzitik ezabatzean",
"Error while restoring files from trashbin" : "Errore bat gertatu da fitxategiak zakarrontzitik berrezartzean",
"Error while emptying trashbin" : "Errore bat gertatu da zakarrontzia hustutzean",
- "Error while removing files from trashbin" : "Errore bat gertatu da fitxategiak zakarrontzitik ezabatzean",
- "Deleted files and folders in the trash bin" : "Ezabatutako fitxategiak eta karpetak zakarrontzira"
+ "Error while removing files from trashbin" : "Errore bat gertatu da fitxategiak zakarrontzitik ezabatzean"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/fi.js b/apps/files_trashbin/l10n/fi.js
index 2f03ab33072..eede7fcc9bd 100644
--- a/apps/files_trashbin/l10n/fi.js
+++ b/apps/files_trashbin/l10n/fi.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Virhe poistaessa tiedostoa roskakorista",
"Error while restoring files from trashbin" : "Virhe palauttaessa tiedostoja roskakorista",
"Error while emptying trashbin" : "Virhe tyhjentäessä roskakoria",
- "Error while removing files from trashbin" : "Virhe poistaessa tiedostoja roskakorista",
- "Deleted files and folders in the trash bin" : "Poistetut tiedostot ja kansiot roskakorissa"
+ "Error while removing files from trashbin" : "Virhe poistaessa tiedostoja roskakorista"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/fi.json b/apps/files_trashbin/l10n/fi.json
index 98a0eaea7a6..060fffc918f 100644
--- a/apps/files_trashbin/l10n/fi.json
+++ b/apps/files_trashbin/l10n/fi.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "Virhe poistaessa tiedostoa roskakorista",
"Error while restoring files from trashbin" : "Virhe palauttaessa tiedostoja roskakorista",
"Error while emptying trashbin" : "Virhe tyhjentäessä roskakoria",
- "Error while removing files from trashbin" : "Virhe poistaessa tiedostoja roskakorista",
- "Deleted files and folders in the trash bin" : "Poistetut tiedostot ja kansiot roskakorissa"
+ "Error while removing files from trashbin" : "Virhe poistaessa tiedostoja roskakorista"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/fr.js b/apps/files_trashbin/l10n/fr.js
index f8e29a54595..1cffa2cc125 100644
--- a/apps/files_trashbin/l10n/fr.js
+++ b/apps/files_trashbin/l10n/fr.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Erreur lors de la suppression du fichier de la corbeille",
"Error while restoring files from trashbin" : "Erreur lors de la restauration des fichiers de la corbeille",
"Error while emptying trashbin" : "Erreur lors du vidage de la corbeille",
- "Error while removing files from trashbin" : "Erreur lors de la suppression des fichiers de la corbeille",
- "Deleted files and folders in the trash bin" : "Fichiers et dossiers supprimés dans la corbeille"
+ "Error while removing files from trashbin" : "Erreur lors de la suppression des fichiers de la corbeille"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_trashbin/l10n/fr.json b/apps/files_trashbin/l10n/fr.json
index dbd798fbaa4..0ced8718473 100644
--- a/apps/files_trashbin/l10n/fr.json
+++ b/apps/files_trashbin/l10n/fr.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "Erreur lors de la suppression du fichier de la corbeille",
"Error while restoring files from trashbin" : "Erreur lors de la restauration des fichiers de la corbeille",
"Error while emptying trashbin" : "Erreur lors du vidage de la corbeille",
- "Error while removing files from trashbin" : "Erreur lors de la suppression des fichiers de la corbeille",
- "Deleted files and folders in the trash bin" : "Fichiers et dossiers supprimés dans la corbeille"
+ "Error while removing files from trashbin" : "Erreur lors de la suppression des fichiers de la corbeille"
},"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_trashbin/l10n/gl.js b/apps/files_trashbin/l10n/gl.js
index 88bed0c8c25..fb796fbcf86 100644
--- a/apps/files_trashbin/l10n/gl.js
+++ b/apps/files_trashbin/l10n/gl.js
@@ -21,7 +21,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Produciuse un erro ao retirar o ficheiro do lixo",
"Error while restoring files from trashbin" : "Produciuse un erro ao recuperar os ficheiros do lixo",
"Error while emptying trashbin" : "Produciuse un erro ao baleirar o lixo",
- "Error while removing files from trashbin" : "Produciuse un erro ao retirar os ficheiro do lixo",
- "Deleted files and folders in the trash bin" : "Ficheiros e cartafoles eliminados no lixo"
+ "Error while removing files from trashbin" : "Produciuse un erro ao retirar os ficheiro do lixo"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/gl.json b/apps/files_trashbin/l10n/gl.json
index e0f42c4b2a9..3860ea3aedb 100644
--- a/apps/files_trashbin/l10n/gl.json
+++ b/apps/files_trashbin/l10n/gl.json
@@ -19,7 +19,6 @@
"Error while removing file from trashbin" : "Produciuse un erro ao retirar o ficheiro do lixo",
"Error while restoring files from trashbin" : "Produciuse un erro ao recuperar os ficheiros do lixo",
"Error while emptying trashbin" : "Produciuse un erro ao baleirar o lixo",
- "Error while removing files from trashbin" : "Produciuse un erro ao retirar os ficheiro do lixo",
- "Deleted files and folders in the trash bin" : "Ficheiros e cartafoles eliminados no lixo"
+ "Error while removing files from trashbin" : "Produciuse un erro ao retirar os ficheiro do lixo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/hu.js b/apps/files_trashbin/l10n/hu.js
index fb6273365c8..34035f0484d 100644
--- a/apps/files_trashbin/l10n/hu.js
+++ b/apps/files_trashbin/l10n/hu.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Hiba a fájl kukából történő eltávolításakor",
"Error while restoring files from trashbin" : "Hiba a fájlok kukából történő visszaállításakor",
"Error while emptying trashbin" : "Hiba a kuka ürítésekor",
- "Error while removing files from trashbin" : "Hiba a fájlok kukából történő eltávolításakor",
- "Deleted files and folders in the trash bin" : "Kukában lévő törölt fájlok és mappák"
+ "Error while removing files from trashbin" : "Hiba a fájlok kukából történő eltávolításakor"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/hu.json b/apps/files_trashbin/l10n/hu.json
index 7108dc724ce..ce44e92f0d0 100644
--- a/apps/files_trashbin/l10n/hu.json
+++ b/apps/files_trashbin/l10n/hu.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "Hiba a fájl kukából történő eltávolításakor",
"Error while restoring files from trashbin" : "Hiba a fájlok kukából történő visszaállításakor",
"Error while emptying trashbin" : "Hiba a kuka ürítésekor",
- "Error while removing files from trashbin" : "Hiba a fájlok kukából történő eltávolításakor",
- "Deleted files and folders in the trash bin" : "Kukában lévő törölt fájlok és mappák"
+ "Error while removing files from trashbin" : "Hiba a fájlok kukából történő eltávolításakor"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/it.js b/apps/files_trashbin/l10n/it.js
index bc3b6dbe491..bcd75e14803 100644
--- a/apps/files_trashbin/l10n/it.js
+++ b/apps/files_trashbin/l10n/it.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Errore durante la rimozione del file dal cestino",
"Error while restoring files from trashbin" : "Errore durante il ripristino dei file dal cestino",
"Error while emptying trashbin" : "Errore durante lo svuotamento del cestino",
- "Error while removing files from trashbin" : "Errore durante la rimozione dei file dal cestino",
- "Deleted files and folders in the trash bin" : "Cartelle e files cancellati nel cestino"
+ "Error while removing files from trashbin" : "Errore durante la rimozione dei file dal cestino"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_trashbin/l10n/it.json b/apps/files_trashbin/l10n/it.json
index 73ba4fceae5..741d5a65a05 100644
--- a/apps/files_trashbin/l10n/it.json
+++ b/apps/files_trashbin/l10n/it.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "Errore durante la rimozione del file dal cestino",
"Error while restoring files from trashbin" : "Errore durante il ripristino dei file dal cestino",
"Error while emptying trashbin" : "Errore durante lo svuotamento del cestino",
- "Error while removing files from trashbin" : "Errore durante la rimozione dei file dal cestino",
- "Deleted files and folders in the trash bin" : "Cartelle e files cancellati nel cestino"
+ "Error while removing files from trashbin" : "Errore durante la rimozione dei file dal cestino"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/ja.js b/apps/files_trashbin/l10n/ja.js
index edd71a16334..12762e65122 100644
--- a/apps/files_trashbin/l10n/ja.js
+++ b/apps/files_trashbin/l10n/ja.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "ごみ箱からファイルを削除中にエラーが発生しました",
"Error while restoring files from trashbin" : "ごみ箱からファイルを復元する際のエラー",
"Error while emptying trashbin" : "ごみ箱を空にする際にエラーが発生",
- "Error while removing files from trashbin" : "ごみ箱からファイルを削除中にエラーが発生しました",
- "Deleted files and folders in the trash bin" : "ゴミ箱内の削除されたファイルやフォルダー"
+ "Error while removing files from trashbin" : "ごみ箱からファイルを削除中にエラーが発生しました"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_trashbin/l10n/ja.json b/apps/files_trashbin/l10n/ja.json
index da254104e54..8c0d34fa865 100644
--- a/apps/files_trashbin/l10n/ja.json
+++ b/apps/files_trashbin/l10n/ja.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "ごみ箱からファイルを削除中にエラーが発生しました",
"Error while restoring files from trashbin" : "ごみ箱からファイルを復元する際のエラー",
"Error while emptying trashbin" : "ごみ箱を空にする際にエラーが発生",
- "Error while removing files from trashbin" : "ごみ箱からファイルを削除中にエラーが発生しました",
- "Deleted files and folders in the trash bin" : "ゴミ箱内の削除されたファイルやフォルダー"
+ "Error while removing files from trashbin" : "ごみ箱からファイルを削除中にエラーが発生しました"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/nb.js b/apps/files_trashbin/l10n/nb.js
index ece2561cdb6..718ef5a0bc7 100644
--- a/apps/files_trashbin/l10n/nb.js
+++ b/apps/files_trashbin/l10n/nb.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Feil ved fjerning av fil fra søppelbøtten",
"Error while restoring files from trashbin" : "Feil ved gjenoppretting av filer fra søppelbøtten",
"Error while emptying trashbin" : "Feil ved tømming av søppelbøtten",
- "Error while removing files from trashbin" : "Feil ved fjerning av filer fra søppelbøtten",
- "Deleted files and folders in the trash bin" : "Slettede filer og mapper i søppelkassen"
+ "Error while removing files from trashbin" : "Feil ved fjerning av filer fra søppelbøtten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/nb.json b/apps/files_trashbin/l10n/nb.json
index 4175ca2fa51..949b6b7bba2 100644
--- a/apps/files_trashbin/l10n/nb.json
+++ b/apps/files_trashbin/l10n/nb.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "Feil ved fjerning av fil fra søppelbøtten",
"Error while restoring files from trashbin" : "Feil ved gjenoppretting av filer fra søppelbøtten",
"Error while emptying trashbin" : "Feil ved tømming av søppelbøtten",
- "Error while removing files from trashbin" : "Feil ved fjerning av filer fra søppelbøtten",
- "Deleted files and folders in the trash bin" : "Slettede filer og mapper i søppelkassen"
+ "Error while removing files from trashbin" : "Feil ved fjerning av filer fra søppelbøtten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/pl.js b/apps/files_trashbin/l10n/pl.js
index bad1b53ce78..ec09f3982b9 100644
--- a/apps/files_trashbin/l10n/pl.js
+++ b/apps/files_trashbin/l10n/pl.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Błąd podczas usuwania pliku z kosza",
"Error while restoring files from trashbin" : "Błąd podczas przywracania plików z kosza",
"Error while emptying trashbin" : "Błąd podczas opróżniania kosza",
- "Error while removing files from trashbin" : "Błąd podczas usuwania plików z kosza",
- "Deleted files and folders in the trash bin" : "Usunięte pliki i katalogi w koszu"
+ "Error while removing files from trashbin" : "Błąd podczas usuwania plików z kosza"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/files_trashbin/l10n/pl.json b/apps/files_trashbin/l10n/pl.json
index d4d8341bda3..5cc82dedf86 100644
--- a/apps/files_trashbin/l10n/pl.json
+++ b/apps/files_trashbin/l10n/pl.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "Błąd podczas usuwania pliku z kosza",
"Error while restoring files from trashbin" : "Błąd podczas przywracania plików z kosza",
"Error while emptying trashbin" : "Błąd podczas opróżniania kosza",
- "Error while removing files from trashbin" : "Błąd podczas usuwania plików z kosza",
- "Deleted files and folders in the trash bin" : "Usunięte pliki i katalogi w koszu"
+ "Error while removing files from trashbin" : "Błąd podczas usuwania plików z kosza"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/pt_BR.js b/apps/files_trashbin/l10n/pt_BR.js
index 93a13ebc22f..ef73b9628a6 100644
--- a/apps/files_trashbin/l10n/pt_BR.js
+++ b/apps/files_trashbin/l10n/pt_BR.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Erro ao remover arquivo da lixeira",
"Error while restoring files from trashbin" : "Erro ao restaurar arquivos da lixeira",
"Error while emptying trashbin" : "Erro ao esvaziar a lixeira",
- "Error while removing files from trashbin" : "Erro ao remover arquivos da lixeira",
- "Deleted files and folders in the trash bin" : "Arquivos e pastas excluídos na lixeira"
+ "Error while removing files from trashbin" : "Erro ao remover arquivos da lixeira"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_trashbin/l10n/pt_BR.json b/apps/files_trashbin/l10n/pt_BR.json
index 1f30c4b459b..7259d381cea 100644
--- a/apps/files_trashbin/l10n/pt_BR.json
+++ b/apps/files_trashbin/l10n/pt_BR.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "Erro ao remover arquivo da lixeira",
"Error while restoring files from trashbin" : "Erro ao restaurar arquivos da lixeira",
"Error while emptying trashbin" : "Erro ao esvaziar a lixeira",
- "Error while removing files from trashbin" : "Erro ao remover arquivos da lixeira",
- "Deleted files and folders in the trash bin" : "Arquivos e pastas excluídos na lixeira"
+ "Error while removing files from trashbin" : "Erro ao remover arquivos da lixeira"
},"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_trashbin/l10n/sk.js b/apps/files_trashbin/l10n/sk.js
index 5b58ec39fb9..4f954e1ef55 100644
--- a/apps/files_trashbin/l10n/sk.js
+++ b/apps/files_trashbin/l10n/sk.js
@@ -26,7 +26,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Chyba pri mazaní súboru z koša",
"Error while restoring files from trashbin" : "Chyba pri obnovovaní súborov z koša",
"Error while emptying trashbin" : "Chyba pri vysypávaní koša",
- "Error while removing files from trashbin" : "Chyba pri mazaní súborov z koša",
- "Deleted files and folders in the trash bin" : "Vymazané súbory a priečinky v koši"
+ "Error while removing files from trashbin" : "Chyba pri mazaní súborov z koša"
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/files_trashbin/l10n/sk.json b/apps/files_trashbin/l10n/sk.json
index 149b07b7c9d..f3c621a3f86 100644
--- a/apps/files_trashbin/l10n/sk.json
+++ b/apps/files_trashbin/l10n/sk.json
@@ -24,7 +24,6 @@
"Error while removing file from trashbin" : "Chyba pri mazaní súboru z koša",
"Error while restoring files from trashbin" : "Chyba pri obnovovaní súborov z koša",
"Error while emptying trashbin" : "Chyba pri vysypávaní koša",
- "Error while removing files from trashbin" : "Chyba pri mazaní súborov z koša",
- "Deleted files and folders in the trash bin" : "Vymazané súbory a priečinky v koši"
+ "Error while removing files from trashbin" : "Chyba pri mazaní súborov z koša"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/tr.js b/apps/files_trashbin/l10n/tr.js
index f7e7f553cdb..b188175db4e 100644
--- a/apps/files_trashbin/l10n/tr.js
+++ b/apps/files_trashbin/l10n/tr.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "Dosya çöp kutusundan silinirken sorun çıktı",
"Error while restoring files from trashbin" : "Dosyalar çöp kutusundan geri yüklenirken sorun çıktı",
"Error while emptying trashbin" : "Çöp kutusu boşaltılırken sorun çıktı",
- "Error while removing files from trashbin" : "Dosyalar çöp kutusundan silinirken sorun çıktı",
- "Deleted files and folders in the trash bin" : "Çöp kutusundaki silinmiş dosya ve klasörler"
+ "Error while removing files from trashbin" : "Dosyalar çöp kutusundan silinirken sorun çıktı"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_trashbin/l10n/tr.json b/apps/files_trashbin/l10n/tr.json
index 998588e4efb..b20c70b0c14 100644
--- a/apps/files_trashbin/l10n/tr.json
+++ b/apps/files_trashbin/l10n/tr.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "Dosya çöp kutusundan silinirken sorun çıktı",
"Error while restoring files from trashbin" : "Dosyalar çöp kutusundan geri yüklenirken sorun çıktı",
"Error while emptying trashbin" : "Çöp kutusu boşaltılırken sorun çıktı",
- "Error while removing files from trashbin" : "Dosyalar çöp kutusundan silinirken sorun çıktı",
- "Deleted files and folders in the trash bin" : "Çöp kutusundaki silinmiş dosya ve klasörler"
+ "Error while removing files from trashbin" : "Dosyalar çöp kutusundan silinirken sorun çıktı"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/zh_HK.js b/apps/files_trashbin/l10n/zh_HK.js
index 710b11488d7..bec367e27b2 100644
--- a/apps/files_trashbin/l10n/zh_HK.js
+++ b/apps/files_trashbin/l10n/zh_HK.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "從回收桶刪除檔案發生錯誤",
"Error while restoring files from trashbin" : "從回收桶回復檔案發生錯誤",
"Error while emptying trashbin" : "清空回收桶發生錯誤",
- "Error while removing files from trashbin" : "從回收桶刪除檔案發生錯誤",
- "Deleted files and folders in the trash bin" : "已刪除垃圾箱中的檔案和資料夾"
+ "Error while removing files from trashbin" : "從回收桶刪除檔案發生錯誤"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_trashbin/l10n/zh_HK.json b/apps/files_trashbin/l10n/zh_HK.json
index 3be7c32b563..7520c6baaa3 100644
--- a/apps/files_trashbin/l10n/zh_HK.json
+++ b/apps/files_trashbin/l10n/zh_HK.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "從回收桶刪除檔案發生錯誤",
"Error while restoring files from trashbin" : "從回收桶回復檔案發生錯誤",
"Error while emptying trashbin" : "清空回收桶發生錯誤",
- "Error while removing files from trashbin" : "從回收桶刪除檔案發生錯誤",
- "Deleted files and folders in the trash bin" : "已刪除垃圾箱中的檔案和資料夾"
+ "Error while removing files from trashbin" : "從回收桶刪除檔案發生錯誤"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/zh_TW.js b/apps/files_trashbin/l10n/zh_TW.js
index 1c48bdc6189..069097c3876 100644
--- a/apps/files_trashbin/l10n/zh_TW.js
+++ b/apps/files_trashbin/l10n/zh_TW.js
@@ -27,7 +27,6 @@ OC.L10N.register(
"Error while removing file from trashbin" : "從回收桶刪除檔案時發生錯誤",
"Error while restoring files from trashbin" : "從回收桶回復檔案時發生錯誤",
"Error while emptying trashbin" : "清空回收桶時發生錯誤",
- "Error while removing files from trashbin" : "從回收桶刪除檔案時發生錯誤",
- "Deleted files and folders in the trash bin" : "已刪除回收桶的檔案與資料夾"
+ "Error while removing files from trashbin" : "從回收桶刪除檔案時發生錯誤"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_trashbin/l10n/zh_TW.json b/apps/files_trashbin/l10n/zh_TW.json
index 74515367256..911d2257603 100644
--- a/apps/files_trashbin/l10n/zh_TW.json
+++ b/apps/files_trashbin/l10n/zh_TW.json
@@ -25,7 +25,6 @@
"Error while removing file from trashbin" : "從回收桶刪除檔案時發生錯誤",
"Error while restoring files from trashbin" : "從回收桶回復檔案時發生錯誤",
"Error while emptying trashbin" : "清空回收桶時發生錯誤",
- "Error while removing files from trashbin" : "從回收桶刪除檔案時發生錯誤",
- "Deleted files and folders in the trash bin" : "已刪除回收桶的檔案與資料夾"
+ "Error while removing files from trashbin" : "從回收桶刪除檔案時發生錯誤"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php b/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php
index 9c0334aa2f3..70338a469d3 100644
--- a/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php
+++ b/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php
@@ -176,6 +176,6 @@ class TrashbinMigrator implements IMigrator, ISizeEstimationMigrator {
* {@inheritDoc}
*/
public function getDescription(): string {
- return $this->l10n->t('Deleted files and folders in the trash bin');
+ return $this->l10n->t('Deleted files and folders in the trash bin (may expire during export if you are low on storage space)');
}
}
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index a26479ba0a8..839ac404c94 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -837,7 +837,9 @@ class UsersController extends AUserData {
switch ($key) {
case self::USER_FIELD_DISPLAYNAME:
case IAccountManager::PROPERTY_DISPLAYNAME:
- $targetUser->setDisplayName($value);
+ if (!$targetUser->setDisplayName($value)) {
+ throw new OCSException('Invalid displayname', 102);
+ }
break;
case self::USER_FIELD_QUOTA:
$quota = $value;
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
index 6162be54a04..4449302fedd 100644
--- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
@@ -1486,7 +1486,8 @@ class UsersControllerTest extends TestCase {
$targetUser
->expects($this->once())
->method('setDisplayName')
- ->with('NewDisplayName');
+ ->with('NewDisplayName')
+ ->willReturn(true);
$targetUser
->expects($this->any())
->method('getUID')
diff --git a/apps/settings/js/federationsettingsview.js b/apps/settings/js/federationsettingsview.js
index 9eb0b930733..e05cc9f20f4 100644
--- a/apps/settings/js/federationsettingsview.js
+++ b/apps/settings/js/federationsettingsview.js
@@ -128,7 +128,8 @@
_.each(this._inputFields, function(field) {
if (
field === 'avatar' ||
- field === 'email'
+ field === 'email' ||
+ field === 'displayname'
) {
return;
}
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index ea2ec2de644..d31b950571d 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -43,6 +43,7 @@ OC.L10N.register(
"You changed your email address" : "Вы изменили свой адрес электронной почты",
"Your email address was changed by an administrator" : "Ваш адрес электронной почты был изменён администратором",
"You created app password \"{token}\"" : "Вы создали пароль приложения «{token}»",
+ "An administrator created app password \"{token}\"" : "Администратор создал пароль приложения «{token}»",
"You deleted app password \"{token}\"" : "Вы удалили пароль приложения «{token}»",
"You renamed app password \"{token}\" to \"{newToken}\"" : "Вы переименовали пароль приложения «{token}» в «{newToken}»",
"You granted filesystem access to app password \"{token}\"" : "Вы разрешили доступ к файлам приложению «{token}»",
@@ -53,6 +54,8 @@ OC.L10N.register(
"Remote wipe was started on %1$s" : "Инициировано удаление данных с устройства %1$s",
"Remote wipe has finished on %1$s" : "Завершено удаление данных с устройства %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> или <strong>адрес электронной почты</strong> были изменены",
+ "Could not remove app." : "Не удалось удалить приложение.",
+ "Could not update app." : "Не удалось обновить приложение.",
"Wrong password" : "Неверный пароль",
"Unable to change personal password" : "Невозможность изменить личный пароль",
"Saved" : "Сохранено",
@@ -60,16 +63,22 @@ OC.L10N.register(
"Authentication error" : "Ошибка аутентификации",
"Please provide an admin recovery password; otherwise, all user data will be lost." : "Введите пароль восстановления администратора, в противном случае все пользовательские данные будут утеряны.",
"Wrong admin recovery password. Please check the password and try again." : "Неправильный пароль восстановления администратора. Проверьте пароль и попробуйте еще раз.",
+ "Backend does not support password change, but the user's encryption key was updated." : "Используемый механизм не поддерживает смену паролей, но пользовательский ключ шифрования был обновлён.",
"installing and updating apps via the App Store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ",
"Federated Cloud Sharing" : "Межсерверный обмен",
"cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL использует %1$s устаревшей версии %2$s. Обновите операционную систему, иначе такие возможности, как %3$s, не будут работать корректно.",
- "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Модуль PHP OPcache не загружен. Для повышения производительности рекомендуется загрузить его в вашу установку PHP.",
+ "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Невозможно определить устарела ли версия TLS адреса cURL, потому что произошла ошибка при обработке HTTPS запроса к https://nextcloud.com. Пожалуйста, проверьте ошибки в файле журнала Nextcloud.",
+ "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Модуль OPcache подсистемы PHP не загружен. Для повышения производительности рекомендуется его установить.",
+ "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "Механизм OPcache отключён. Для гарантированного улучшения производительности рекомендуется в файле конфигурации подсистемы PHP добавить строку <code>opcache.enable=1</code>.",
+ "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "Модуль OPcache настроен таким образом, что производит удаление комментариев кода. При использовании OPcache в Nextcloud необходимо использовать параметр <code>opcache.save_comments=1</code>.",
+ "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Буфер OPcache близок к переполнению. Для гарантированного сохранения всех сценариев в кэш-памяти рекомендуется в файле конфигурации подсистемы PHP установить параметру <code>opcache.memory_consumption</code> значении более чем <code>%s</code>.",
"Invalid SMTP password." : "Неверный пароль SMTP.",
"Email setting test" : "Проверка настроек электронной почты",
"Well done, %s!" : "Отлично, %s!",
"If you received this email, the email configuration seems to be correct." : "Если вы получили это сообщение, значит электронная почта настроена правильно.",
"Email could not be sent. Check your mail server log" : "Не удалось отправить сообщение электронной почты. Проверьте журнал ошибок почтового сервера",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Во время отправки письма произошла ошибка. Пожалуйста проверьте настройки. (Ошибка: %s)",
+ "You need to set your user email before being able to send test emails. Go to %s for that." : "Перед отправкой тестового сообщения необходимо настроить параметры электронной почты. Перейти в %s.",
"Invalid user" : "Неверный пользователь",
"Invalid mail address" : "Некорректный адрес электронной почты",
"Settings saved" : "Настройки сохранены",
@@ -124,7 +133,13 @@ OC.L10N.register(
"Verifying" : "Проверка",
"A background job is pending that checks for user imported SSL certificates. Please check back later." : "Запланировано фоновое задание проверки пользовательских SSL сертификатов. Пожалуйста, проверьте позже.",
"There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Обнаружены пользовательские сертификаты SSL, которые более не используются с Nextcloud 21. Их можно импортировать командой \"occ security:certificates:import\". Их расположение в папке с данными показаны ниже.",
+ "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Обнаружены некорректные идентификаторы UUID пользователей или групп LDAP. Для их обновления обратите внимание на параметр «Переопределять определение UUID» в разделе экспертных настроек протокола LDAP и запустите в консоли команду «occ ldap:update-uuid».",
"The old server-side-encryption format is enabled. We recommend disabling this." : "Задействован устаревший режим шифрования файлов на стороне сервера. Рекомендуется отключить такое шифрование.",
+ "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Используется MariaDB версии %s. В Nextcloud версии 21 эта версия не поддерживается, а для работы требуется MariaDB версии 10.2 или старше.",
+ "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Используется mySQL версии %s. В Nextcloud версии 21 эта версия не поддерживается, а для работы требуется MySQL версии 8 или MariaDB 10.2 или старше.",
+ "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Используется PostgreSQL версии %s. В Nextcloud версии 21 эта версия не поддерживается, а для работы требуется PostgreSQL версии 9.6 или старше.",
+ "Profile information" : "Сведения о профиле",
+ "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Изображение профиля, полное имя, адрес электронной почты, номер телефона, адрес, веб-сайт, Twitter, организация, роль, заголовок, биография и сведения том, активен ли профиль",
"Nextcloud settings" : "Параметры Nextcloud",
"Administration privileges" : "Администрирование",
"Here you can decide which group can access certain sections of the administration settings." : "Здесь вы можете решить, какая группа может получить доступ к определенным разделам настроек администрирования.",
@@ -161,11 +176,13 @@ OC.L10N.register(
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Рекомендованные приложения разработаны совместно с сообществом. Эти приложения обеспечивают основной функционал и готовы для использования в рабочих системах.",
"Featured" : "Рекомендуемые",
"Update to {update}" : "Обновить до {update}",
+ "All apps are up-to-date." : "Обновления приложений отсутствуют.",
"Results from other categories" : "Результаты из других категорий",
"No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено",
"Disable all" : "Отключить все",
"Enable all" : "Включить все",
"_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить%n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."],
+ "_Update_::_Update all_" : ["Обновить","Обновить все","Обновить все","Обновить все"],
"Marked for remote wipe" : "Помечено для удаления данных",
"Device settings" : "Параметры устройства",
"Allow filesystem access" : "Разрешить доступ к файлам",
@@ -209,9 +226,23 @@ OC.L10N.register(
"Copied!" : "Скопировано!",
"Copy" : "Копировать",
"Could not copy app password. Please copy it manually." : "Не удалось скопировать пароль приложения. Пожалуйста, скопируйте его вручную.",
+ "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Для правильной работы сервера Nextcloud важно правильно настроить выполнение задач в фоновом режиме. Рекомендуемым вариантом запуска фоновых задач является использование планировщика Cron. Обратитесь к документации для получения дополнительной информации.",
+ "Last job execution ran {time}. Something seems wrong." : "Последнее задание было выполнено {time}. Похоже, что-то не в порядке.",
+ "Last job ran {relativeTime}." : "Последнее задание было запущено {relativeTime}.",
+ "Background job did not run yet!" : "Фоновые задания ещё не выполнялись.",
+ "AJAX" : "AJAX",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Запуск одного задания при загрузке каждой страницы. Вариант использования: сервер для одного пользователя.",
+ "Webcron" : "Webcron",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "Использовать службу webcron для запуска зарегистрированного файла «cron.php» каждые 5 минут с использованием протокола HTTPS. Вариант использования: сервер для количества пользователей от одного до пяти.",
+ "Cron (Recommended)" : "Cron (рекомендуется)",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Для запуска требуется расширение POSIX для PHP. Обратитесь к {linkstart}документации по PHP{linkend} для получения дополнительной информации.",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Использовать системную службу запуска задач cron для запуска файла «cron.php» каждые 5 минут. Рекомендованый вариант.",
+ "The cron.php needs to be executed by the system user \"{user}\"." : "Файл «cron.php» должен исполняться с использованием учётной записи «{user}».",
+ "Unable to update background job mode" : "Не удалось изменить режим запуска фоновых задач",
"Profile" : "Профиль",
+ "Enable or disable profile by default for new users." : "Создавать или нет профили по умолчанию для новых пользователей.",
"Enable" : "Включить",
+ "Unable to update profile default setting" : "Не удалось обновить состояние использования профилей по умолчанию",
"Rename group" : "Переименовать группу",
"Remove group" : "Удалить группу",
"You are about to remove the group {group}. The users will NOT be deleted." : "Группа «{group}» будет удалена, но это НЕ приведёт к удалению пользователей.",
@@ -383,6 +414,7 @@ OC.L10N.register(
"SMTP Username" : "Пользователь SMTP",
"SMTP Password" : "Пароль SMTP",
"Save" : "Сохранить",
+ "Test and verify email settings" : "Проверить параметры эл. почты",
"Send email" : "Отправить сообщение",
"It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы убедиться в этом, мы выполняем некоторые автоматические проверки. Для получения дополнительной информации обратитесь к соответствующему разделу документации.",
"All checks passed." : "Все проверки пройдены.",
@@ -419,6 +451,7 @@ OC.L10N.register(
"Allow public uploads" : "Разрешить предоставлять доступ на запись",
"Always ask for a password" : "Предлагать задать пароль",
"Enforce password protection" : "Требовать защиту паролем",
+ "Exclude groups from password requirements:" : "Не применять правила для следующих групп:",
"Set default expiration date" : "Установить дату истечения по умолчанию",
"Exclude groups from creating link shares:" : "Запретить публикацию созданием ссылок для следующих групп:",
"Allow resharing" : "Разрешить повторную публикацию",
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index e26141ae2aa..a40bfd9da71 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -41,6 +41,7 @@
"You changed your email address" : "Вы изменили свой адрес электронной почты",
"Your email address was changed by an administrator" : "Ваш адрес электронной почты был изменён администратором",
"You created app password \"{token}\"" : "Вы создали пароль приложения «{token}»",
+ "An administrator created app password \"{token}\"" : "Администратор создал пароль приложения «{token}»",
"You deleted app password \"{token}\"" : "Вы удалили пароль приложения «{token}»",
"You renamed app password \"{token}\" to \"{newToken}\"" : "Вы переименовали пароль приложения «{token}» в «{newToken}»",
"You granted filesystem access to app password \"{token}\"" : "Вы разрешили доступ к файлам приложению «{token}»",
@@ -51,6 +52,8 @@
"Remote wipe was started on %1$s" : "Инициировано удаление данных с устройства %1$s",
"Remote wipe has finished on %1$s" : "Завершено удаление данных с устройства %1$s",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> или <strong>адрес электронной почты</strong> были изменены",
+ "Could not remove app." : "Не удалось удалить приложение.",
+ "Could not update app." : "Не удалось обновить приложение.",
"Wrong password" : "Неверный пароль",
"Unable to change personal password" : "Невозможность изменить личный пароль",
"Saved" : "Сохранено",
@@ -58,16 +61,22 @@
"Authentication error" : "Ошибка аутентификации",
"Please provide an admin recovery password; otherwise, all user data will be lost." : "Введите пароль восстановления администратора, в противном случае все пользовательские данные будут утеряны.",
"Wrong admin recovery password. Please check the password and try again." : "Неправильный пароль восстановления администратора. Проверьте пароль и попробуйте еще раз.",
+ "Backend does not support password change, but the user's encryption key was updated." : "Используемый механизм не поддерживает смену паролей, но пользовательский ключ шифрования был обновлён.",
"installing and updating apps via the App Store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ",
"Federated Cloud Sharing" : "Межсерверный обмен",
"cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL использует %1$s устаревшей версии %2$s. Обновите операционную систему, иначе такие возможности, как %3$s, не будут работать корректно.",
- "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Модуль PHP OPcache не загружен. Для повышения производительности рекомендуется загрузить его в вашу установку PHP.",
+ "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Невозможно определить устарела ли версия TLS адреса cURL, потому что произошла ошибка при обработке HTTPS запроса к https://nextcloud.com. Пожалуйста, проверьте ошибки в файле журнала Nextcloud.",
+ "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Модуль OPcache подсистемы PHP не загружен. Для повышения производительности рекомендуется его установить.",
+ "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "Механизм OPcache отключён. Для гарантированного улучшения производительности рекомендуется в файле конфигурации подсистемы PHP добавить строку <code>opcache.enable=1</code>.",
+ "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "Модуль OPcache настроен таким образом, что производит удаление комментариев кода. При использовании OPcache в Nextcloud необходимо использовать параметр <code>opcache.save_comments=1</code>.",
+ "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Буфер OPcache близок к переполнению. Для гарантированного сохранения всех сценариев в кэш-памяти рекомендуется в файле конфигурации подсистемы PHP установить параметру <code>opcache.memory_consumption</code> значении более чем <code>%s</code>.",
"Invalid SMTP password." : "Неверный пароль SMTP.",
"Email setting test" : "Проверка настроек электронной почты",
"Well done, %s!" : "Отлично, %s!",
"If you received this email, the email configuration seems to be correct." : "Если вы получили это сообщение, значит электронная почта настроена правильно.",
"Email could not be sent. Check your mail server log" : "Не удалось отправить сообщение электронной почты. Проверьте журнал ошибок почтового сервера",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Во время отправки письма произошла ошибка. Пожалуйста проверьте настройки. (Ошибка: %s)",
+ "You need to set your user email before being able to send test emails. Go to %s for that." : "Перед отправкой тестового сообщения необходимо настроить параметры электронной почты. Перейти в %s.",
"Invalid user" : "Неверный пользователь",
"Invalid mail address" : "Некорректный адрес электронной почты",
"Settings saved" : "Настройки сохранены",
@@ -122,7 +131,13 @@
"Verifying" : "Проверка",
"A background job is pending that checks for user imported SSL certificates. Please check back later." : "Запланировано фоновое задание проверки пользовательских SSL сертификатов. Пожалуйста, проверьте позже.",
"There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Обнаружены пользовательские сертификаты SSL, которые более не используются с Nextcloud 21. Их можно импортировать командой \"occ security:certificates:import\". Их расположение в папке с данными показаны ниже.",
+ "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Обнаружены некорректные идентификаторы UUID пользователей или групп LDAP. Для их обновления обратите внимание на параметр «Переопределять определение UUID» в разделе экспертных настроек протокола LDAP и запустите в консоли команду «occ ldap:update-uuid».",
"The old server-side-encryption format is enabled. We recommend disabling this." : "Задействован устаревший режим шифрования файлов на стороне сервера. Рекомендуется отключить такое шифрование.",
+ "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Используется MariaDB версии %s. В Nextcloud версии 21 эта версия не поддерживается, а для работы требуется MariaDB версии 10.2 или старше.",
+ "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Используется mySQL версии %s. В Nextcloud версии 21 эта версия не поддерживается, а для работы требуется MySQL версии 8 или MariaDB 10.2 или старше.",
+ "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Используется PostgreSQL версии %s. В Nextcloud версии 21 эта версия не поддерживается, а для работы требуется PostgreSQL версии 9.6 или старше.",
+ "Profile information" : "Сведения о профиле",
+ "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Изображение профиля, полное имя, адрес электронной почты, номер телефона, адрес, веб-сайт, Twitter, организация, роль, заголовок, биография и сведения том, активен ли профиль",
"Nextcloud settings" : "Параметры Nextcloud",
"Administration privileges" : "Администрирование",
"Here you can decide which group can access certain sections of the administration settings." : "Здесь вы можете решить, какая группа может получить доступ к определенным разделам настроек администрирования.",
@@ -159,11 +174,13 @@
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Рекомендованные приложения разработаны совместно с сообществом. Эти приложения обеспечивают основной функционал и готовы для использования в рабочих системах.",
"Featured" : "Рекомендуемые",
"Update to {update}" : "Обновить до {update}",
+ "All apps are up-to-date." : "Обновления приложений отсутствуют.",
"Results from other categories" : "Результаты из других категорий",
"No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено",
"Disable all" : "Отключить все",
"Enable all" : "Включить все",
"_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить%n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."],
+ "_Update_::_Update all_" : ["Обновить","Обновить все","Обновить все","Обновить все"],
"Marked for remote wipe" : "Помечено для удаления данных",
"Device settings" : "Параметры устройства",
"Allow filesystem access" : "Разрешить доступ к файлам",
@@ -207,9 +224,23 @@
"Copied!" : "Скопировано!",
"Copy" : "Копировать",
"Could not copy app password. Please copy it manually." : "Не удалось скопировать пароль приложения. Пожалуйста, скопируйте его вручную.",
+ "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Для правильной работы сервера Nextcloud важно правильно настроить выполнение задач в фоновом режиме. Рекомендуемым вариантом запуска фоновых задач является использование планировщика Cron. Обратитесь к документации для получения дополнительной информации.",
+ "Last job execution ran {time}. Something seems wrong." : "Последнее задание было выполнено {time}. Похоже, что-то не в порядке.",
+ "Last job ran {relativeTime}." : "Последнее задание было запущено {relativeTime}.",
+ "Background job did not run yet!" : "Фоновые задания ещё не выполнялись.",
+ "AJAX" : "AJAX",
+ "Execute one task with each page loaded. Use case: Single user instance." : "Запуск одного задания при загрузке каждой страницы. Вариант использования: сервер для одного пользователя.",
+ "Webcron" : "Webcron",
+ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "Использовать службу webcron для запуска зарегистрированного файла «cron.php» каждые 5 минут с использованием протокола HTTPS. Вариант использования: сервер для количества пользователей от одного до пяти.",
+ "Cron (Recommended)" : "Cron (рекомендуется)",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Для запуска требуется расширение POSIX для PHP. Обратитесь к {linkstart}документации по PHP{linkend} для получения дополнительной информации.",
+ "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Использовать системную службу запуска задач cron для запуска файла «cron.php» каждые 5 минут. Рекомендованый вариант.",
+ "The cron.php needs to be executed by the system user \"{user}\"." : "Файл «cron.php» должен исполняться с использованием учётной записи «{user}».",
+ "Unable to update background job mode" : "Не удалось изменить режим запуска фоновых задач",
"Profile" : "Профиль",
+ "Enable or disable profile by default for new users." : "Создавать или нет профили по умолчанию для новых пользователей.",
"Enable" : "Включить",
+ "Unable to update profile default setting" : "Не удалось обновить состояние использования профилей по умолчанию",
"Rename group" : "Переименовать группу",
"Remove group" : "Удалить группу",
"You are about to remove the group {group}. The users will NOT be deleted." : "Группа «{group}» будет удалена, но это НЕ приведёт к удалению пользователей.",
@@ -381,6 +412,7 @@
"SMTP Username" : "Пользователь SMTP",
"SMTP Password" : "Пароль SMTP",
"Save" : "Сохранить",
+ "Test and verify email settings" : "Проверить параметры эл. почты",
"Send email" : "Отправить сообщение",
"It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы убедиться в этом, мы выполняем некоторые автоматические проверки. Для получения дополнительной информации обратитесь к соответствующему разделу документации.",
"All checks passed." : "Все проверки пройдены.",
@@ -417,6 +449,7 @@
"Allow public uploads" : "Разрешить предоставлять доступ на запись",
"Always ask for a password" : "Предлагать задать пароль",
"Enforce password protection" : "Требовать защиту паролем",
+ "Exclude groups from password requirements:" : "Не применять правила для следующих групп:",
"Set default expiration date" : "Установить дату истечения по умолчанию",
"Exclude groups from creating link shares:" : "Запретить публикацию созданием ссылок для следующих групп:",
"Allow resharing" : "Разрешить повторную публикацию",
diff --git a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
index ef03ae0677d..deb5da3a798 100644
--- a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
+++ b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
@@ -51,7 +51,6 @@
<Actions class="email__actions"
:aria-label="t('settings', 'Email options')"
- :disabled="deleteDisabled"
:force-menu="true">
<ActionButton :aria-label="deleteEmailLabel"
:close-after-click="true"
diff --git a/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue b/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue
index 07ec35861a9..1c548bf8355 100644
--- a/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue
+++ b/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue
@@ -46,8 +46,9 @@
<template v-if="additionalEmails.length">
<em class="additional-emails-label">{{ t('settings', 'Additional emails') }}</em>
+ <!-- TODO use unique key for additional email when uniqueness can be guaranteed, see https://github.com/nextcloud/server/issues/26866 -->
<Email v-for="(additionalEmail, index) in additionalEmails"
- :key="index"
+ :key="additionalEmail.key"
:index="index"
:scope.sync="additionalEmail.scope"
:email.sync="additionalEmail.value"
@@ -85,7 +86,7 @@ export default {
data() {
return {
accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,
- additionalEmails,
+ additionalEmails: additionalEmails.map(properties => ({ ...properties, key: this.generateUniqueKey() })),
displayNameChangeSupported,
primaryEmail,
savePrimaryEmailScope,
@@ -119,7 +120,7 @@ export default {
methods: {
onAddAdditionalEmail() {
if (this.isValidSection) {
- this.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE })
+ this.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE, key: this.generateUniqueKey() })
}
},
@@ -184,6 +185,10 @@ export default {
this.logger.error(errorMessage, error)
}
},
+
+ generateUniqueKey() {
+ return Math.random().toString(36).substring(2)
+ },
},
}
</script>
diff --git a/apps/updatenotification/lib/ResetTokenBackgroundJob.php b/apps/updatenotification/lib/ResetTokenBackgroundJob.php
index 96a50c5ff7f..6e80f0fc0bf 100644
--- a/apps/updatenotification/lib/ResetTokenBackgroundJob.php
+++ b/apps/updatenotification/lib/ResetTokenBackgroundJob.php
@@ -26,7 +26,7 @@ declare(strict_types=1);
*/
namespace OCA\UpdateNotification;
-use OC\BackgroundJob\TimedJob;
+use OCP\BackgroundJob\TimedJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
@@ -48,8 +48,9 @@ class ResetTokenBackgroundJob extends TimedJob {
*/
public function __construct(IConfig $config,
ITimeFactory $timeFactory) {
+ parent::__construct($timeFactory);
// Run all 10 minutes
- $this->setInterval(60 * 10);
+ parent::setInterval(60 * 10);
$this->config = $config;
$this->timeFactory = $timeFactory;
}
@@ -59,7 +60,7 @@ class ResetTokenBackgroundJob extends TimedJob {
*/
protected function run($argument) {
// Delete old tokens after 2 days
- if ($this->timeFactory->getTime() - $this->config->getAppValue('core', 'updater.secret.created', $this->timeFactory->getTime()) >= 172800) {
+ if ($this->config->getSystemValueBool('config_is_read_only') === false && $this->timeFactory->getTime() - (int) $this->config->getAppValue('core', 'updater.secret.created', (string) $this->timeFactory->getTime()) >= 172800) {
$this->config->deleteSystemValue('updater.secret');
}
}
diff --git a/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php b/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php
index 129ba370980..56a82b5b726 100644
--- a/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php
+++ b/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php
@@ -57,6 +57,11 @@ class ResetTokenBackgroundJobTest extends TestCase {
->method('getAppValue')
->with('core', 'updater.secret.created', 123);
$this->config
+ ->expects($this->once())
+ ->method('getSystemValueBool')
+ ->with('config_is_read_only')
+ ->willReturn(false);
+ $this->config
->expects($this->never())
->method('deleteSystemValue');
@@ -65,13 +70,9 @@ class ResetTokenBackgroundJobTest extends TestCase {
public function testRunWithExpiredToken() {
$this->timeFactory
- ->expects($this->at(0))
+ ->expects($this->exactly(2))
->method('getTime')
- ->willReturn(1455131633);
- $this->timeFactory
- ->expects($this->at(1))
- ->method('getTime')
- ->willReturn(1455045234);
+ ->willReturnOnConsecutiveCalls(1455131633, 1455045234);
$this->config
->expects($this->once())
->method('getAppValue')
@@ -83,4 +84,23 @@ class ResetTokenBackgroundJobTest extends TestCase {
static::invokePrivate($this->resetTokenBackgroundJob, 'run', [null]);
}
+
+ public function testRunWithExpiredTokenAndReadOnlyConfigFile() {
+ $this->timeFactory
+ ->expects($this->never())
+ ->method('getTime');
+ $this->config
+ ->expects($this->never())
+ ->method('getAppValue');
+ $this->config
+ ->expects($this->once())
+ ->method('getSystemValueBool')
+ ->with('config_is_read_only')
+ ->willReturn(true);
+ $this->config
+ ->expects($this->never())
+ ->method('deleteSystemValue');
+
+ static::invokePrivate($this->resetTokenBackgroundJob, 'run', [null]);
+ }
}
diff --git a/apps/weather_status/l10n/fr.js b/apps/weather_status/l10n/fr.js
index 07b47629d00..41485dce306 100644
--- a/apps/weather_status/l10n/fr.js
+++ b/apps/weather_status/l10n/fr.js
@@ -21,6 +21,18 @@ OC.L10N.register(
"{temperature} {unit} partly cloudy" : "{temperature} {unit} Partiellement nuageux",
"{temperature} {unit} foggy later today" : "{temperature} {unit} Brouillard dans la journée",
"{temperature} {unit} foggy" : "{temperature} {unit} Brouillard",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Pluie légère dans la journée",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Pluie légère",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Pluie dans la journée",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Pluie",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Fortes pluies dans la journée",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Fortes pluies",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Averses dans la journée",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Averses",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Faibles averses dans la journée",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Faibles averses",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Fortes averses dans la journée",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Fortes averses",
"More weather for {adr}" : "Plus de météo pour {adr}",
"Loading weather" : "Chargement de la météo",
"Remove from favorites" : "Retirer des favoris",
diff --git a/apps/weather_status/l10n/fr.json b/apps/weather_status/l10n/fr.json
index 77a4b873959..44d2584ccf4 100644
--- a/apps/weather_status/l10n/fr.json
+++ b/apps/weather_status/l10n/fr.json
@@ -19,6 +19,18 @@
"{temperature} {unit} partly cloudy" : "{temperature} {unit} Partiellement nuageux",
"{temperature} {unit} foggy later today" : "{temperature} {unit} Brouillard dans la journée",
"{temperature} {unit} foggy" : "{temperature} {unit} Brouillard",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Pluie légère dans la journée",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Pluie légère",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Pluie dans la journée",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Pluie",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Fortes pluies dans la journée",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Fortes pluies",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Averses dans la journée",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Averses",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Faibles averses dans la journée",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Faibles averses",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Fortes averses dans la journée",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Fortes averses",
"More weather for {adr}" : "Plus de météo pour {adr}",
"Loading weather" : "Chargement de la météo",
"Remove from favorites" : "Retirer des favoris",
diff --git a/build/integration/composer.json b/build/integration/composer.json
index 77c150f3c9b..9442e9900cb 100644
--- a/build/integration/composer.json
+++ b/build/integration/composer.json
@@ -4,7 +4,7 @@
"behat/behat": "~3.10.0",
"guzzlehttp/guzzle": "7.4.5",
"jarnaiz/behat-junit-formatter": "^1.3",
- "sabre/dav": "4.3.1",
+ "sabre/dav": "4.4.0",
"symfony/event-dispatcher": "~5.3"
}
}
diff --git a/build/update-apps.sh b/build/update-apps.sh
index e4611a79aff..b3853aa0eac 100755
--- a/build/update-apps.sh
+++ b/build/update-apps.sh
@@ -1,14 +1,14 @@
#!/bin/bash
-# Update Nextcloud apps from latest git master
+# Update Nextcloud apps from latest git stable24
# For local development environment
# Use from Nextcloud server folder with `./build/update-apps.sh`
#
# It automatically:
# - goes through all apps which are not shipped via server
# - shows the app name in bold and uses whitespace for separation
-# - changes to master and pulls quietly
+# - changes to stable24 and pulls quietly
# - shows the 3 most recent commits for context
-# - removes branches merged into master
+# - removes branches merged into stable24
# - … could even do the build steps if they are consistent for the apps (like `make`)
-find apps* -maxdepth 2 -name .git -exec sh -c 'cd {}/../ && printf "\n\033[1m${PWD##*/}\033[0m\n" && git checkout master && git pull --quiet -p && git --no-pager log -3 --pretty=format:"%h %Cblue%ar%x09%an %Creset%s" && printf "\n" && git branch --merged master | grep -v "master$" | xargs git branch -d && cd ..' \;
+find apps* -maxdepth 2 -name .git -exec sh -c 'cd {}/../ && printf "\n\033[1m${PWD##*/}\033[0m\n" && git checkout stable24 && git pull --quiet -p && git --no-pager log -3 --pretty=format:"%h %Cblue%ar%x09%an %Creset%s" && printf "\n" && git branch --merged stable24 | grep -v "stable24$" | xargs git branch -d && cd ..' \;
diff --git a/build/update.sh b/build/update.sh
index 3a3d2eac5dc..d83e1964da3 100755
--- a/build/update.sh
+++ b/build/update.sh
@@ -1,15 +1,15 @@
#!/bin/bash
-# Update Nextcloud server and apps from latest git master
+# Update Nextcloud server and apps from latest git stable24
# For local development environment
# Use from Nextcloud server folder with `./build/update.sh`
# Update server
printf "\n\033[1m${PWD##*/}\033[0m\n"
-git checkout master
+git checkout stable24
git pull --quiet -p
git --no-pager log -3 --pretty=format:"%h %Cblue%ar%x09%an %Creset%s"
printf "\n"
-git branch --merged master | grep -v "master$" | xargs git branch -d
+git branch --merged stable24 | grep -v "stable24$" | xargs git branch -d
git submodule update --init
# Update apps
diff --git a/core/Command/SystemTag/ListCommand.php b/core/Command/SystemTag/ListCommand.php
index f9d17efd513..2dc68a05670 100644
--- a/core/Command/SystemTag/ListCommand.php
+++ b/core/Command/SystemTag/ListCommand.php
@@ -23,8 +23,8 @@
namespace OC\Core\Command\SystemTag;
use OC\Core\Command\Base;
-use OCP\SystemTag\ISystemTagManager;
use OCP\SystemTag\ISystemTag;
+use OCP\SystemTag\ISystemTagManager;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
@@ -72,7 +72,9 @@ class ListCommand extends Base {
* @param ISystemtag[] $tags
* @return array
*/
- private function formatTags(array $tags) {
+ private function formatTags(array $tags): array {
+ $result = [];
+
foreach ($tags as $tag) {
$result[$tag->getId()] = [
'name' => $tag->getName(),
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index 22453f03ebd..3ca5d543dde 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -236,6 +236,8 @@ OC.L10N.register(
"(all selected)" : "(все выбранные)",
"({count} selected)" : "(выбрано: {count})",
"Error loading file exists template" : "Ошибка при загрузке шаблона существующего файла",
+ "Show list view" : "Просмотр списком",
+ "Show grid view" : "Просмотр сеткой",
"Pending" : "Ожидается",
"Copy to {folder}" : "Скопировать в «{folder}»",
"Move to {folder}" : "Переместить в «{folder}»",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index 43cbc0b10ec..c1d2d4b980c 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -234,6 +234,8 @@
"(all selected)" : "(все выбранные)",
"({count} selected)" : "(выбрано: {count})",
"Error loading file exists template" : "Ошибка при загрузке шаблона существующего файла",
+ "Show list view" : "Просмотр списком",
+ "Show grid view" : "Просмотр сеткой",
"Pending" : "Ожидается",
"Copy to {folder}" : "Скопировать в «{folder}»",
"Move to {folder}" : "Переместить в «{folder}»",
diff --git a/dist/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js
index 4ff8a80f295..665652ce91c 100644
--- a/dist/files_sharing-files_sharing_tab.js
+++ b/dist/files_sharing-files_sharing_tab.js
@@ -1,3 +1,3 @@
/*! For license information please see files_sharing-files_sharing_tab.js.LICENSE.txt */
-!function(){"use strict";var n,e={13610:function(n,e,r){var i=r(20144),a=r(72268),s=r.n(a),o=r(9944),c=r(1794),l=r(79753),u=r(28017),h=r.n(u),d=r(4820);function f(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var p=function(){function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n)}var e,t;return e=n,(t=[{key:"isPublicUploadEnabled",get:function(){return document.getElementById("filestable")&&"yes"===document.getElementById("filestable").dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDateString",get:function(){var n="";if(this.isDefaultExpireDateEnabled){var e=window.moment.utc(),t=this.defaultExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultInternalExpirationDateString",get:function(){var n="";if(this.isDefaultInternalExpireDateEnabled){var e=window.moment.utc(),t=this.defaultInternalExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultRemoteExpirationDateString",get:function(){var n="";if(this.isDefaultRemoteExpireDateEnabled){var e=window.moment.utc(),t=this.defaultRemoteExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultRemoteExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var n,e,t,r=OC.getCapabilities();return void 0!==(null==r||null===(n=r.files_sharing)||void 0===n?void 0:n.sharebymail)&&!0===(null==r||null===(e=r.files_sharing)||void 0===e||null===(t=e.public)||void 0===t?void 0:t.enabled)}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"defaultRemoteExpireDate",get:function(){return OC.appConfig.core.defaultRemoteExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"shouldAlwaysShowUnique",get:function(){var n,e;return!0===(null===(n=OC.getCapabilities().files_sharing)||void 0===n||null===(e=n.sharee)||void 0===e?void 0:e.always_show_unique)}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var n=OC.getCapabilities();return n.password_policy?n.password_policy:{}}}])&&f(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),g=r(41922);function m(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var v=function(){function n(e){var t,r;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),r=void 0,(t="_share")in this?Object.defineProperty(this,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):this[t]=r,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,this._share=e}var e,t;return e=n,(t=[{key:"state",get:function(){return this._share}},{key:"id",get:function(){return this._share.id}},{key:"type",get:function(){return this._share.share_type}},{key:"permissions",get:function(){return this._share.permissions},set:function(n){this._share.permissions=n}},{key:"owner",get:function(){return this._share.uid_owner}},{key:"ownerDisplayName",get:function(){return this._share.displayname_owner}},{key:"shareWith",get:function(){return this._share.share_with}},{key:"shareWithDisplayName",get:function(){return this._share.share_with_displayname||this._share.share_with}},{key:"shareWithDisplayNameUnique",get:function(){return this._share.share_with_displayname_unique||this._share.share_with}},{key:"shareWithLink",get:function(){return this._share.share_with_link}},{key:"shareWithAvatar",get:function(){return this._share.share_with_avatar}},{key:"uidFileOwner",get:function(){return this._share.uid_file_owner}},{key:"displaynameFileOwner",get:function(){return this._share.displayname_file_owner||this._share.uid_file_owner}},{key:"createdTime",get:function(){return this._share.stime}},{key:"expireDate",get:function(){return this._share.expiration},set:function(n){this._share.expiration=n}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(n){this._share.note=n}},{key:"label",get:function(){return this._share.label},set:function(n){this._share.label=n}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(n){this._share.hide_download=!0===n}},{key:"password",get:function(){return this._share.password},set:function(n){this._share.password=n}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(n){this._share.password_expiration_time=n}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(n){this._share.send_password_by_talk=n}},{key:"path",get:function(){return this._share.path}},{key:"itemType",get:function(){return this._share.item_type}},{key:"mimetype",get:function(){return this._share.mimetype}},{key:"fileSource",get:function(){return this._share.file_source}},{key:"fileTarget",get:function(){return this._share.file_target}},{key:"fileParent",get:function(){return this._share.file_parent}},{key:"hasReadPermission",get:function(){return!!(this.permissions&OC.PERMISSION_READ)}},{key:"hasCreatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_CREATE)}},{key:"hasDeletePermission",get:function(){return!!(this.permissions&OC.PERMISSION_DELETE)}},{key:"hasUpdatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_UPDATE)}},{key:"hasSharePermission",get:function(){return!!(this.permissions&OC.PERMISSION_SHARE)}},{key:"canEdit",get:function(){return!0===this._share.can_edit}},{key:"canDelete",get:function(){return!0===this._share.can_delete}},{key:"viaFileid",get:function(){return this._share.via_fileid}},{key:"viaPath",get:function(){return this._share.via_path}},{key:"parent",get:function(){return this._share.parent}},{key:"storageId",get:function(){return this._share.storage_id}},{key:"storage",get:function(){return this._share.storage}},{key:"itemSource",get:function(){return this._share.item_source}},{key:"status",get:function(){return this._share.status}}])&&m(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),_={data:function(){return{SHARE_TYPES:g.D}}},A=r(74466),y=r.n(A),E=r(79440),w=r.n(E),b=r(15168),S=r.n(b),C={name:"SharingEntrySimple",components:{Actions:w()},directives:{Tooltip:S()},props:{title:{type:String,default:"",required:!0},tooltip:{type:String,default:""},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0}}},x=r(93379),k=r.n(x),P=r(7795),T=r.n(P),D=r(90569),R=r.n(D),O=r(3565),I=r.n(O),L=r(19216),N=r.n(L),Y=r(44589),H=r.n(Y),U=r(35917),M={};M.styleTagTransform=H(),M.setAttributes=I(),M.insert=R().bind(null,"head"),M.domAPI=T(),M.insertStyleElement=N(),k()(U.Z,M),U.Z&&U.Z.locals&&U.Z.locals;var B=r(51900),j=(0,B.Z)(C,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[n._t("avatar"),n._v(" "),t("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.tooltip,expression:"tooltip"}],staticClass:"sharing-entry__desc"},[t("h5",[n._v(n._s(n.title))]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.$slots.default?t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"}},[n._t("default")],2):n._e()],2)}),[],!1,null,"1436bf4a",null).exports;function W(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var q={name:"SharingEntryInternal",components:{ActionLink:y(),SharingEntrySimple:j},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{copied:!1,copySuccess:!1}},computed:{internalLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/")+this.fileInfo.id},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},internalLinkSubtitle:function(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{copyLink:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(e.internalLink);case 3:e.$refs.copyButton.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=13;break;case 8:n.prev=8,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,console.error(n.t0);case 13:return n.prev=13,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(13);case 16:case"end":return n.stop()}}),n,null,[[0,8,13,16]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){W(a,r,i,s,o,"next",n)}function o(n){W(a,r,i,s,o,"throw",n)}s(void 0)}))})()}}},F=q,$=r(52475),Z={};Z.styleTagTransform=H(),Z.setAttributes=I(),Z.insert=R().bind(null,"head"),Z.domAPI=T(),Z.insertStyleElement=N(),k()($.Z,Z),$.Z&&$.Z.locals&&$.Z.locals;var G=(0,B.Z)(F,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{staticClass:"sharing-entry__internal",attrs:{title:n.t("files_sharing","Internal link"),subtitle:n.internalLinkSubtitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[n._v(" "),t("ActionLink",{ref:"copyButton",attrs:{href:n.internalLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.clipboardTooltip)+"\n\t")])],1)}),[],!1,null,"854dc2c6",null),K=G.exports,V=r(22200),Q=r(20296),z=r.n(Q),J=r(7811),X=r.n(J);function nn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function en(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){nn(a,r,i,s,o,"next",n)}function o(n){nn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var tn=new p,rn="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function an(){return sn.apply(this,arguments)}function sn(){return(sn=en(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!tn.passwordPolicy.api||!tn.passwordPolicy.api.generate){n.next=12;break}return n.prev=1,n.next=4,d.default.get(tn.passwordPolicy.api.generate);case 4:if(!(e=n.sent).data.ocs.data.password){n.next=7;break}return n.abrupt("return",e.data.ocs.data.password);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(1),console.info("Error generating password from password_policy",n.t0);case 12:return n.abrupt("return",Array(10).fill(0).reduce((function(n,e){return n+rn.charAt(Math.floor(Math.random()*rn.length))}),""));case 13:case"end":return n.stop()}}),n,null,[[1,9]])})))).apply(this,arguments)}function on(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function cn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){on(a,r,i,s,o,"next",n)}function o(n){on(a,r,i,s,o,"throw",n)}s(void 0)}))}}r(35449);var ln=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),un={methods:{createShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l,u,h,f,p,g,m,_,A,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.path,i=n.permissions,a=n.shareType,s=n.shareWith,o=n.publicUpload,c=n.password,l=n.sendPasswordByTalk,u=n.expireDate,h=n.label,e.prev=1,e.next=4,d.default.post(ln,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:u,label:h});case 4:if(null!=(p=e.sent)&&null!==(f=p.data)&&void 0!==f&&f.ocs){e.next=7;break}throw p;case 7:return e.abrupt("return",new v(p.data.ocs.data));case 10:throw e.prev=10,e.t0=e.catch(1),console.error("Error while creating share",e.t0),y=null===e.t0||void 0===e.t0||null===(g=e.t0.response)||void 0===g||null===(m=g.data)||void 0===m||null===(_=m.ocs)||void 0===_||null===(A=_.meta)||void 0===A?void 0:A.message,OC.Notification.showTemporary(y?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:y}):t("files_sharing","Error creating the share"),{type:"error"}),e.t0;case 16:case"end":return e.stop()}}),e,null,[[1,10]])})))()},deleteShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.default.delete(ln+"/".concat(n));case 3:if(null!=(i=e.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){e.next=6;break}throw i;case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e.catch(0),console.error("Error while deleting share",e.t0),l=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(s=a.data)||void 0===s||null===(o=s.ocs)||void 0===o||null===(c=o.meta)||void 0===c?void 0:c.message,OC.Notification.showTemporary(l?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:l}):t("files_sharing","Error deleting the share"),{type:"error"}),e.t0;case 15:case"end":return e.stop()}}),e,null,[[0,9]])})))()},updateShare:function(n,e){return cn(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,u,h;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d.default.put(ln+"/".concat(n),e);case 3:if(null!=(a=r.sent)&&null!==(i=a.data)&&void 0!==i&&i.ocs){r.next=8;break}throw a;case 8:return r.abrupt("return",a.data.ocs.data);case 9:r.next=17;break;case 11:throw r.prev=11,r.t0=r.catch(0),console.error("Error while updating share",r.t0),400!==r.t0.response.status&&(u=null===r.t0||void 0===r.t0||null===(s=r.t0.response)||void 0===s||null===(o=s.data)||void 0===o||null===(c=o.ocs)||void 0===c||null===(l=c.meta)||void 0===l?void 0:l.message,OC.Notification.showTemporary(u?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:u}):t("files_sharing","Error updating the share"),{type:"error"})),h=r.t0.response.data.ocs.meta.message,new Error(h);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}};function hn(n){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},hn(n)}function dn(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function fn(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?dn(Object(t),!0).forEach((function(e){pn(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):dn(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function pn(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function gn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function mn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){gn(a,r,i,s,o,"next",n)}function o(n){gn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var vn={name:"SharingInput",components:{Multiselect:X()},mixins:[_,un],props:{shares:{type:Array,default:function(){return[]},required:!0},linkShares:{type:Array,default:function(){return[]},required:!0},fileInfo:{type:Object,default:function(){},required:!0},reshare:{type:v,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new p,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[]}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var n=this.config.isRemoteShareAllowed;return this.canReshare?n?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery:function(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options:function(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText:function(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted:function(){this.getRecommendations()},methods:{asyncFind:function(n,e){var t=this;return mn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!t.isValidQuery){e.next=5;break}return t.loading=!0,e.next=5,t.debounceGetSuggestions(n);case 5:case"end":return e.stop()}}),e)})))()},getSuggestions:function(n){var e=arguments,r=this;return mn(regeneratorRuntime.mark((function i(){var a,s,o,c,u,h,f,p,g,m,v,_,A;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.length>1&&void 0!==e[1]&&e[1],r.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(a=!0),s=[r.SHARE_TYPES.SHARE_TYPE_USER,r.SHARE_TYPES.SHARE_TYPE_GROUP,r.SHARE_TYPES.SHARE_TYPE_REMOTE,r.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,r.SHARE_TYPES.SHARE_TYPE_CIRCLE,r.SHARE_TYPES.SHARE_TYPE_ROOM,r.SHARE_TYPES.SHARE_TYPE_GUEST,r.SHARE_TYPES.SHARE_TYPE_DECK],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),o=null,i.prev=6,i.next=9,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:n,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:o=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),console.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:c=o.data.ocs.data,u=o.data.ocs.data.exact,c.exact=[],h=Object.values(u).reduce((function(n,e){return n.concat(e)}),[]),f=Object.values(c).reduce((function(n,e){return n.concat(e)}),[]),p=r.filterOutExistingShares(h).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),g=r.filterOutExistingShares(f).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),m=[],c.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),v=r.externalResults.filter((function(n){return!n.condition||n.condition(r)})),_=p.concat(g).concat(v).concat(m),A=_.reduce((function(n,e){return e.displayName?(n[e.displayName]||(n[e.displayName]=0),n[e.displayName]++,n):n}),{}),r.suggestions=_.map((function(n){return A[n.displayName]>1&&!n.desc?fn(fn({},n),{},{desc:n.shareWithDisplayNameUnique}):n})),r.loading=!1,console.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:z()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var n=this;return mn(regeneratorRuntime.mark((function e(){var t,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,t=null,e.prev=2,e.next=5,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:n.fileInfo.type}});case 5:t=e.sent,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.error("Error fetching recommendations",e.t0),e.abrupt("return");case 12:r=n.externalResults.filter((function(e){return!e.condition||e.condition(n)})),i=Object.values(t.data.ocs.data.exact).reduce((function(n,e){return n.concat(e)}),[]),n.recommendations=n.filterOutExistingShares(i).map((function(e){return n.formatForMultiselect(e)})).concat(r),n.loading=!1,console.info("recommendations",n.recommendations);case 17:case"end":return e.stop()}}),e,null,[[2,8]])})))()},filterOutExistingShares:function(n){var e=this;return n.reduce((function(n,t){if("object"!==hn(t))return n;try{if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,V.getCurrentUser)().uid)return n;if(e.reshare&&t.value.shareWith===e.reshare.owner)return n}if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==e.linkShares.map((function(n){return n.shareWith})).indexOf(t.value.shareWith.trim()))return n}else{var r=e.shares.reduce((function(n,e){return n[e.shareWith]=e.type,n}),{}),i=t.value.shareWith.trim();if(i in r&&r[i]===t.value.shareType)return n}n.push(t)}catch(e){return n}return n}),[])},shareTypeToIcon:function(n){switch(n){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return"icon-user";case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return"icon-group";case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return"icon-mail";case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return"icon-circle";case this.SHARE_TYPES.SHARE_TYPE_ROOM:return"icon-room";case this.SHARE_TYPES.SHARE_TYPE_DECK:return"icon-deck";default:return""}},formatForMultiselect:function(n){var e,r;if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)e=null!==(r=n.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!n.value.server)if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)e=n.value.shareWith;else{var i;e=null!==(i=n.shareWithDescription)&&void 0!==i?i:""}else e=t("files_sharing","on {server}",{server:n.value.server});return{id:"".concat(n.value.shareType,"-").concat(n.value.shareWith),shareWith:n.value.shareWith,shareType:n.value.shareType,user:n.uuid||n.value.shareWith,isNoUser:n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:n.name||n.label,subtitle:e,shareWithDisplayNameUnique:n.shareWithDisplayNameUnique||"",icon:this.shareTypeToIcon(n.value.shareType)}},addShare:function(n){var e=this;return mn(regeneratorRuntime.mark((function t(){var r,i,a,s,o,c,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.lookup){t.next=5;break}return t.next=3,e.getSuggestions(e.query,!0);case 3:return e.$nextTick((function(){e.$refs.multiselect.$el.querySelector(".multiselect__input").focus()})),t.abrupt("return",!0);case 5:if(!n.handler){t.next=11;break}return t.next=8,n.handler(e);case 8:return r=t.sent,e.$emit("add:share",new v(r)),t.abrupt("return",!0);case 11:if(e.loading=!0,console.debug("Adding a new share from the input for",n),t.prev=13,o=null,!e.config.enforcePasswordForPublicLink||n.shareType!==e.SHARE_TYPES.SHARE_TYPE_EMAIL){t.next=19;break}return t.next=18,an();case 18:o=t.sent;case 19:return c=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),t.next=22,e.createShare({path:c,shareType:n.shareType,shareWith:n.shareWith,password:o,permissions:e.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions});case 22:if(l=t.sent,!o){t.next=31;break}return l.newPassword=o,t.next=27,new Promise((function(n){e.$emit("add:share",l,n)}));case 27:t.sent.open=!0,t.next=32;break;case 31:e.$emit("add:share",l);case 32:return null!==(i=e.$refs.multiselect)&&void 0!==i&&null!==(a=i.$refs)&&void 0!==a&&null!==(s=a.VueMultiselect)&&void 0!==s&&s.search&&(e.$refs.multiselect.$refs.VueMultiselect.search=""),t.next=35,e.getRecommendations();case 35:t.next=43;break;case 37:t.prev=37,t.t0=t.catch(13),(u=e.$refs.multiselect.$el.querySelector("input"))&&u.focus(),e.query=n.shareWith,console.error("Error while adding new share",t.t0);case 43:return t.prev=43,e.loading=!1,t.finish(43);case 46:case"end":return t.stop()}}),t,null,[[13,37,43,46]])})))()}}},_n=vn,An=r(84721),yn={};yn.styleTagTransform=H(),yn.setAttributes=I(),yn.insert=R().bind(null,"head"),yn.domAPI=T(),yn.insertStyleElement=N(),k()(An.Z,yn),An.Z&&An.Z.locals&&An.Z.locals;var En=(0,B.Z)(_n,(function(){var n=this,e=n.$createElement;return(n._self._c||e)("Multiselect",{ref:"multiselect",staticClass:"sharing-input",attrs:{"clear-on-select":!0,disabled:!n.canReshare,"hide-selected":!0,"internal-search":!1,loading:n.loading,options:n.options,placeholder:n.inputPlaceholder,"preselect-first":!0,"preserve-search":!0,searchable:!0,"user-select":!0,"open-direction":"below",label:"displayName","track-by":"id"},on:{"search-change":n.asyncFind,select:n.addShare},scopedSlots:n._u([{key:"noOptions",fn:function(){return[n._v("\n\t\t"+n._s(n.t("files_sharing","No recommendations. Start typing."))+"\n\t")]},proxy:!0},{key:"noResult",fn:function(){return[n._v("\n\t\t"+n._s(n.noResultText)+"\n\t")]},proxy:!0}])})}),[],!1,null,null,null).exports,wn=r(56286),bn=r.n(wn),Sn=r(76632),Cn=r(41009),xn=r.n(Cn),kn=r(25746);function Pn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Tn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Pn(a,r,i,s,o,"next",n)}function o(n){Pn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Dn={mixins:[un,_],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var n;return{config:new p,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new kn.Z({concurrency:1}),reactiveState:null===(n=this.share)||void 0===n?void 0:n.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(n){this.share.note=n?null:""}},dateTomorrow:function(){return moment().add(1,"days")},lang:function(){var n=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:n,weekdaysShort:n},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,V.getCurrentUser)().uid}},methods:{checkShare:function(n){return(!n.password||"string"==typeof n.password&&""!==n.password.trim())&&!(n.expirationDate&&!moment(n.expirationDate).isValid())},onExpirationChange:function(n){var e=moment(n).format("YYYY-MM-DD");this.share.expireDate=e,this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(n){this.$set(this.share,"newNote",n.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},onDelete:function(){var n=this;return Tn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,n.open=!1,e.next=5,n.deleteShare(n.share.id);case 5:console.debug("Share deleted",n.share.id),n.$emit("remove:share",n.share),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),n.open=!0;case 12:return e.prev=12,n.loading=!1,e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[0,9,12,15]])})))()},queueUpdate:function(){for(var n=this,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(0!==t.length)if(this.share.id){var i={};t.map((function(e){return i[e]=n.share[e].toString()})),this.updateQueue.add(Tn(regeneratorRuntime.mark((function e(){var r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.saving=!0,n.errors={},e.prev=2,e.next=5,n.updateShare(n.share.id,i);case 5:r=e.sent,t.indexOf("password")>=0&&(n.$delete(n.share,"newPassword"),n.share.passwordExpirationTime=r.password_expiration_time),n.$delete(n.errors,t[0]),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(2),(a=e.t0.message)&&""!==a&&n.onSyncError(t[0],a);case 14:return e.prev=14,n.saving=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,10,14,17]])}))))}else console.error("Cannot update share.",this.share,"No valid id")},onSyncError:function(n,e){switch(this.open=!0,n){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,n,e);var t=this.$refs[n];if(t){t.$el&&(t=t.$el);var r=t.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,n,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:z()((function(n){this.queueUpdate(n)}),500),disabledDate:function(n){var e=moment(n);return this.dateTomorrow&&e.isBefore(this.dateTomorrow,"day")||this.dateMaxEnforced&&e.isSameOrAfter(this.dateMaxEnforced,"day")}}},Rn={name:"SharingEntryInherited",components:{ActionButton:bn(),ActionLink:y(),ActionText:xn(),Avatar:h(),SharingEntrySimple:j},mixins:[Dn],props:{share:{type:v,required:!0}},computed:{viaFileTargetUrl:function(){return(0,l.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,Sn.EZ)(this.share.viaPath)}}},On=r(71296),In={};In.styleTagTransform=H(),In.setAttributes=I(),In.insert=R().bind(null,"head"),In.domAPI=T(),In.insertStyleElement=N(),k()(On.Z,In),On.Z&&On.Z.locals&&On.Z.locals;var Ln=(0,B.Z)(Rn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{key:n.share.id,staticClass:"sharing-entry__inherited",attrs:{title:n.share.shareWithDisplayName},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":""}})]},proxy:!0}])},[n._v(" "),t("ActionText",{attrs:{icon:"icon-user"}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Added by {initiator}",{initiator:n.share.ownerDisplayName}))+"\n\t")]),n._v(" "),n.share.viaPath&&n.share.viaFileid?t("ActionLink",{attrs:{icon:"icon-folder",href:n.viaFileTargetUrl}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Via “{folder}”",{folder:n.viaFolderName}))+"\n\t")]):n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t")]):n._e()],1)}),[],!1,null,"29845767",null),Nn=Ln.exports;function Yn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Hn={name:"SharingInherited",components:{ActionButton:bn(),SharingEntryInherited:Nn,SharingEntrySimple:j},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}},computed:{showInheritedSharesIcon:function(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:function(){return t("files_sharing","Others with access")},subTitle:function(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip:function(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath:function(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo:function(){this.resetState()}},methods:{toggleInheritedShares:function(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},fetchInheritedShares:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,n.prev=1,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:e.fullPath}),n.next=5,d.default.get(r);case 5:i=n.sent,e.shares=i.data.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime})),console.info(e.shares),e.loaded=!0,n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[1,11,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Yn(a,r,i,s,o,"next",n)}function o(n){Yn(a,r,i,s,o,"throw",n)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]}}},Un=Hn,Mn=r(93591),Bn={};Bn.styleTagTransform=H(),Bn.setAttributes=I(),Bn.insert=R().bind(null,"head"),Bn.domAPI=T(),Bn.insertStyleElement=N(),k()(Mn.Z,Bn),Mn.Z&&Mn.Z.locals&&Mn.Z.locals;var jn=(0,B.Z)(Un,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:n.mainTitle,subtitle:n.subTitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[n._v(" "),t("ActionButton",{attrs:{icon:n.showInheritedSharesIcon},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.toggleInheritedShares.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.toggleTooltip)+"\n\t\t")])],1),n._v(" "),n._l(n.shares,(function(e){return t("SharingEntryInherited",{key:e.id,attrs:{"file-info":n.fileInfo,share:e}})}))],2)}),[],!1,null,"49ffd834",null),Wn=jn.exports,qn=r(83779),Fn=r.n(qn),$n=r(88408),Zn=r.n($n),Gn=r(33521),Kn=r.n(Gn),Vn=r(97654),Qn=r.n(Vn),zn={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null}},computed:{data:function(){return this.action.data(this)}}},Jn=(0,B.Z)(zn,(function(){var n=this,e=n.$createElement;return(n._self._c||e)(n.data.is,n._g(n._b({tag:"Component"},"Component",n.data,!1),n.action.handlers),[n._v("\n\t"+n._s(n.data.text)+"\n")])}),[],!1,null,null,null).exports,Xn=r(10949),ne=r.n(Xn),ee={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},te={READ_ONLY:ee.READ,UPLOAD_AND_UPDATE:ee.READ|ee.UPDATE|ee.CREATE|ee.DELETE,FILE_DROP:ee.CREATE,ALL:ee.UPDATE|ee.CREATE|ee.READ|ee.DELETE|ee.SHARE};function re(n,e){return n!==ee.NONE&&(n&e)===e}function ie(n){return!(!re(n,ee.READ)&&!re(n,ee.CREATE)||!re(n,ee.READ)&&(re(n,ee.UPDATE)||re(n,ee.DELETE)))}function ae(n,e){return re(n,e)?function(n,e){return n&~e}(n,e):function(n,e){return n|e}(n,e)}var se=r(26937),oe=r(91889),ce={name:"SharePermissionsEditor",components:{ActionButton:bn(),ActionCheckbox:Fn(),ActionRadio:ne(),Tune:se.Z,ChevronLeft:oe.default},mixins:[Dn],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ee,bundledPermissions:te}},computed:{sharePermissionsSummary:function(){var n=this;return Object.values(this.atomicPermissions).filter((function(e){return n.shareHasPermissions(e)})).map((function(e){switch(e){case n.atomicPermissions.CREATE:return n.t("files_sharing","Upload");case n.atomicPermissions.READ:return n.t("files_sharing","Read");case n.atomicPermissions.UPDATE:return n.t("files_sharing","Edit");case n.atomicPermissions.DELETE:return n.t("files_sharing","Delete");default:return null}})).filter((function(n){return null!==n})).join(", ")},sharePermissionsIsBundle:function(){var n=this;return Object.values(te).map((function(e){return n.sharePermissionEqual(e)})).filter((function(n){return n})).length>0},sharePermissionsSetIsValid:function(){return ie(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ee.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(n){return(this.share.permissions&~ee.SHARE)===n},shareHasPermissions:function(n){return re(this.share.permissions,n)},setSharePermissions:function(n){this.share.permissions=n,this.queueUpdate("permissions")},canToggleSharePermissions:function(n){return function(n,e){return ie(ae(n,e))}(this.share.permissions,n)},toggleSharePermissions:function(n){this.share.permissions=ae(this.share.permissions,n),ie(this.share.permissions)&&this.queueUpdate("permissions")}}},le=r(32016),ue={};ue.styleTagTransform=H(),ue.setAttributes=I(),ue.insert=R().bind(null,"head"),ue.domAPI=T(),ue.insertStyleElement=N(),k()(le.Z,ue),le.Z&&le.Z.locals&&le.Z.locals;var he=(0,B.Z)(ce,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("span",[n.isFolder?n._e():t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t")]),n._v(" "),n.isFolder&&n.fileHasCreatePermission&&n.config.isPublicUploadEnabled?[n.showCustomPermissionsForm?t("span",{class:{error:!n.sharePermissionsSetIsValid}},[t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.READ),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.READ)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.READ)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Read"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.CREATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.CREATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.CREATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Upload"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.UPDATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Edit"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.DELETE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.DELETE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.DELETE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Delete"))+"\n\t\t\t")]),n._v(" "),t("ActionButton",{on:{click:function(e){n.showCustomPermissionsForm=!1}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Bundled permissions"))+"\n\t\t\t")])],1):[t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.READ_ONLY),value:n.bundledPermissions.READ_ONLY,name:n.randomFormName,disabled:n.saving},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.READ_ONLY)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Read only"))+"\n\t\t\t")]),n._v(" "),t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.UPLOAD_AND_UPDATE),value:n.bundledPermissions.UPLOAD_AND_UPDATE,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.UPLOAD_AND_UPDATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow upload and editing"))+"\n\t\t\t")]),n._v(" "),t("ActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.FILE_DROP),value:n.bundledPermissions.FILE_DROP,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.FILE_DROP)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","File drop (upload only)"))+"\n\t\t\t")]),n._v(" "),t("ActionButton",{attrs:{title:n.t("files_sharing","Custom permissions")},on:{click:function(e){n.showCustomPermissionsForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[n._v("\n\t\t\t\t"+n._s(n.sharePermissionsIsBundle?"":n.sharePermissionsSummary)+"\n\t\t\t")])]]:n._e()],2)}),[],!1,null,"3d9cb67e",null).exports;function de(n){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},de(n)}function fe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function pe(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){fe(a,r,i,s,o,"next",n)}function o(n){fe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var ge={name:"SharingEntryLink",components:{Actions:w(),ActionButton:bn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionLink:y(),ActionText:xn(),ActionTextEditable:Qn(),ActionSeparator:Kn(),Avatar:h(),ExternalShareAction:Jn,SharePermissionsEditor:he},directives:{Tooltip:S()},mixins:[Dn],props:{canReshare:{type:Boolean,default:!0}},data:function(){return{copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title:function(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return t("files_sharing","Share link")},subtitle:function(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get:function(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=moment(this.config.defaultExpirationDateString);e.isValid()||(e=moment()),this.share.state.expiration=n?e.format("YYYY-MM-DD"):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced&&moment().add(1+this.config.defaultExpireDate,"days")},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(n){var e=this;return pe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=i.default,t.t1=e.share,!n){t.next=8;break}return t.next=5,an();case 5:t.t2=t.sent,t.next=9;break;case 8:t.t2="";case 9:t.t3=t.t2,t.t0.set.call(t.t0,t.t1,"password",t.t3),i.default.set(e.share,"newPassword",e.share.password);case 12:case"end":return t.stop()}}),t)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var n=moment(this.share.passwordExpirationTime);return!(n.diff(moment())<0)&&n.fromNow()},isTalkEnabled:function(){return void 0!==OC.appswebroots.spreed},isPasswordProtectedByTalkAvailable:function(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get:function(){return this.share.sendPasswordByTalk},set:function(n){var e=this;return pe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.share.sendPasswordByTalk=n;case 1:case"end":return t.stop()}}),t)})))()}},isEmailShareType:function(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable:function(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword:function(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate:function(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword:function(){return void 0!==this.share.newPassword},shareLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/s/")+this.share.token},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(n){return n.shareType.includes(g.D.SHARE_TYPE_LINK)||n.shareType.includes(g.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===de(this.config.passwordPolicy)}},methods:{onNewLinkShare:function(){var n=this;return pe(regeneratorRuntime.mark((function e(){var r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.loading){e.next=2;break}return e.abrupt("return");case 2:if(r={share_type:g.D.SHARE_TYPE_LINK},n.config.isDefaultExpireDateEnforced&&(r.expiration=n.config.defaultExpirationDateString),!n.config.enableLinkPasswordByDefault){e.next=8;break}return e.next=7,an();case 7:r.password=e.sent;case 8:if(!n.config.enforcePasswordForPublicLink&&!n.config.isDefaultExpireDateEnforced){e.next=33;break}if(n.pending=!0,!n.share||n.share.id){e.next=20;break}if(!n.checkShare(n.share)){e.next=17;break}return e.next=14,n.pushNewLinkShare(n.share,!0);case 14:return e.abrupt("return",!0);case 17:return n.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),e.abrupt("return",!1);case 20:if(!n.config.enforcePasswordForPublicLink){e.next=24;break}return e.next=23,an();case 23:r.password=e.sent;case 24:return i=new v(r),e.next=27,new Promise((function(e){n.$emit("add:share",i,e)}));case 27:a=e.sent,n.open=!1,n.pending=!1,a.open=!0,e.next=36;break;case 33:return s=new v(r),e.next=36,n.pushNewLinkShare(s);case 36:case"end":return e.stop()}}),e)})))()},pushNewLinkShare:function(n,e){var t=this;return pe(regeneratorRuntime.mark((function r(){var i,a,s,o,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!t.loading){r.next=3;break}return r.abrupt("return",!0);case 3:return t.loading=!0,t.errors={},i=(t.fileInfo.path+"/"+t.fileInfo.name).replace("//","/"),r.next=8,t.createShare({path:i,shareType:g.D.SHARE_TYPE_LINK,password:n.password,expireDate:n.expireDate});case 8:if(a=r.sent,t.open=!1,console.debug("Link share created",a),!e){r.next=17;break}return r.next=14,new Promise((function(n){t.$emit("update:share",a,n)}));case 14:s=r.sent,r.next=20;break;case 17:return r.next=19,new Promise((function(n){t.$emit("add:share",a,n)}));case 19:s=r.sent;case 20:t.config.enforcePasswordForPublicLink||s.copyLink(),r.next=28;break;case 23:r.prev=23,r.t0=r.catch(0),o=r.t0.response,(c=o.data.ocs.meta.message).match(/password/i)?t.onSyncError("password",c):c.match(/date/i)?t.onSyncError("expireDate",c):t.onSyncError("pending",c);case 28:return r.prev=28,t.loading=!1,r.finish(28);case 31:case"end":return r.stop()}}),r,null,[[0,23,28,31]])})))()},onLabelChange:function(n){this.$set(this.share,"newLabel",n.trim())},onLabelSubmit:function(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),this.queueUpdate("label"))},copyLink:function(){var n=this;return pe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$copyText(n.shareLink);case 3:n.$refs.copyButton.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,console.error(e.t0);case 13:return e.prev=13,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[0,8,13,16]])})))()},onPasswordChange:function(n){this.$set(this.share,"newPassword",n)},onPasswordDisable:function(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose:function(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel:function(){this.$emit("remove:share",this.share)}}},me=r(53075),ve={};ve.styleTagTransform=H(),ve.setAttributes=I(),ve.insert=R().bind(null,"head"),ve.domAPI=T(),ve.insertStyleElement=N(),k()(me.Z,ve),me.Z&&me.Z.locals&&me.Z.locals;var _e=(0,B.Z)(ge,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":n.share}},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":n.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),n._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("h5",{attrs:{title:n.title}},[n._v("\n\t\t\t"+n._s(n.title)+"\n\t\t")]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.share&&!n.isEmailShareType&&n.share.token?t("Actions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("ActionLink",{attrs:{href:n.shareLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1):n._e(),n._v(" "),n.pending||!n.pendingPassword&&!n.pendingExpirationDate?n.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onMenuClose}},[n.share?[n.share.canEdit&&n.canReshare?[t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.label,show:n.errors.label,trigger:"manual",defaultContainer:".app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"label",class:{error:n.errors.label},attrs:{disabled:n.saving,"aria-label":n.t("files_sharing","Share label"),value:void 0!==n.share.newLabel?n.share.newLabel:n.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":n.onLabelChange,submit:n.onLabelSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Share label"))+"\n\t\t\t\t")]),n._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":n.canReshare,share:n.share,"file-info":n.fileInfo},on:{"update:share":function(e){n.share=e}}}),n._v(" "),t("ActionSeparator"),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.share.hideDownload,disabled:n.saving},on:{"update:checked":function(e){return n.$set(n.share,"hideDownload",e)},change:function(e){return n.queueUpdate("hideDownload")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.enforcePasswordForPublicLink?n.t("files_sharing","Password protection (enforced)"):n.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),n._v(" "),n.isPasswordProtected?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"password",staticClass:"share-link-password",class:{error:n.errors.password},attrs:{disabled:n.saving,required:n.config.enforcePasswordForPublicLink,value:n.hasUnsavedPassword?n.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:n.hasUnsavedPassword?"text":"password"},on:{"update:value":n.onPasswordChange,submit:n.onPasswordSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isEmailShareType&&n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:n.passwordExpirationTime}))+"\n\t\t\t\t")]):n.isEmailShareType&&null!==n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-error"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isPasswordProtectedByTalkAvailable?t("ActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:n.isPasswordProtectedByTalk,disabled:!n.canTogglePasswordProtectedByTalkAvailable||n.saving},on:{"update:checked":function(e){n.isPasswordProtectedByTalk=e},change:n.onPasswordProtectedByTalkChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.isDefaultExpireDateEnforced?n.t("files_sharing","Expiration date (enforced)"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",staticClass:"share-link-expire-date",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,placeholder:n.t("files_sharing","Enter a note for the share recipient"),value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e(),n._v(" "),t("ActionSeparator"),n._v(" "),n._l(n.externalLinkActions,(function(e){return t("ExternalShareAction",{key:e.id,attrs:{id:e.id,action:e,"file-info":n.fileInfo,share:n.share}})})),n._v(" "),n._l(n.externalLegacyLinkActions,(function(e,r){var i=e.icon,a=e.url,s=e.name;return t("ActionLink",{key:r,attrs:{href:a(n.shareLink),icon:i,target:"_blank"}},[n._v("\n\t\t\t\t"+n._s(s)+"\n\t\t\t")])})),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t\t")]):n._e(),n._v(" "),!n.isEmailShareType&&n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Add another link"))+"\n\t\t\t")]):n._e()]:n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:n.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create a new share link"))+"\n\t\t")]):n._e()],2):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onNewLinkShare}},[n.errors.pending?t("ActionText",{class:{error:n.errors.pending},attrs:{icon:"icon-error"}},[n._v("\n\t\t\t"+n._s(n.errors.pending)+"\n\t\t")]):t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),n._v(" "),n.pendingPassword?t("ActionText",{attrs:{icon:"icon-password"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):n.config.enableLinkPasswordByDefault?t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingPassword||n.share.password?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.password,\n\t\t\t\tshow: errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-password",attrs:{value:n.share.password,disabled:n.saving,required:n.config.enableLinkPasswordByDefault||n.config.enforcePasswordForPublicLink,minlength:n.isPasswordPolicyEnabled&&n.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(e){return n.$set(n.share,"password",e)},submit:n.onNewLinkShare}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionText",{attrs:{icon:"icon-calendar-dark"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.expireDate,\n\t\t\t\tshow: errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-expire-date",attrs:{disabled:n.saving,lang:n.lang,icon:"",type:"date","value-type":"format","disabled-date":n.disabledDate},model:{value:n.share.expireDate,callback:function(e){n.$set(n.share,"expireDate",e)},expression:"share.expireDate"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t")]):n._e(),n._v(" "),t("ActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create share"))+"\n\t\t")]),n._v(" "),t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onCancel.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"a63eeae4",null),Ae={name:"SharingLinkList",components:{SharingEntryLink:_e.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0},canReshare:{type:Boolean,required:!0}},data:function(){return{canLinkShare:OC.getCapabilities().files_sharing.public.enabled}},computed:{hasLinkShares:function(){var n=this;return this.shares.filter((function(e){return e.type===n.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(n,e){this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this;this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))},removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},ye=(0,B.Z)(Ae,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!n.hasLinkShares&&n.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo},on:{"add:share":n.addShare}}):n._e(),n._v(" "),n.hasShares?n._l(n.shares,(function(e,r){return t("SharingEntryLink",{key:e.id,attrs:{"can-reshare":n.canReshare,share:n.shares[r],"file-info":n.fileInfo},on:{"update:share":[function(e){return n.$set(n.shares,r,e)},function(e){return n.awaitForShare.apply(void 0,arguments)}],"add:share":function(e){return n.addShare.apply(void 0,arguments)},"remove:share":n.removeShare}})})):n._e()],2):n._e()}),[],!1,null,null,null),Ee=ye.exports;function we(n){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},we(n)}var be={name:"SharingEntry",components:{Actions:w(),ActionButton:bn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionTextEditable:Qn(),Avatar:h()},directives:{Tooltip:S()},mixins:[Dn],data:function(){return{permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}},computed:{title:function(){var n=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?n+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?n+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?n+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?n+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(n+=" (".concat(t("files_sharing","guest"),")")),n},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var n={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",n):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",n):t("files_sharing","Shared with {user} by {owner}",n)}return null},canHaveNote:function(){return!this.isRemote},isRemote:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(n){this.updatePermissions({isEditChecked:n})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(n){this.updatePermissions({isCreateChecked:n})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(n){this.updatePermissions({isDeleteChecked:n})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(n){this.updatePermissions({isReshareChecked:n})}},hasRead:{get:function(){return this.share.hasReadPermission}},isFolder:function(){return"dir"===this.fileInfo.type},hasExpirationDate:{get:function(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set:function(n){this.share.expireDate=n?""!==this.config.defaultInternalExpirationDateString?this.config.defaultInternalExpirationDateString:moment().format("YYYY-MM-DD"):""}},dateMaxEnforced:function(){return this.isRemote?this.config.isDefaultRemoteExpireDateEnforced&&moment().add(1+this.config.defaultRemoteExpireDate,"days"):this.config.isDefaultInternalExpireDateEnforced&&moment().add(1+this.config.defaultInternalExpireDate,"days")},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===we(this.share.status)&&!Array.isArray(this.share.status)}},methods:{updatePermissions:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.isEditChecked,t=void 0===e?this.canEdit:e,r=n.isCreateChecked,i=void 0===r?this.canCreate:r,a=n.isDeleteChecked,s=void 0===a?this.canDelete:a,o=n.isReshareChecked,c=void 0===o?this.canReshare:o,l=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(t?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=l,this.queueUpdate("permissions")},onMenuClose:function(){this.onNoteSubmit()}}},Se=be,Ce=r(4623),xe={};xe.styleTagTransform=H(),xe.setAttributes=I(),xe.insert=R().bind(null,"head"),xe.domAPI=T(),xe.insertStyleElement=N(),k()(Ce.Z,xe),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ke=(0,B.Z)(Se,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":n.share.type!==n.SHARE_TYPES.SHARE_TYPE_USER,user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":n.share.type===n.SHARE_TYPES.SHARE_TYPE_USER?n.share.shareWith:"","menu-position":"left",url:n.share.shareWithAvatar}}),n._v(" "),t(n.share.shareWithLink?"a":"div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.tooltip,expression:"tooltip",modifiers:{auto:!0}}],tag:"component",staticClass:"sharing-entry__desc",attrs:{href:n.share.shareWithLink}},[t("h5",[n._v(n._s(n.title)),n.isUnique?n._e():t("span",{staticClass:"sharing-entry__desc-unique"},[n._v(" ("+n._s(n.share.shareWithDisplayNameUnique)+")")])]),n._v(" "),n.hasStatus?t("p",[t("span",[n._v(n._s(n.share.status.icon||""))]),n._v(" "),t("span",[n._v(n._s(n.share.status.message||""))])]):n._e()]),n._v(" "),t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:n.onMenuClose}},[n.share.canEdit?[t("ActionCheckbox",{ref:"canEdit",attrs:{checked:n.canEdit,value:n.permissionsEdit,disabled:n.saving||!n.canSetEdit},on:{"update:checked":function(e){n.canEdit=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t\t")]),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canCreate",attrs:{checked:n.canCreate,value:n.permissionsCreate,disabled:n.saving||!n.canSetCreate},on:{"update:checked":function(e){n.canCreate=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow creating"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canDelete",attrs:{checked:n.canDelete,value:n.permissionsDelete,disabled:n.saving||!n.canSetDelete},on:{"update:checked":function(e){n.canDelete=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):n._e(),n._v(" "),n.config.isResharingAllowed?t("ActionCheckbox",{ref:"canReshare",attrs:{checked:n.canReshare,value:n.permissionsShare,disabled:n.saving||!n.canSetReshare},on:{"update:checked":function(e){n.canReshare=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultInternalExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t"+n._s(n.config.isDefaultInternalExpireDateEnforced?n.t("files_sharing","Expiration date enforced"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual"},expression:"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t")]):n._e(),n._v(" "),n.canHaveNote?[t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e()]:n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t")]):n._e()],2)],1)}),[],!1,null,"11f6b64f",null);function Pe(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var Te={name:"SharingList",components:{SharingEntry:ke.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0}},computed:{hasShares:function(){return 0===this.shares.length},isUnique:function(){var n=this;return function(e){return(t=n.shares,function(n){if(Array.isArray(n))return Pe(n)}(t)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||function(n,e){if(n){if("string"==typeof n)return Pe(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Pe(n,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.")}()).filter((function(t){return e.type===n.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName})).length<=1;var t}}},methods:{removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},De=(0,B.Z)(Te,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{staticClass:"sharing-sharee-list"},n._l(n.shares,(function(e){return t("SharingEntry",{key:e.id,attrs:{"file-info":n.fileInfo,share:e,"is-unique":n.isUnique(e)},on:{"remove:share":n.removeShare}})})),1)}),[],!1,null,null,null).exports;function Re(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Oe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ie(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Oe(a,r,i,s,o,"next",n)}function o(n){Oe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Le={name:"SharingTab",components:{Avatar:h(),CollectionList:c.G,SharingEntryInternal:K,SharingEntrySimple:j,SharingInherited:Wn,SharingInput:En,SharingLinkList:Ee,SharingList:De},mixins:[_],data:function(){return{config:new p,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections()}},computed:{isSharedWithMe:function(){return Object.keys(this.sharedWithMe).length>0},canReshare:function(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{update:function(n){var e=this;return Ie(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fileInfo=n,e.resetState(),e.getShares();case 3:case"end":return t.stop()}}),t)})))()},getShares:function(){var n=this;return Ie(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,u,h,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(n.fileInfo.path+"/"+n.fileInfo.name).replace("//","/"),s=d.default.get(r,{params:{format:i,path:a,reshares:!0}}),o=d.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),e.next=9,Promise.all([s,o]);case 9:c=e.sent,g=2,u=function(n){if(Array.isArray(n))return n}(p=c)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,i,a=[],s=!0,o=!1;try{for(t=t.call(n);!(s=(r=t.next()).done)&&(a.push(r.value),!e||a.length!==e);s=!0);}catch(n){o=!0,i=n}finally{try{s||null==t.return||t.return()}finally{if(o)throw i}}return a}}(p,g)||function(n,e){if(n){if("string"==typeof n)return Re(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Re(n,e):void 0}}(p,g)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=u[0],f=u[1],n.loading=!1,n.processSharedWithMe(f),n.processShares(h),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(0),n.error=t("files_sharing","Unable to load the shares list"),n.loading=!1,console.error("Error loading the shares list",e.t0);case 23:case"end":return e.stop()}var p,g}),e,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(n){var e=moment(n.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*e)})),moment().unix()>e&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(n){var e=this,t=n.data;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){var r=t.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime}));this.linkShares=r.filter((function(n){return n.type===e.SHARE_TYPES.SHARE_TYPE_LINK||n.type===e.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(n){return n.type!==e.SHARE_TYPES.SHARE_TYPE_LINK&&n.type!==e.SHARE_TYPES.SHARE_TYPE_EMAIL})),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(n){var e=n.data;if(e.ocs&&e.ocs.data&&e.ocs.data[0]){var r=new v(e),i=function(n){return n.type===g.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_ROOM?n.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1})}(r),a=r.ownerDisplayName,s=r.owner;this.sharedWithMe={displayName:a,title:i,user:s},this.reshare=r,r.expireDate&&moment(r.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(r),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,r))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(n):this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this.$refs.shareList;n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=this.$refs.linkShareList),this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))}}},Ne=Le,Ye=(0,B.Z)(Ne,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{class:{"icon-loading":n.loading}},[n.error?t("div",{staticClass:"emptycontent"},[t("div",{staticClass:"icon icon-error"}),n._v(" "),t("h2",[n._v(n._s(n.error))])]):[n.isSharedWithMe?t("SharingEntrySimple",n._b({staticClass:"sharing-entry__reshare",scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.sharedWithMe.user,"display-name":n.sharedWithMe.displayName,"tooltip-message":""}})]},proxy:!0}],null,!1,1643724538)},"SharingEntrySimple",n.sharedWithMe,!1)):n._e(),n._v(" "),n.loading?n._e():t("SharingInput",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,"link-shares":n.linkShares,reshare:n.reshare,shares:n.shares},on:{"add:share":n.addShare}}),n._v(" "),n.loading?n._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,shares:n.linkShares}}),n._v(" "),n.loading?n._e():t("SharingList",{ref:"shareList",attrs:{shares:n.shares,"file-info":n.fileInfo}}),n._v(" "),n.canReshare&&!n.loading?t("SharingInherited",{attrs:{"file-info":n.fileInfo}}):n._e(),n._v(" "),t("SharingEntryInternal",{attrs:{"file-info":n.fileInfo}}),n._v(" "),n.fileInfo?t("CollectionList",{attrs:{id:""+n.fileInfo.id,type:"file",name:n.fileInfo.name}}):n._e(),n._v(" "),n._l(n.sections,(function(e,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(e(n.$refs["section-"+r],n.fileInfo),{tag:"component",attrs:{"file-info":n.fileInfo}})],1)}))]],2)}),[],!1,null,null,null).exports;function He(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ue=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(n){return""!==n.displayName.trim()&&"function"==typeof n.handler?(this._state.results.push(n),!0):(console.error("Invalid search result provided",n),!1)}}])&&He(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Me(n){return Me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Me(n)}function Be(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var je=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===Me(n)&&n.icon&&n.name&&n.url?(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&Be(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function We(n){return We="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},We(n)}function qe(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Fe=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return"object"===We(n)&&"string"==typeof n.id&&"function"==typeof n.data&&Array.isArray(n.shareType)&&"object"===We(n.handlers)&&Object.values(n.handlers).every((function(n){return"function"==typeof n}))?this._state.actions.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An action with the same id ".concat(n.id," already exists"),n),!1):(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&qe(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function $e(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ze=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_sections")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._sections=[]}var e,t;return e=n,(t=[{key:"registerSection",value:function(n){this._sections.push(n)}},{key:"getSections",value:function(){return this._sections}}])&&$e(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ge(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new Ue}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new je}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new Fe}),Object.assign(window.OCA.Sharing,{ShareTabSections:new Ze}),i.default.prototype.t=o.translate,i.default.prototype.n=o.translatePlural,i.default.use(s());var Ke=i.default.extend(Ye),Ve=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.translate)("files_sharing","Sharing"),icon:"icon-share",mount:function(n,e,t){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return Ve&&Ve.$destroy(),Ve=new Ke({parent:t}),r.next=4,Ve.update(e);case 4:Ve.$mount(n);case 5:case"end":return r.stop()}}),r)})),function(){var n=this,e=arguments;return new Promise((function(t,i){var a=r.apply(n,e);function s(n){Ge(a,t,i,s,o,"next",n)}function o(n){Ge(a,t,i,s,o,"throw",n)}s(void 0)}))})();var r},update:function(n){Ve.update(n)},destroy:function(){Ve.$destroy(),Ve=null}}))}))},32016:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".error[data-v-3d9cb67e] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AA+RC,wDACC,mCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},4623:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-11f6b64f]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-11f6b64f]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-11f6b64f]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},71296:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},52475:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__internal .avatar-external[data-v-854dc2c6]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-854dc2c6]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAwGC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},53075:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-a63eeae4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-a63eeae4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc h5[data-v-a63eeae4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__desc p[data-v-a63eeae4]{color:var(--color-text-maxcontrast)}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-a63eeae4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-a63eeae4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-a63eeae4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-a63eeae4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-a63eeae4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-a63eeae4],.sharing-entry .action-item~.sharing-entry__loading[data-v-a63eeae4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-a63eeae4]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,yCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAED,wCACC,mCAAA,CAKD,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\th5 {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},35917:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-1436bf4a]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1436bf4a]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc h5[data-v-1436bf4a]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__desc p[data-v-1436bf4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-1436bf4a]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AA4EA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,yCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,wCACC,mCAAA,CAGF,yCACC,2BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\th5 {\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tmax-width: inherit;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},84721:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-fff);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,uCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-fff);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},93591:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__inherited .avatar-shared[data-v-49ffd834]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AA6JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(e,t,r,a){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],a=n[u][2];for(var o=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(n){return i.O[n](t[c])}))?t.splice(c--,1):(o=!1,a<s&&(s=a));if(o){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[t,r,a]},i.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(e,{a:e}),e},i.d=function(n,e){for(var t in e)i.o(e,t)&&!i.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=7870,function(){i.b=document.baseURI||self.location.href;var n={7870:0};i.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,a,s=t[0],o=t[1],c=t[2],l=0;if(s.some((function(e){return 0!==n[e]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(e&&e(t);l<s.length;l++)a=s[l],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(13610)}));a=i.O(a)}();
-//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=de45dd2340780990f033 \ No newline at end of file
+!function(){"use strict";var n,e={62206:function(n,e,r){var i=r(20144),a=r(72268),s=r.n(a),o=r(9944),c=r(1794),l=r(79753),u=r(28017),h=r.n(u),d=r(4820);function f(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var p=function(){function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n)}var e,t;return e=n,(t=[{key:"isPublicUploadEnabled",get:function(){return document.getElementById("filestable")&&"yes"===document.getElementById("filestable").dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDateString",get:function(){var n="";if(this.isDefaultExpireDateEnabled){var e=window.moment.utc(),t=this.defaultExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultInternalExpirationDateString",get:function(){var n="";if(this.isDefaultInternalExpireDateEnabled){var e=window.moment.utc(),t=this.defaultInternalExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultRemoteExpirationDateString",get:function(){var n="";if(this.isDefaultRemoteExpireDateEnabled){var e=window.moment.utc(),t=this.defaultRemoteExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultRemoteExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var n,e,t,r=OC.getCapabilities();return void 0!==(null==r||null===(n=r.files_sharing)||void 0===n?void 0:n.sharebymail)&&!0===(null==r||null===(e=r.files_sharing)||void 0===e||null===(t=e.public)||void 0===t?void 0:t.enabled)}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"defaultRemoteExpireDate",get:function(){return OC.appConfig.core.defaultRemoteExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"shouldAlwaysShowUnique",get:function(){var n,e;return!0===(null===(n=OC.getCapabilities().files_sharing)||void 0===n||null===(e=n.sharee)||void 0===e?void 0:e.always_show_unique)}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var n=OC.getCapabilities();return n.password_policy?n.password_policy:{}}}])&&f(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),g=r(41922);function m(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var v=function(){function n(e){var t,r;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),r=void 0,(t="_share")in this?Object.defineProperty(this,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):this[t]=r,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,this._share=e}var e,t;return e=n,(t=[{key:"state",get:function(){return this._share}},{key:"id",get:function(){return this._share.id}},{key:"type",get:function(){return this._share.share_type}},{key:"permissions",get:function(){return this._share.permissions},set:function(n){this._share.permissions=n}},{key:"owner",get:function(){return this._share.uid_owner}},{key:"ownerDisplayName",get:function(){return this._share.displayname_owner}},{key:"shareWith",get:function(){return this._share.share_with}},{key:"shareWithDisplayName",get:function(){return this._share.share_with_displayname||this._share.share_with}},{key:"shareWithDisplayNameUnique",get:function(){return this._share.share_with_displayname_unique||this._share.share_with}},{key:"shareWithLink",get:function(){return this._share.share_with_link}},{key:"shareWithAvatar",get:function(){return this._share.share_with_avatar}},{key:"uidFileOwner",get:function(){return this._share.uid_file_owner}},{key:"displaynameFileOwner",get:function(){return this._share.displayname_file_owner||this._share.uid_file_owner}},{key:"createdTime",get:function(){return this._share.stime}},{key:"expireDate",get:function(){return this._share.expiration},set:function(n){this._share.expiration=n}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(n){this._share.note=n}},{key:"label",get:function(){return this._share.label},set:function(n){this._share.label=n}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(n){this._share.hide_download=!0===n}},{key:"password",get:function(){return this._share.password},set:function(n){this._share.password=n}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(n){this._share.password_expiration_time=n}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(n){this._share.send_password_by_talk=n}},{key:"path",get:function(){return this._share.path}},{key:"itemType",get:function(){return this._share.item_type}},{key:"mimetype",get:function(){return this._share.mimetype}},{key:"fileSource",get:function(){return this._share.file_source}},{key:"fileTarget",get:function(){return this._share.file_target}},{key:"fileParent",get:function(){return this._share.file_parent}},{key:"hasReadPermission",get:function(){return!!(this.permissions&OC.PERMISSION_READ)}},{key:"hasCreatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_CREATE)}},{key:"hasDeletePermission",get:function(){return!!(this.permissions&OC.PERMISSION_DELETE)}},{key:"hasUpdatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_UPDATE)}},{key:"hasSharePermission",get:function(){return!!(this.permissions&OC.PERMISSION_SHARE)}},{key:"canEdit",get:function(){return!0===this._share.can_edit}},{key:"canDelete",get:function(){return!0===this._share.can_delete}},{key:"viaFileid",get:function(){return this._share.via_fileid}},{key:"viaPath",get:function(){return this._share.via_path}},{key:"parent",get:function(){return this._share.parent}},{key:"storageId",get:function(){return this._share.storage_id}},{key:"storage",get:function(){return this._share.storage}},{key:"itemSource",get:function(){return this._share.item_source}},{key:"status",get:function(){return this._share.status}}])&&m(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),_={data:function(){return{SHARE_TYPES:g.D}}},A=r(74466),y=r.n(A),E=r(79440),w=r.n(E),b=r(15168),S=r.n(b),C={name:"SharingEntrySimple",components:{Actions:w()},directives:{Tooltip:S()},props:{title:{type:String,default:"",required:!0},tooltip:{type:String,default:""},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0}}},x=r(93379),k=r.n(x),P=r(7795),T=r.n(P),R=r(90569),D=r.n(R),O=r(3565),I=r.n(O),L=r(19216),N=r.n(L),Y=r(44589),H=r.n(Y),U=r(35917),M={};M.styleTagTransform=H(),M.setAttributes=I(),M.insert=D().bind(null,"head"),M.domAPI=T(),M.insertStyleElement=N(),k()(U.Z,M),U.Z&&U.Z.locals&&U.Z.locals;var B=r(51900),W=(0,B.Z)(C,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[n._t("avatar"),n._v(" "),t("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.tooltip,expression:"tooltip"}],staticClass:"sharing-entry__desc"},[t("h5",[n._v(n._s(n.title))]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.$slots.default?t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"}},[n._t("default")],2):n._e()],2)}),[],!1,null,"1436bf4a",null).exports;function j(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var q={name:"SharingEntryInternal",components:{ActionLink:y(),SharingEntrySimple:W},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{copied:!1,copySuccess:!1}},computed:{internalLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/")+this.fileInfo.id},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},internalLinkSubtitle:function(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{copyLink:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(e.internalLink);case 3:e.$refs.copyButton.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=13;break;case 8:n.prev=8,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,console.error(n.t0);case 13:return n.prev=13,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(13);case 16:case"end":return n.stop()}}),n,null,[[0,8,13,16]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){j(a,r,i,s,o,"next",n)}function o(n){j(a,r,i,s,o,"throw",n)}s(void 0)}))})()}}},F=q,$=r(52475),Z={};Z.styleTagTransform=H(),Z.setAttributes=I(),Z.insert=D().bind(null,"head"),Z.domAPI=T(),Z.insertStyleElement=N(),k()($.Z,Z),$.Z&&$.Z.locals&&$.Z.locals;var G=(0,B.Z)(F,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{staticClass:"sharing-entry__internal",attrs:{title:n.t("files_sharing","Internal link"),subtitle:n.internalLinkSubtitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[n._v(" "),t("ActionLink",{ref:"copyButton",attrs:{href:n.internalLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.clipboardTooltip)+"\n\t")])],1)}),[],!1,null,"854dc2c6",null),K=G.exports,V=r(22200),Q=r(20296),z=r.n(Q),J=r(7811),X=r.n(J);function nn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function en(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){nn(a,r,i,s,o,"next",n)}function o(n){nn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var tn=new p,rn="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function an(){return sn.apply(this,arguments)}function sn(){return(sn=en(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!tn.passwordPolicy.api||!tn.passwordPolicy.api.generate){n.next=12;break}return n.prev=1,n.next=4,d.default.get(tn.passwordPolicy.api.generate);case 4:if(!(e=n.sent).data.ocs.data.password){n.next=7;break}return n.abrupt("return",e.data.ocs.data.password);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(1),console.info("Error generating password from password_policy",n.t0);case 12:return n.abrupt("return",Array(10).fill(0).reduce((function(n,e){return n+rn.charAt(Math.floor(Math.random()*rn.length))}),""));case 13:case"end":return n.stop()}}),n,null,[[1,9]])})))).apply(this,arguments)}function on(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function cn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){on(a,r,i,s,o,"next",n)}function o(n){on(a,r,i,s,o,"throw",n)}s(void 0)}))}}r(35449);var ln=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),un={methods:{createShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l,u,h,f,p,g,m,_,A,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.path,i=n.permissions,a=n.shareType,s=n.shareWith,o=n.publicUpload,c=n.password,l=n.sendPasswordByTalk,u=n.expireDate,h=n.label,e.prev=1,e.next=4,d.default.post(ln,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:u,label:h});case 4:if(null!=(p=e.sent)&&null!==(f=p.data)&&void 0!==f&&f.ocs){e.next=7;break}throw p;case 7:return e.abrupt("return",new v(p.data.ocs.data));case 10:throw e.prev=10,e.t0=e.catch(1),console.error("Error while creating share",e.t0),y=null===e.t0||void 0===e.t0||null===(g=e.t0.response)||void 0===g||null===(m=g.data)||void 0===m||null===(_=m.ocs)||void 0===_||null===(A=_.meta)||void 0===A?void 0:A.message,OC.Notification.showTemporary(y?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:y}):t("files_sharing","Error creating the share"),{type:"error"}),e.t0;case 16:case"end":return e.stop()}}),e,null,[[1,10]])})))()},deleteShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.default.delete(ln+"/".concat(n));case 3:if(null!=(i=e.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){e.next=6;break}throw i;case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e.catch(0),console.error("Error while deleting share",e.t0),l=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(s=a.data)||void 0===s||null===(o=s.ocs)||void 0===o||null===(c=o.meta)||void 0===c?void 0:c.message,OC.Notification.showTemporary(l?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:l}):t("files_sharing","Error deleting the share"),{type:"error"}),e.t0;case 15:case"end":return e.stop()}}),e,null,[[0,9]])})))()},updateShare:function(n,e){return cn(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,u,h;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d.default.put(ln+"/".concat(n),e);case 3:if(null!=(a=r.sent)&&null!==(i=a.data)&&void 0!==i&&i.ocs){r.next=8;break}throw a;case 8:return r.abrupt("return",a.data.ocs.data);case 9:r.next=17;break;case 11:throw r.prev=11,r.t0=r.catch(0),console.error("Error while updating share",r.t0),400!==r.t0.response.status&&(u=null===r.t0||void 0===r.t0||null===(s=r.t0.response)||void 0===s||null===(o=s.data)||void 0===o||null===(c=o.ocs)||void 0===c||null===(l=c.meta)||void 0===l?void 0:l.message,OC.Notification.showTemporary(u?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:u}):t("files_sharing","Error updating the share"),{type:"error"})),h=r.t0.response.data.ocs.meta.message,new Error(h);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}};function hn(n){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},hn(n)}function dn(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function fn(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?dn(Object(t),!0).forEach((function(e){pn(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):dn(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function pn(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function gn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function mn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){gn(a,r,i,s,o,"next",n)}function o(n){gn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var vn={name:"SharingInput",components:{Multiselect:X()},mixins:[_,un],props:{shares:{type:Array,default:function(){return[]},required:!0},linkShares:{type:Array,default:function(){return[]},required:!0},fileInfo:{type:Object,default:function(){},required:!0},reshare:{type:v,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new p,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[]}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var n=this.config.isRemoteShareAllowed;return this.canReshare?n?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery:function(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options:function(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText:function(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted:function(){this.getRecommendations()},methods:{asyncFind:function(n,e){var t=this;return mn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!t.isValidQuery){e.next=5;break}return t.loading=!0,e.next=5,t.debounceGetSuggestions(n);case 5:case"end":return e.stop()}}),e)})))()},getSuggestions:function(n){var e=arguments,r=this;return mn(regeneratorRuntime.mark((function i(){var a,s,o,c,u,h,f,p,g,m,v,_,A;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.length>1&&void 0!==e[1]&&e[1],r.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(a=!0),s=[r.SHARE_TYPES.SHARE_TYPE_USER,r.SHARE_TYPES.SHARE_TYPE_GROUP,r.SHARE_TYPES.SHARE_TYPE_REMOTE,r.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,r.SHARE_TYPES.SHARE_TYPE_CIRCLE,r.SHARE_TYPES.SHARE_TYPE_ROOM,r.SHARE_TYPES.SHARE_TYPE_GUEST,r.SHARE_TYPES.SHARE_TYPE_DECK],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),o=null,i.prev=6,i.next=9,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:n,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:o=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),console.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:c=o.data.ocs.data,u=o.data.ocs.data.exact,c.exact=[],h=Object.values(u).reduce((function(n,e){return n.concat(e)}),[]),f=Object.values(c).reduce((function(n,e){return n.concat(e)}),[]),p=r.filterOutExistingShares(h).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),g=r.filterOutExistingShares(f).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),m=[],c.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),v=r.externalResults.filter((function(n){return!n.condition||n.condition(r)})),_=p.concat(g).concat(v).concat(m),A=_.reduce((function(n,e){return e.displayName?(n[e.displayName]||(n[e.displayName]=0),n[e.displayName]++,n):n}),{}),r.suggestions=_.map((function(n){return A[n.displayName]>1&&!n.desc?fn(fn({},n),{},{desc:n.shareWithDisplayNameUnique}):n})),r.loading=!1,console.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:z()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var n=this;return mn(regeneratorRuntime.mark((function e(){var t,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,t=null,e.prev=2,e.next=5,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:n.fileInfo.type}});case 5:t=e.sent,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.error("Error fetching recommendations",e.t0),e.abrupt("return");case 12:r=n.externalResults.filter((function(e){return!e.condition||e.condition(n)})),i=Object.values(t.data.ocs.data.exact).reduce((function(n,e){return n.concat(e)}),[]),n.recommendations=n.filterOutExistingShares(i).map((function(e){return n.formatForMultiselect(e)})).concat(r),n.loading=!1,console.info("recommendations",n.recommendations);case 17:case"end":return e.stop()}}),e,null,[[2,8]])})))()},filterOutExistingShares:function(n){var e=this;return n.reduce((function(n,t){if("object"!==hn(t))return n;try{if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,V.getCurrentUser)().uid)return n;if(e.reshare&&t.value.shareWith===e.reshare.owner)return n}if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==e.linkShares.map((function(n){return n.shareWith})).indexOf(t.value.shareWith.trim()))return n}else{var r=e.shares.reduce((function(n,e){return n[e.shareWith]=e.type,n}),{}),i=t.value.shareWith.trim();if(i in r&&r[i]===t.value.shareType)return n}n.push(t)}catch(e){return n}return n}),[])},shareTypeToIcon:function(n){switch(n){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return"icon-user";case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return"icon-group";case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return"icon-mail";case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return"icon-circle";case this.SHARE_TYPES.SHARE_TYPE_ROOM:return"icon-room";case this.SHARE_TYPES.SHARE_TYPE_DECK:return"icon-deck";default:return""}},formatForMultiselect:function(n){var e,r;if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)e=null!==(r=n.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!n.value.server)if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)e=n.value.shareWith;else{var i;e=null!==(i=n.shareWithDescription)&&void 0!==i?i:""}else e=t("files_sharing","on {server}",{server:n.value.server});return{id:"".concat(n.value.shareType,"-").concat(n.value.shareWith),shareWith:n.value.shareWith,shareType:n.value.shareType,user:n.uuid||n.value.shareWith,isNoUser:n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:n.name||n.label,subtitle:e,shareWithDisplayNameUnique:n.shareWithDisplayNameUnique||"",icon:this.shareTypeToIcon(n.value.shareType)}},addShare:function(n){var e=this;return mn(regeneratorRuntime.mark((function t(){var r,i,a,s,o,c,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.lookup){t.next=5;break}return t.next=3,e.getSuggestions(e.query,!0);case 3:return e.$nextTick((function(){e.$refs.multiselect.$el.querySelector(".multiselect__input").focus()})),t.abrupt("return",!0);case 5:if(!n.handler){t.next=11;break}return t.next=8,n.handler(e);case 8:return r=t.sent,e.$emit("add:share",new v(r)),t.abrupt("return",!0);case 11:if(e.loading=!0,console.debug("Adding a new share from the input for",n),t.prev=13,o=null,!e.config.enforcePasswordForPublicLink||n.shareType!==e.SHARE_TYPES.SHARE_TYPE_EMAIL){t.next=19;break}return t.next=18,an();case 18:o=t.sent;case 19:return c=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),t.next=22,e.createShare({path:c,shareType:n.shareType,shareWith:n.shareWith,password:o,permissions:e.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions});case 22:if(l=t.sent,!o){t.next=31;break}return l.newPassword=o,t.next=27,new Promise((function(n){e.$emit("add:share",l,n)}));case 27:t.sent.open=!0,t.next=32;break;case 31:e.$emit("add:share",l);case 32:return null!==(i=e.$refs.multiselect)&&void 0!==i&&null!==(a=i.$refs)&&void 0!==a&&null!==(s=a.VueMultiselect)&&void 0!==s&&s.search&&(e.$refs.multiselect.$refs.VueMultiselect.search=""),t.next=35,e.getRecommendations();case 35:t.next=43;break;case 37:t.prev=37,t.t0=t.catch(13),(u=e.$refs.multiselect.$el.querySelector("input"))&&u.focus(),e.query=n.shareWith,console.error("Error while adding new share",t.t0);case 43:return t.prev=43,e.loading=!1,t.finish(43);case 46:case"end":return t.stop()}}),t,null,[[13,37,43,46]])})))()}}},_n=vn,An=r(84721),yn={};yn.styleTagTransform=H(),yn.setAttributes=I(),yn.insert=D().bind(null,"head"),yn.domAPI=T(),yn.insertStyleElement=N(),k()(An.Z,yn),An.Z&&An.Z.locals&&An.Z.locals;var En=(0,B.Z)(_n,(function(){var n=this,e=n.$createElement;return(n._self._c||e)("Multiselect",{ref:"multiselect",staticClass:"sharing-input",attrs:{"clear-on-select":!0,disabled:!n.canReshare,"hide-selected":!0,"internal-search":!1,loading:n.loading,options:n.options,placeholder:n.inputPlaceholder,"preselect-first":!0,"preserve-search":!0,searchable:!0,"user-select":!0,"open-direction":"below",label:"displayName","track-by":"id"},on:{"search-change":n.asyncFind,select:n.addShare},scopedSlots:n._u([{key:"noOptions",fn:function(){return[n._v("\n\t\t"+n._s(n.t("files_sharing","No recommendations. Start typing."))+"\n\t")]},proxy:!0},{key:"noResult",fn:function(){return[n._v("\n\t\t"+n._s(n.noResultText)+"\n\t")]},proxy:!0}])})}),[],!1,null,null,null).exports,wn=r(56286),bn=r.n(wn),Sn=r(76632),Cn=r(41009),xn=r.n(Cn),kn=r(25746);function Pn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Tn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Pn(a,r,i,s,o,"next",n)}function o(n){Pn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Rn={mixins:[un,_],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var n;return{config:new p,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new kn.Z({concurrency:1}),reactiveState:null===(n=this.share)||void 0===n?void 0:n.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(n){this.share.note=n?null:""}},dateTomorrow:function(){return moment().add(1,"days")},lang:function(){var n=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:n,weekdaysShort:n},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,V.getCurrentUser)().uid}},methods:{checkShare:function(n){return(!n.password||"string"==typeof n.password&&""!==n.password.trim())&&!(n.expirationDate&&!moment(n.expirationDate).isValid())},onExpirationChange:function(n){var e=moment(n).format("YYYY-MM-DD");this.share.expireDate=e,this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(n){this.$set(this.share,"newNote",n.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},onDelete:function(){var n=this;return Tn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,n.open=!1,e.next=5,n.deleteShare(n.share.id);case 5:console.debug("Share deleted",n.share.id),n.$emit("remove:share",n.share),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),n.open=!0;case 12:return e.prev=12,n.loading=!1,e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[0,9,12,15]])})))()},queueUpdate:function(){for(var n=this,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(0!==t.length)if(this.share.id){var i={};t.map((function(e){return i[e]=n.share[e].toString()})),this.updateQueue.add(Tn(regeneratorRuntime.mark((function e(){var r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.saving=!0,n.errors={},e.prev=2,e.next=5,n.updateShare(n.share.id,i);case 5:r=e.sent,t.indexOf("password")>=0&&(n.$delete(n.share,"newPassword"),n.share.passwordExpirationTime=r.password_expiration_time),n.$delete(n.errors,t[0]),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(2),(a=e.t0.message)&&""!==a&&n.onSyncError(t[0],a);case 14:return e.prev=14,n.saving=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,10,14,17]])}))))}else console.error("Cannot update share.",this.share,"No valid id")},onSyncError:function(n,e){switch(this.open=!0,n){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,n,e);var t=this.$refs[n];if(t){t.$el&&(t=t.$el);var r=t.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,n,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:z()((function(n){this.queueUpdate(n)}),500),disabledDate:function(n){var e=moment(n);return this.dateTomorrow&&e.isBefore(this.dateTomorrow,"day")||this.dateMaxEnforced&&e.isSameOrAfter(this.dateMaxEnforced,"day")}}},Dn={name:"SharingEntryInherited",components:{ActionButton:bn(),ActionLink:y(),ActionText:xn(),Avatar:h(),SharingEntrySimple:W},mixins:[Rn],props:{share:{type:v,required:!0}},computed:{viaFileTargetUrl:function(){return(0,l.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,Sn.EZ)(this.share.viaPath)}}},On=r(71296),In={};In.styleTagTransform=H(),In.setAttributes=I(),In.insert=D().bind(null,"head"),In.domAPI=T(),In.insertStyleElement=N(),k()(On.Z,In),On.Z&&On.Z.locals&&On.Z.locals;var Ln=(0,B.Z)(Dn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{key:n.share.id,staticClass:"sharing-entry__inherited",attrs:{title:n.share.shareWithDisplayName},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":""}})]},proxy:!0}])},[n._v(" "),t("ActionText",{attrs:{icon:"icon-user"}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Added by {initiator}",{initiator:n.share.ownerDisplayName}))+"\n\t")]),n._v(" "),n.share.viaPath&&n.share.viaFileid?t("ActionLink",{attrs:{icon:"icon-folder",href:n.viaFileTargetUrl}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Via “{folder}”",{folder:n.viaFolderName}))+"\n\t")]):n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t")]):n._e()],1)}),[],!1,null,"29845767",null),Nn=Ln.exports;function Yn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Hn={name:"SharingInherited",components:{ActionButton:bn(),SharingEntryInherited:Nn,SharingEntrySimple:W},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}},computed:{showInheritedSharesIcon:function(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:function(){return t("files_sharing","Others with access")},subTitle:function(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip:function(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath:function(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo:function(){this.resetState()}},methods:{toggleInheritedShares:function(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},fetchInheritedShares:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,n.prev=1,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:e.fullPath}),n.next=5,d.default.get(r);case 5:i=n.sent,e.shares=i.data.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime})),console.info(e.shares),e.loaded=!0,n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[1,11,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Yn(a,r,i,s,o,"next",n)}function o(n){Yn(a,r,i,s,o,"throw",n)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]}}},Un=Hn,Mn=r(93591),Bn={};Bn.styleTagTransform=H(),Bn.setAttributes=I(),Bn.insert=D().bind(null,"head"),Bn.domAPI=T(),Bn.insertStyleElement=N(),k()(Mn.Z,Bn),Mn.Z&&Mn.Z.locals&&Mn.Z.locals;var Wn=(0,B.Z)(Un,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:n.mainTitle,subtitle:n.subTitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[n._v(" "),t("ActionButton",{attrs:{icon:n.showInheritedSharesIcon},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.toggleInheritedShares.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.toggleTooltip)+"\n\t\t")])],1),n._v(" "),n._l(n.shares,(function(e){return t("SharingEntryInherited",{key:e.id,attrs:{"file-info":n.fileInfo,share:e}})}))],2)}),[],!1,null,"49ffd834",null),jn=Wn.exports,qn=r(83779),Fn=r.n(qn),$n=r(88408),Zn=r.n($n),Gn=r(33521),Kn=r.n(Gn),Vn=r(97654),Qn=r.n(Vn),zn={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null}},computed:{data:function(){return this.action.data(this)}}},Jn=(0,B.Z)(zn,(function(){var n=this,e=n.$createElement;return(n._self._c||e)(n.data.is,n._g(n._b({tag:"Component"},"Component",n.data,!1),n.action.handlers),[n._v("\n\t"+n._s(n.data.text)+"\n")])}),[],!1,null,null,null).exports,Xn=r(10949),ne=r.n(Xn),ee={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},te={READ_ONLY:ee.READ,UPLOAD_AND_UPDATE:ee.READ|ee.UPDATE|ee.CREATE|ee.DELETE,FILE_DROP:ee.CREATE,ALL:ee.UPDATE|ee.CREATE|ee.READ|ee.DELETE|ee.SHARE};function re(n,e){return n!==ee.NONE&&(n&e)===e}function ie(n){return!(!re(n,ee.READ)&&!re(n,ee.CREATE)||!re(n,ee.READ)&&(re(n,ee.UPDATE)||re(n,ee.DELETE)))}function ae(n,e){return re(n,e)?function(n,e){return n&~e}(n,e):function(n,e){return n|e}(n,e)}var se=r(26937),oe=r(91889),ce={name:"SharePermissionsEditor",components:{ActionButton:bn(),ActionCheckbox:Fn(),ActionRadio:ne(),Tune:se.Z,ChevronLeft:oe.default},mixins:[Rn],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ee,bundledPermissions:te}},computed:{sharePermissionsSummary:function(){var n=this;return Object.values(this.atomicPermissions).filter((function(e){return n.shareHasPermissions(e)})).map((function(e){switch(e){case n.atomicPermissions.CREATE:return n.t("files_sharing","Upload");case n.atomicPermissions.READ:return n.t("files_sharing","Read");case n.atomicPermissions.UPDATE:return n.t("files_sharing","Edit");case n.atomicPermissions.DELETE:return n.t("files_sharing","Delete");default:return null}})).filter((function(n){return null!==n})).join(", ")},sharePermissionsIsBundle:function(){var n=this;return Object.values(te).map((function(e){return n.sharePermissionEqual(e)})).filter((function(n){return n})).length>0},sharePermissionsSetIsValid:function(){return ie(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ee.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(n){return(this.share.permissions&~ee.SHARE)===n},shareHasPermissions:function(n){return re(this.share.permissions,n)},setSharePermissions:function(n){this.share.permissions=n,this.queueUpdate("permissions")},canToggleSharePermissions:function(n){return function(n,e){return ie(ae(n,e))}(this.share.permissions,n)},toggleSharePermissions:function(n){this.share.permissions=ae(this.share.permissions,n),ie(this.share.permissions)&&this.queueUpdate("permissions")}}},le=r(32016),ue={};ue.styleTagTransform=H(),ue.setAttributes=I(),ue.insert=D().bind(null,"head"),ue.domAPI=T(),ue.insertStyleElement=N(),k()(le.Z,ue),le.Z&&le.Z.locals&&le.Z.locals;var he=(0,B.Z)(ce,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("span",[n.isFolder?n._e():t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t")]),n._v(" "),n.isFolder&&n.fileHasCreatePermission&&n.config.isPublicUploadEnabled?[n.showCustomPermissionsForm?t("span",{class:{error:!n.sharePermissionsSetIsValid}},[t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.READ),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.READ)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.READ)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Read"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.CREATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.CREATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.CREATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Upload"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.UPDATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Edit"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.DELETE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.DELETE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.DELETE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Delete"))+"\n\t\t\t")]),n._v(" "),t("ActionButton",{on:{click:function(e){n.showCustomPermissionsForm=!1}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Bundled permissions"))+"\n\t\t\t")])],1):[t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.READ_ONLY),value:n.bundledPermissions.READ_ONLY,name:n.randomFormName,disabled:n.saving},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.READ_ONLY)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Read only"))+"\n\t\t\t")]),n._v(" "),t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.UPLOAD_AND_UPDATE),value:n.bundledPermissions.UPLOAD_AND_UPDATE,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.UPLOAD_AND_UPDATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow upload and editing"))+"\n\t\t\t")]),n._v(" "),t("ActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.FILE_DROP),value:n.bundledPermissions.FILE_DROP,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.FILE_DROP)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","File drop (upload only)"))+"\n\t\t\t")]),n._v(" "),t("ActionButton",{attrs:{title:n.t("files_sharing","Custom permissions")},on:{click:function(e){n.showCustomPermissionsForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[n._v("\n\t\t\t\t"+n._s(n.sharePermissionsIsBundle?"":n.sharePermissionsSummary)+"\n\t\t\t")])]]:n._e()],2)}),[],!1,null,"3d9cb67e",null).exports;function de(n){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},de(n)}function fe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function pe(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){fe(a,r,i,s,o,"next",n)}function o(n){fe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var ge={name:"SharingEntryLink",components:{Actions:w(),ActionButton:bn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionLink:y(),ActionText:xn(),ActionTextEditable:Qn(),ActionSeparator:Kn(),Avatar:h(),ExternalShareAction:Jn,SharePermissionsEditor:he},directives:{Tooltip:S()},mixins:[Rn],props:{canReshare:{type:Boolean,default:!0}},data:function(){return{copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title:function(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return t("files_sharing","Share link")},subtitle:function(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get:function(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=moment(this.config.defaultExpirationDateString);e.isValid()||(e=moment()),this.share.state.expiration=n?e.format("YYYY-MM-DD"):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced&&moment().add(1+this.config.defaultExpireDate,"days")},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(n){var e=this;return pe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=i.default,t.t1=e.share,!n){t.next=8;break}return t.next=5,an();case 5:t.t2=t.sent,t.next=9;break;case 8:t.t2="";case 9:t.t3=t.t2,t.t0.set.call(t.t0,t.t1,"password",t.t3),i.default.set(e.share,"newPassword",e.share.password);case 12:case"end":return t.stop()}}),t)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var n=moment(this.share.passwordExpirationTime);return!(n.diff(moment())<0)&&n.fromNow()},isTalkEnabled:function(){return void 0!==OC.appswebroots.spreed},isPasswordProtectedByTalkAvailable:function(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get:function(){return this.share.sendPasswordByTalk},set:function(n){var e=this;return pe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.share.sendPasswordByTalk=n;case 1:case"end":return t.stop()}}),t)})))()}},isEmailShareType:function(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable:function(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword:function(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate:function(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword:function(){return void 0!==this.share.newPassword},shareLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/s/")+this.share.token},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(n){return n.shareType.includes(g.D.SHARE_TYPE_LINK)||n.shareType.includes(g.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===de(this.config.passwordPolicy)}},methods:{onNewLinkShare:function(){var n=this;return pe(regeneratorRuntime.mark((function e(){var r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.loading){e.next=2;break}return e.abrupt("return");case 2:if(r={share_type:g.D.SHARE_TYPE_LINK},n.config.isDefaultExpireDateEnforced&&(r.expiration=n.config.defaultExpirationDateString),!n.config.enableLinkPasswordByDefault){e.next=8;break}return e.next=7,an();case 7:r.password=e.sent;case 8:if(!n.config.enforcePasswordForPublicLink&&!n.config.isDefaultExpireDateEnforced){e.next=33;break}if(n.pending=!0,!n.share||n.share.id){e.next=20;break}if(!n.checkShare(n.share)){e.next=17;break}return e.next=14,n.pushNewLinkShare(n.share,!0);case 14:return e.abrupt("return",!0);case 17:return n.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),e.abrupt("return",!1);case 20:if(!n.config.enforcePasswordForPublicLink){e.next=24;break}return e.next=23,an();case 23:r.password=e.sent;case 24:return i=new v(r),e.next=27,new Promise((function(e){n.$emit("add:share",i,e)}));case 27:a=e.sent,n.open=!1,n.pending=!1,a.open=!0,e.next=36;break;case 33:return s=new v(r),e.next=36,n.pushNewLinkShare(s);case 36:case"end":return e.stop()}}),e)})))()},pushNewLinkShare:function(n,e){var t=this;return pe(regeneratorRuntime.mark((function r(){var i,a,s,o,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!t.loading){r.next=3;break}return r.abrupt("return",!0);case 3:return t.loading=!0,t.errors={},i=(t.fileInfo.path+"/"+t.fileInfo.name).replace("//","/"),r.next=8,t.createShare({path:i,shareType:g.D.SHARE_TYPE_LINK,password:n.password,expireDate:n.expireDate});case 8:if(a=r.sent,t.open=!1,console.debug("Link share created",a),!e){r.next=17;break}return r.next=14,new Promise((function(n){t.$emit("update:share",a,n)}));case 14:s=r.sent,r.next=20;break;case 17:return r.next=19,new Promise((function(n){t.$emit("add:share",a,n)}));case 19:s=r.sent;case 20:t.config.enforcePasswordForPublicLink||s.copyLink(),r.next=28;break;case 23:r.prev=23,r.t0=r.catch(0),o=r.t0.response,(c=o.data.ocs.meta.message).match(/password/i)?t.onSyncError("password",c):c.match(/date/i)?t.onSyncError("expireDate",c):t.onSyncError("pending",c);case 28:return r.prev=28,t.loading=!1,r.finish(28);case 31:case"end":return r.stop()}}),r,null,[[0,23,28,31]])})))()},onLabelChange:function(n){this.$set(this.share,"newLabel",n.trim())},onLabelSubmit:function(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),this.queueUpdate("label"))},copyLink:function(){var n=this;return pe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$copyText(n.shareLink);case 3:n.$refs.copyButton.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,console.error(e.t0);case 13:return e.prev=13,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[0,8,13,16]])})))()},onPasswordChange:function(n){this.$set(this.share,"newPassword",n)},onPasswordDisable:function(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose:function(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel:function(){this.$emit("remove:share",this.share)}}},me=r(53075),ve={};ve.styleTagTransform=H(),ve.setAttributes=I(),ve.insert=D().bind(null,"head"),ve.domAPI=T(),ve.insertStyleElement=N(),k()(me.Z,ve),me.Z&&me.Z.locals&&me.Z.locals;var _e=(0,B.Z)(ge,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":n.share}},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":n.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),n._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("h5",{attrs:{title:n.title}},[n._v("\n\t\t\t"+n._s(n.title)+"\n\t\t")]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.share&&!n.isEmailShareType&&n.share.token?t("Actions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("ActionLink",{attrs:{href:n.shareLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1):n._e(),n._v(" "),n.pending||!n.pendingPassword&&!n.pendingExpirationDate?n.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onMenuClose}},[n.share?[n.share.canEdit&&n.canReshare?[t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.label,show:n.errors.label,trigger:"manual",defaultContainer:".app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"label",class:{error:n.errors.label},attrs:{disabled:n.saving,"aria-label":n.t("files_sharing","Share label"),value:void 0!==n.share.newLabel?n.share.newLabel:n.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":n.onLabelChange,submit:n.onLabelSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Share label"))+"\n\t\t\t\t")]),n._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":n.canReshare,share:n.share,"file-info":n.fileInfo},on:{"update:share":function(e){n.share=e}}}),n._v(" "),t("ActionSeparator"),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.share.hideDownload,disabled:n.saving},on:{"update:checked":function(e){return n.$set(n.share,"hideDownload",e)},change:function(e){return n.queueUpdate("hideDownload")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.enforcePasswordForPublicLink?n.t("files_sharing","Password protection (enforced)"):n.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),n._v(" "),n.isPasswordProtected?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"password",staticClass:"share-link-password",class:{error:n.errors.password},attrs:{disabled:n.saving,required:n.config.enforcePasswordForPublicLink,value:n.hasUnsavedPassword?n.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:n.hasUnsavedPassword?"text":"password"},on:{"update:value":n.onPasswordChange,submit:n.onPasswordSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isEmailShareType&&n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:n.passwordExpirationTime}))+"\n\t\t\t\t")]):n.isEmailShareType&&null!==n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-error"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isPasswordProtectedByTalkAvailable?t("ActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:n.isPasswordProtectedByTalk,disabled:!n.canTogglePasswordProtectedByTalkAvailable||n.saving},on:{"update:checked":function(e){n.isPasswordProtectedByTalk=e},change:n.onPasswordProtectedByTalkChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.isDefaultExpireDateEnforced?n.t("files_sharing","Expiration date (enforced)"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",staticClass:"share-link-expire-date",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,placeholder:n.t("files_sharing","Enter a note for the share recipient"),value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e(),n._v(" "),t("ActionSeparator"),n._v(" "),n._l(n.externalLinkActions,(function(e){return t("ExternalShareAction",{key:e.id,attrs:{id:e.id,action:e,"file-info":n.fileInfo,share:n.share}})})),n._v(" "),n._l(n.externalLegacyLinkActions,(function(e,r){var i=e.icon,a=e.url,s=e.name;return t("ActionLink",{key:r,attrs:{href:a(n.shareLink),icon:i,target:"_blank"}},[n._v("\n\t\t\t\t"+n._s(s)+"\n\t\t\t")])})),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t\t")]):n._e(),n._v(" "),!n.isEmailShareType&&n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Add another link"))+"\n\t\t\t")]):n._e()]:n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:n.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create a new share link"))+"\n\t\t")]):n._e()],2):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onNewLinkShare}},[n.errors.pending?t("ActionText",{class:{error:n.errors.pending},attrs:{icon:"icon-error"}},[n._v("\n\t\t\t"+n._s(n.errors.pending)+"\n\t\t")]):t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),n._v(" "),n.pendingPassword?t("ActionText",{attrs:{icon:"icon-password"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):n.config.enableLinkPasswordByDefault?t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingPassword||n.share.password?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.password,\n\t\t\t\tshow: errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-password",attrs:{value:n.share.password,disabled:n.saving,required:n.config.enableLinkPasswordByDefault||n.config.enforcePasswordForPublicLink,minlength:n.isPasswordPolicyEnabled&&n.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(e){return n.$set(n.share,"password",e)},submit:n.onNewLinkShare}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionText",{attrs:{icon:"icon-calendar-dark"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.expireDate,\n\t\t\t\tshow: errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-expire-date",attrs:{disabled:n.saving,lang:n.lang,icon:"",type:"date","value-type":"format","disabled-date":n.disabledDate},model:{value:n.share.expireDate,callback:function(e){n.$set(n.share,"expireDate",e)},expression:"share.expireDate"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t")]):n._e(),n._v(" "),t("ActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create share"))+"\n\t\t")]),n._v(" "),t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onCancel.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"a63eeae4",null),Ae={name:"SharingLinkList",components:{SharingEntryLink:_e.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0},canReshare:{type:Boolean,required:!0}},data:function(){return{canLinkShare:OC.getCapabilities().files_sharing.public.enabled}},computed:{hasLinkShares:function(){var n=this;return this.shares.filter((function(e){return e.type===n.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(n,e){this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this;this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))},removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},ye=(0,B.Z)(Ae,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!n.hasLinkShares&&n.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo},on:{"add:share":n.addShare}}):n._e(),n._v(" "),n.hasShares?n._l(n.shares,(function(e,r){return t("SharingEntryLink",{key:e.id,attrs:{"can-reshare":n.canReshare,share:n.shares[r],"file-info":n.fileInfo},on:{"update:share":[function(e){return n.$set(n.shares,r,e)},function(e){return n.awaitForShare.apply(void 0,arguments)}],"add:share":function(e){return n.addShare.apply(void 0,arguments)},"remove:share":n.removeShare}})})):n._e()],2):n._e()}),[],!1,null,null,null),Ee=ye.exports;function we(n){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},we(n)}var be={name:"SharingEntry",components:{Actions:w(),ActionButton:bn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionTextEditable:Qn(),Avatar:h()},directives:{Tooltip:S()},mixins:[Rn],data:function(){return{permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}},computed:{title:function(){var n=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?n+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?n+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?n+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?n+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(n+=" (".concat(t("files_sharing","guest"),")")),n},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var n={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",n):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",n):t("files_sharing","Shared with {user} by {owner}",n)}return null},canHaveNote:function(){return!this.isRemote},isRemote:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(n){this.updatePermissions({isEditChecked:n})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(n){this.updatePermissions({isCreateChecked:n})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(n){this.updatePermissions({isDeleteChecked:n})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(n){this.updatePermissions({isReshareChecked:n})}},hasRead:{get:function(){return this.share.hasReadPermission}},isFolder:function(){return"dir"===this.fileInfo.type},hasExpirationDate:{get:function(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set:function(n){this.share.expireDate=n?""!==this.config.defaultInternalExpirationDateString?this.config.defaultInternalExpirationDateString:moment().format("YYYY-MM-DD"):""}},dateMaxEnforced:function(){return this.isRemote?this.config.isDefaultRemoteExpireDateEnforced&&moment().add(1+this.config.defaultRemoteExpireDate,"days"):this.config.isDefaultInternalExpireDateEnforced&&moment().add(1+this.config.defaultInternalExpireDate,"days")},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===we(this.share.status)&&!Array.isArray(this.share.status)}},methods:{updatePermissions:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.isEditChecked,t=void 0===e?this.canEdit:e,r=n.isCreateChecked,i=void 0===r?this.canCreate:r,a=n.isDeleteChecked,s=void 0===a?this.canDelete:a,o=n.isReshareChecked,c=void 0===o?this.canReshare:o,l=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(t?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=l,this.queueUpdate("permissions")},onMenuClose:function(){this.onNoteSubmit()}}},Se=be,Ce=r(4623),xe={};xe.styleTagTransform=H(),xe.setAttributes=I(),xe.insert=D().bind(null,"head"),xe.domAPI=T(),xe.insertStyleElement=N(),k()(Ce.Z,xe),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ke=(0,B.Z)(Se,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":n.share.type!==n.SHARE_TYPES.SHARE_TYPE_USER,user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":n.share.type===n.SHARE_TYPES.SHARE_TYPE_USER?n.share.shareWith:"","menu-position":"left",url:n.share.shareWithAvatar}}),n._v(" "),t(n.share.shareWithLink?"a":"div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.tooltip,expression:"tooltip",modifiers:{auto:!0}}],tag:"component",staticClass:"sharing-entry__desc",attrs:{href:n.share.shareWithLink}},[t("h5",[n._v(n._s(n.title)),n.isUnique?n._e():t("span",{staticClass:"sharing-entry__desc-unique"},[n._v(" ("+n._s(n.share.shareWithDisplayNameUnique)+")")])]),n._v(" "),n.hasStatus?t("p",[t("span",[n._v(n._s(n.share.status.icon||""))]),n._v(" "),t("span",[n._v(n._s(n.share.status.message||""))])]):n._e()]),n._v(" "),t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:n.onMenuClose}},[n.share.canEdit?[t("ActionCheckbox",{ref:"canEdit",attrs:{checked:n.canEdit,value:n.permissionsEdit,disabled:n.saving||!n.canSetEdit},on:{"update:checked":function(e){n.canEdit=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t\t")]),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canCreate",attrs:{checked:n.canCreate,value:n.permissionsCreate,disabled:n.saving||!n.canSetCreate},on:{"update:checked":function(e){n.canCreate=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow creating"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canDelete",attrs:{checked:n.canDelete,value:n.permissionsDelete,disabled:n.saving||!n.canSetDelete},on:{"update:checked":function(e){n.canDelete=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):n._e(),n._v(" "),n.config.isResharingAllowed?t("ActionCheckbox",{ref:"canReshare",attrs:{checked:n.canReshare,value:n.permissionsShare,disabled:n.saving||!n.canSetReshare},on:{"update:checked":function(e){n.canReshare=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultInternalExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t"+n._s(n.config.isDefaultInternalExpireDateEnforced?n.t("files_sharing","Expiration date enforced"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual"},expression:"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t")]):n._e(),n._v(" "),n.canHaveNote?[t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e()]:n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t")]):n._e()],2)],1)}),[],!1,null,"11f6b64f",null);function Pe(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var Te={name:"SharingList",components:{SharingEntry:ke.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0}},computed:{hasShares:function(){return 0===this.shares.length},isUnique:function(){var n=this;return function(e){return(t=n.shares,function(n){if(Array.isArray(n))return Pe(n)}(t)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||function(n,e){if(n){if("string"==typeof n)return Pe(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Pe(n,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.")}()).filter((function(t){return e.type===n.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName})).length<=1;var t}}},methods:{removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},Re=(0,B.Z)(Te,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{staticClass:"sharing-sharee-list"},n._l(n.shares,(function(e){return t("SharingEntry",{key:e.id,attrs:{"file-info":n.fileInfo,share:e,"is-unique":n.isUnique(e)},on:{"remove:share":n.removeShare}})})),1)}),[],!1,null,null,null).exports;function De(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Oe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ie(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Oe(a,r,i,s,o,"next",n)}function o(n){Oe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Le={name:"SharingTab",components:{Avatar:h(),CollectionList:c.G,SharingEntryInternal:K,SharingEntrySimple:W,SharingInherited:jn,SharingInput:En,SharingLinkList:Ee,SharingList:Re},mixins:[_],data:function(){return{config:new p,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections()}},computed:{isSharedWithMe:function(){return Object.keys(this.sharedWithMe).length>0},canReshare:function(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{update:function(n){var e=this;return Ie(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fileInfo=n,e.resetState(),e.getShares();case 3:case"end":return t.stop()}}),t)})))()},getShares:function(){var n=this;return Ie(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,u,h,f,p,g,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(n.fileInfo.path+"/"+n.fileInfo.name).replace("//","/"),s=d.default.get(r,{params:{format:i,path:a,reshares:!0}}),o=d.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),e.next=9,Promise.all([s,o]);case 9:c=e.sent,_=2,u=function(n){if(Array.isArray(n))return n}(v=c)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,i,a=[],s=!0,o=!1;try{for(t=t.call(n);!(s=(r=t.next()).done)&&(a.push(r.value),!e||a.length!==e);s=!0);}catch(n){o=!0,i=n}finally{try{s||null==t.return||t.return()}finally{if(o)throw i}}return a}}(v,_)||function(n,e){if(n){if("string"==typeof n)return De(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?De(n,e):void 0}}(v,_)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=u[0],f=u[1],n.loading=!1,n.processSharedWithMe(f),n.processShares(h),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(0),null!==(p=e.t0.response.data)&&void 0!==p&&null!==(g=p.ocs)&&void 0!==g&&null!==(m=g.meta)&&void 0!==m&&m.message?n.error=e.t0.response.data.ocs.meta.message:n.error=t("files_sharing","Unable to load the shares list"),n.loading=!1,console.error("Error loading the shares list",e.t0);case 23:case"end":return e.stop()}var v,_}),e,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(n){var e=moment(n.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*e)})),moment().unix()>e&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(n){var e=this,t=n.data;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){var r=t.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime}));this.linkShares=r.filter((function(n){return n.type===e.SHARE_TYPES.SHARE_TYPE_LINK||n.type===e.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(n){return n.type!==e.SHARE_TYPES.SHARE_TYPE_LINK&&n.type!==e.SHARE_TYPES.SHARE_TYPE_EMAIL})),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(n){var e=n.data;if(e.ocs&&e.ocs.data&&e.ocs.data[0]){var r=new v(e),i=function(n){return n.type===g.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_ROOM?n.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1})}(r),a=r.ownerDisplayName,s=r.owner;this.sharedWithMe={displayName:a,title:i,user:s},this.reshare=r,r.expireDate&&moment(r.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(r),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,r))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(n):this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this.$refs.shareList;n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=this.$refs.linkShareList),this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))}}},Ne=Le,Ye=r(61618),He={};He.styleTagTransform=H(),He.setAttributes=I(),He.insert=D().bind(null,"head"),He.domAPI=T(),He.insertStyleElement=N(),k()(Ye.Z,He),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var Ue=(0,B.Z)(Ne,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{class:{"icon-loading":n.loading}},[n.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:n.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),n._v(" "),t("h2",[n._v(n._s(n.error))])]):[n.isSharedWithMe?t("SharingEntrySimple",n._b({staticClass:"sharing-entry__reshare",scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.sharedWithMe.user,"display-name":n.sharedWithMe.displayName,"tooltip-message":""}})]},proxy:!0}],null,!1,1643724538)},"SharingEntrySimple",n.sharedWithMe,!1)):n._e(),n._v(" "),n.loading?n._e():t("SharingInput",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,"link-shares":n.linkShares,reshare:n.reshare,shares:n.shares},on:{"add:share":n.addShare}}),n._v(" "),n.loading?n._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,shares:n.linkShares}}),n._v(" "),n.loading?n._e():t("SharingList",{ref:"shareList",attrs:{shares:n.shares,"file-info":n.fileInfo}}),n._v(" "),n.canReshare&&!n.loading?t("SharingInherited",{attrs:{"file-info":n.fileInfo}}):n._e(),n._v(" "),t("SharingEntryInternal",{attrs:{"file-info":n.fileInfo}}),n._v(" "),n.fileInfo?t("CollectionList",{attrs:{id:""+n.fileInfo.id,type:"file",name:n.fileInfo.name}}):n._e()],n._v(" "),n._l(n.sections,(function(e,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(e(n.$refs["section-"+r],n.fileInfo),{tag:"component",attrs:{"file-info":n.fileInfo}})],1)}))],2)}),[],!1,null,"b6bc0cd2",null).exports;function Me(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Be=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(n){return""!==n.displayName.trim()&&"function"==typeof n.handler?(this._state.results.push(n),!0):(console.error("Invalid search result provided",n),!1)}}])&&Me(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function We(n){return We="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},We(n)}function je(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var qe=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===We(n)&&n.icon&&n.name&&n.url?(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&je(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Fe(n){return Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Fe(n)}function $e(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ze=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return"object"===Fe(n)&&"string"==typeof n.id&&"function"==typeof n.data&&Array.isArray(n.shareType)&&"object"===Fe(n.handlers)&&Object.values(n.handlers).every((function(n){return"function"==typeof n}))?this._state.actions.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An action with the same id ".concat(n.id," already exists"),n),!1):(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&$e(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ge(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ke=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_sections")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._sections=[]}var e,t;return e=n,(t=[{key:"registerSection",value:function(n){this._sections.push(n)}},{key:"getSections",value:function(){return this._sections}}])&&Ge(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ve(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new Be}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new qe}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new Ze}),Object.assign(window.OCA.Sharing,{ShareTabSections:new Ke}),i.default.prototype.t=o.translate,i.default.prototype.n=o.translatePlural,i.default.use(s());var Qe=i.default.extend(Ue),ze=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.translate)("files_sharing","Sharing"),icon:"icon-share",mount:function(n,e,t){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return ze&&ze.$destroy(),ze=new Qe({parent:t}),r.next=4,ze.update(e);case 4:ze.$mount(n);case 5:case"end":return r.stop()}}),r)})),function(){var n=this,e=arguments;return new Promise((function(t,i){var a=r.apply(n,e);function s(n){Ve(a,t,i,s,o,"next",n)}function o(n){Ve(a,t,i,s,o,"throw",n)}s(void 0)}))})();var r},update:function(n){ze.update(n)},destroy:function(){ze.$destroy(),ze=null}}))}))},32016:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".error[data-v-3d9cb67e] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AA+RC,wDACC,mCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},4623:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-11f6b64f]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-11f6b64f]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-11f6b64f]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},71296:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},52475:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__internal .avatar-external[data-v-854dc2c6]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-854dc2c6]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAwGC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},53075:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-a63eeae4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-a63eeae4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc h5[data-v-a63eeae4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__desc p[data-v-a63eeae4]{color:var(--color-text-maxcontrast)}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-a63eeae4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-a63eeae4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-a63eeae4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-a63eeae4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-a63eeae4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-a63eeae4],.sharing-entry .action-item~.sharing-entry__loading[data-v-a63eeae4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-a63eeae4]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,yCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAED,wCACC,mCAAA,CAKD,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\th5 {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},35917:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-1436bf4a]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1436bf4a]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc h5[data-v-1436bf4a]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__desc p[data-v-1436bf4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-1436bf4a]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AA4EA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,yCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,wCACC,mCAAA,CAGF,yCACC,2BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\th5 {\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tmax-width: inherit;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},84721:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-fff);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,uCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-fff);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},93591:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__inherited .avatar-shared[data-v-49ffd834]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AA6JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},61618:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".emptyContentWithSections[data-v-b6bc0cd2]{margin:1rem auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AAyWA,2CACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n"],sourceRoot:""}]),e.Z=s}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(e,t,r,a){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],a=n[u][2];for(var o=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(n){return i.O[n](t[c])}))?t.splice(c--,1):(o=!1,a<s&&(s=a));if(o){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[t,r,a]},i.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(e,{a:e}),e},i.d=function(n,e){for(var t in e)i.o(e,t)&&!i.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=7870,function(){i.b=document.baseURI||self.location.href;var n={7870:0};i.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,a,s=t[0],o=t[1],c=t[2],l=0;if(s.some((function(e){return 0!==n[e]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(e&&e(t);l<s.length;l++)a=s[l],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(62206)}));a=i.O(a)}();
+//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=f8f731dfaa95a954b620 \ No newline at end of file
diff --git a/dist/files_sharing-files_sharing_tab.js.map b/dist/files_sharing-files_sharing_tab.js.map
index a27761095d7..f3f27353034 100644
--- a/dist/files_sharing-files_sharing_tab.js.map
+++ b/dist/files_sharing-files_sharing_tab.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-files_sharing_tab.js?v=de45dd2340780990f033","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?924c","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=template&id=1436bf4a&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?d9e2","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=template&id=854dc2c6&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?1f8b","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=template&id=6c96bdca&","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?b36f","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?ec0b","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=template&id=49ffd834&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=template&id=29f555e7&","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?dc54","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=template&id=3d9cb67e&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?e9b7","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=template&id=a63eeae4&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=template&id=8be1a6a2&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?66a9","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=template&id=11f6b64f&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=template&id=0b29d4c0&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=template&id=6b75002c&","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=49ffd834&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\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\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementById('filestable')\n\t\t\t&& document.getElementById('filestable').dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default internal expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultInternalExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default remote expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultRemoteExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.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 *\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 Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date as a string format\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date as a string format\n\t * e.g. YYYY-MM-DD\n\t *\n\t * @param {string} date the share expiration date\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password exipration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 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 { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\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!./SharingEntrySimple.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!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 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<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div v-tooltip=\"tooltip\" class=\"sharing-entry__desc\">\n\t\t\t<h5>{{ title }}</h5>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<Actions v-if=\"$slots['default']\" menu-align=\"right\" class=\"sharing-entry__actions\">\n\t\t\t<slot />\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tActions,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\th5 {\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tmax-width: inherit;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\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!./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&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!./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=1436bf4a&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&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 \"1436bf4a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"sharing-entry__desc\"},[_c('h5',[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"}},[_vm._t(\"default\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<SharingEntrySimple class=\"sharing-entry__internal\"\n\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t<template #avatar>\n\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t</template>\n\n\t\t<ActionLink ref=\"copyButton\"\n\t\t\t:href=\"internalLink\"\n\t\t\ttarget=\"_blank\"\n\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t@click.prevent=\"copyLink\">\n\t\t\t{{ clipboardTooltip }}\n\t\t</ActionLink>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.internalLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.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!./SharingEntryInternal.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!./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&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!./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=854dc2c6&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&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 \"854dc2c6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SharingEntrySimple',{staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionLink',{ref:\"copyButton\",attrs:{\"href\":_vm.internalLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService'\n\nconst config = new Config()\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t}\n\t}\n\n\t// generate password of 10 length based on passwordSet\n\treturn Array(10).fill(0)\n\t\t.reduce((prev, curr) => {\n\t\t\tprev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))\n\t\t\treturn prev\n\t\t}, '')\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.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 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// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 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<Multiselect ref=\"multiselect\"\n\t\tclass=\"sharing-input\"\n\t\t:clear-on-select=\"true\"\n\t\t:disabled=\"!canReshare\"\n\t\t:hide-selected=\"true\"\n\t\t:internal-search=\"false\"\n\t\t:loading=\"loading\"\n\t\t:options=\"options\"\n\t\t:placeholder=\"inputPlaceholder\"\n\t\t:preselect-first=\"true\"\n\t\t:preserve-search=\"true\"\n\t\t:searchable=\"true\"\n\t\t:user-select=\"true\"\n\t\topen-direction=\"below\"\n\t\tlabel=\"displayName\"\n\t\ttrack-by=\"id\"\n\t\t@search-change=\"asyncFind\"\n\t\t@select=\"addShare\">\n\t\t<template #noOptions>\n\t\t\t{{ t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t</template>\n\t\t<template #noResult>\n\t\t\t{{ noResultText }}\n\t\t</template>\n\t</Multiselect>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport Config from '../services/ConfigService'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport ShareRequests from '../mixins/ShareRequests'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\tasync asyncFind(query, id) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurances of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differenciate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn 'icon-user'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn 'icon-group'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn 'icon-mail'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn 'icon-circle'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn 'icon-room'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn 'icon-deck'\n\n\t\t\tdefault:\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\ticon: this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\t// focus the input again\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs.multiselect.$el.querySelector('.multiselect__input').focus()\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\t// reset the search string when done\n\t\t\t\t// FIXME: https://github.com/shentao/vue-multiselect/issues/633\n\t\t\t\tif (this.$refs.multiselect?.$refs?.VueMultiselect?.search) {\n\t\t\t\t\tthis.$refs.multiselect.$refs.VueMultiselect.search = ''\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\t// focus back if any error\n\t\t\t\tconst input = this.$refs.multiselect.$el.querySelector('input')\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\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 lang=\"scss\">\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-fff);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.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!./SharingInput.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!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=6c96bdca&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{ref:\"multiselect\",staticClass:\"sharing-input\",attrs:{\"clear-on-select\":true,\"disabled\":!_vm.canReshare,\"hide-selected\":true,\"internal-search\":false,\"loading\":_vm.loading,\"options\":_vm.options,\"placeholder\":_vm.inputPlaceholder,\"preselect-first\":true,\"preserve-search\":true,\"searchable\":true,\"user-select\":true,\"open-direction\":\"below\",\"label\":\"displayName\",\"track-by\":\"id\"},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.addShare},scopedSlots:_vm._u([{key:\"noOptions\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\")]},proxy:true},{key:\"noResult\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.noResultText)+\"\\n\\t\")]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.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-next-line import/no-unresolved, node/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share'\nimport SharesRequests from './ShareRequests'\nimport ShareTypes from './ShareTypes'\nimport Config from '../services/ConfigService'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn moment().add(1, 'days')\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = moment(share.expirationDate)\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * ActionInput can be a little tricky to work with.\n\t\t * Since we expect a string and not a Date,\n\t\t * we need to process the value here\n\t\t *\n\t\t * @param {Date} date js date to be parsed by moment.js\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\t// format to YYYY-MM-DD\n\t\t\tconst value = moment(date).format('YYYY-MM-DD')\n\t\t\tthis.share.expireDate = value\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.map(p => (properties[p] = this.share[p].toString()))\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.error('Cannot update share.', this.share, 'No valid id')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\n\t\t/**\n\t\t * Returns which dates are disabled for the datepicker\n\t\t *\n\t\t * @param {Date} date date to check\n\t\t * @return {boolean}\n\t\t */\n\t\tdisabledDate(date) {\n\t\t\tconst dateMoment = moment(date)\n\t\t\treturn (this.dateTomorrow && dateMoment.isBefore(this.dateTomorrow, 'day'))\n\t\t\t\t|| (this.dateMaxEnforced && dateMoment.isSameOrAfter(this.dateMaxEnforced, 'day'))\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!./SharingEntryInherited.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!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 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<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<Avatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\ttooltip-message=\"\" />\n\t\t</template>\n\t\t<ActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</ActionText>\n\t\t<ActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</ActionLink>\n\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</actionbutton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionLink,\n\t\tActionText,\n\t\tAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\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!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&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!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&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 \"29845767\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),_c('ActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('ActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<ActionButton :icon=\"showInheritedSharesIcon\" @click.prevent.stop=\"toggleInheritedShares\">\n\t\t\t\t{{ toggleTooltip }}\n\t\t\t</ActionButton>\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share'\nimport SharingEntryInherited from '../components/SharingEntryInherited'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\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!./SharingInherited.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!./SharingInherited.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!./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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!./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=49ffd834&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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 \"49ffd834\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.toggleTooltip)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.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!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 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<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=29f555e7&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\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 ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.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!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\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<span>\n\t\t<!-- file -->\n\t\t<ActionCheckbox v-if=\"!isFolder\"\n\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t:disabled=\"saving\"\n\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t</ActionCheckbox>\n\n\t\t<!-- folder -->\n\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t</ActionRadio>\n\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t</ActionRadio>\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t</ActionRadio>\n\n\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t<ActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Tune />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- custom permissions -->\n\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<ActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t</ActionButton>\n\t\t\t</span>\n\t\t</template>\n\t</span>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\n\nimport SharesMixin from '../mixins/SharesMixin'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox'\n\nimport Tune from 'vue-material-design-icons/Tune'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\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!./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&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!./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=3d9cb67e&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&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 \"3d9cb67e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[(!_vm.isFolder)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\")])],1)]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<Avatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<h5 :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</h5>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<Actions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<ActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\">\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</ActionLink>\n\t\t</Actions>\n\n\t\t<!-- pending actions -->\n\t\t<Actions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<ActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</ActionText>\n\t\t\t<ActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</ActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<ActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</ActionCheckbox>\n\t\t\t<ActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\tshow: errors.password,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</ActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<ActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tv-model=\"share.expireDate\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\n\t\t\t\t:lang=\"lang\"\n\t\t\t\ticon=\"\"\n\t\t\t\ttype=\"date\"\n\t\t\t\tvalue-type=\"format\"\n\t\t\t\t:disabled-date=\"disabledDate\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</ActionInput>\n\n\t\t\t<ActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</ActionButton>\n\t\t\t<ActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- actions -->\n\t\t<Actions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<ActionInput ref=\"label\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Share label') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<ActionSeparator />\n\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</ActionInput>\n\t\t\t\t\t<ActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</ActionText>\n\t\t\t\t\t<ActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</ActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<ActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<ActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<ActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</ActionLink>\n\n\t\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<ActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create a new share link') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport ExternalShareAction from './ExternalShareAction'\nimport SharePermissionsEditor from './SharePermissionsEditor'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionLink,\n\t\tActionText,\n\t\tActionTextEditable,\n\t\tActionSeparator,\n\t\tAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tlet dateString = moment(this.config.defaultExpirationDateString)\n\t\t\t\tif (!dateString.isValid()) {\n\t\t\t\t\tdateString = moment()\n\t\t\t\t}\n\t\t\t\tthis.share.state.expiration = enabled\n\t\t\t\t\t? dateString.format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t&& moment().add(1 + this.config.defaultExpireDate, 'days')\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.config.defaultExpirationDateString\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst newShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t})\n\n\t\t\t\tthis.open = false\n\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\n\t\t\t} catch ({ response }) {\n\t\t\t\tconst message = response.data.ocs.meta.message\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.shareLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submited.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\th5 {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.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!./SharingEntryLink.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!./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&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!./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=a63eeae4&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&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 \"a63eeae4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('h5',{attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('Actions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('ActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('ActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('ActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\tshow: _vm.errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"icon\":\"\",\"type\":\"date\",\"value-type\":\"format\",\"disabled-date\":_vm.disabledDate},model:{value:(_vm.share.expireDate),callback:function ($$v) {_vm.$set(_vm.share, \"expireDate\", $$v)},expression:\"share.expireDate\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.label,\n\t\t\t\t\t\tshow: _vm.errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.label,\\n\\t\\t\\t\\t\\t\\tshow: errors.label,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '.app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"aria-label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share label'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\t\t\tshow: _vm.errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('ActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('ActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function(ref,index){\n\t\t\t\t\tvar icon = ref.icon;\n\t\t\t\t\tvar url = ref.url;\n\t\t\t\t\tvar name = ref.name;\nreturn _c('ActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create a new share link'))+\"\\n\\t\\t\")]):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.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!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 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<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryLink from '../components/SharingEntryLink'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=8be1a6a2&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare.apply(void 0, arguments)}],\"add:share\":function($event){return _vm.addShare.apply(void 0, arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<li class=\"sharing-entry\">\n\t\t<Avatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:tooltip-message=\"share.type === SHARE_TYPES.SHARE_TYPE_USER ? share.shareWith : ''\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\tv-tooltip.auto=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<h5>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></h5>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<Actions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<ActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<ActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</ActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionTextEditable,\n\t\tAvatar,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.config.defaultInternalExpirationDateString !== ''\n\t\t\t\t\t\t? this.config.defaultInternalExpirationDateString\n\t\t\t\t\t\t: moment().format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote) {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultInternalExpireDate, 'days')\n\t\t\t} else {\n\t\t\t\treturn this.config.isDefaultRemoteExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultRemoteExpireDate, 'days')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({ isEditChecked = this.canEdit, isCreateChecked = this.canCreate, isDeleteChecked = this.canDelete, isReshareChecked = this.canReshare } = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\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!./SharingEntry.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!./SharingEntry.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!./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&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!./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=11f6b64f&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&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 \"11f6b64f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":_vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_USER ? _vm.share.shareWith : '',\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.tooltip),expression:\"tooltip\",modifiers:{\"auto\":true}}],tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"href\":_vm.share.shareWithLink}},[_c('h5',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('ActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('ActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharingEntry from '../components/SharingEntry'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\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!./SharingList.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!./SharingList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=0b29d4c0&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<template v-else>\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t\ttooltip-message=\"\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\n\t\t\t<!-- additionnal entries, use it with cautious -->\n\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport axios from '@nextcloud/axios'\n\nimport Config from '../services/ConfigService'\nimport { shareWithTitle } from '../utils/SharedWithMe'\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryInternal from '../components/SharingEntryInternal'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\nimport SharingInput from '../components/SharingInput'\n\nimport SharingInherited from './SharingInherited'\nimport SharingLinkList from './SharingLinkList'\nimport SharingList from './SharingList'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.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!./SharingTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=6b75002c&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\"},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName,\"tooltip-message\":\"\"}})]},proxy:true}],null,false,1643724538)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":(\"\" + (_vm.fileInfo.id)),\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 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\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 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\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 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\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 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 VueClipboard from 'vue-clipboard2'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab'\nimport ShareSearch from './services/ShareSearch'\nimport ExternalLinkActions from './services/ExternalLinkActions'\nimport ExternalShareActions from './services/ExternalShareActions'\nimport TabSections from './services/TabSections'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.use(VueClipboard)\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticon: 'icon-share',\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-3d9cb67e] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AA+RC,wDACC,mCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\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, \".sharing-entry[data-v-11f6b64f]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-11f6b64f]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-11f6b64f]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\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, \".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\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, \".sharing-entry__internal .avatar-external[data-v-854dc2c6]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-854dc2c6]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAwGC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\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, \".sharing-entry[data-v-a63eeae4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-a63eeae4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc h5[data-v-a63eeae4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__desc p[data-v-a63eeae4]{color:var(--color-text-maxcontrast)}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-a63eeae4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-a63eeae4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-a63eeae4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-a63eeae4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-a63eeae4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-a63eeae4],.sharing-entry .action-item~.sharing-entry__loading[data-v-a63eeae4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-a63eeae4]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,yCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAED,wCACC,mCAAA,CAKD,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\th5 {\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\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, \".sharing-entry[data-v-1436bf4a]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1436bf4a]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc h5[data-v-1436bf4a]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__desc p[data-v-1436bf4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-1436bf4a]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AA4EA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,yCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,wCACC,mCAAA,CAGF,yCACC,2BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\th5 {\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tmax-width: inherit;\\n\\t\\t}\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\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, \".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-fff);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,uCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-input {\\n\\twidth: 100%;\\n\\tmargin: 10px 0;\\n\\n\\t// properly style the lookup entry\\n\\t.multiselect__option {\\n\\t\\tspan[lookup] {\\n\\t\\t\\t.avatardiv {\\n\\t\\t\\t\\tbackground-image: var(--icon-search-fff);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-49ffd834]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AA6JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7870;","__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\t7870: 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__(13610); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementById","dataset","allowPublicUpload","value","OC","appConfig","core","federatedCloudShareDoc","expireDateString","this","isDefaultExpireDateEnabled","date","window","moment","utc","expireAfterDays","defaultExpireDate","add","format","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","remoteShareAllowed","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","resharingAllowed","password","enforced","sharee","always_show_unique","allowGroupSharing","parseInt","config","password_policy","Share","ocsData","ocs","data","hide_download","mail_send","_share","id","share_type","permissions","uid_owner","displayname_owner","share_with","share_with_displayname","share_with_displayname_unique","share_with_link","share_with_avatar","uid_file_owner","displayname_file_owner","stime","expiration","token","note","label","state","password_expiration_time","passwordExpirationTime","send_password_by_talk","sendPasswordByTalk","path","item_type","mimetype","file_source","file_target","file_parent","PERMISSION_READ","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_UPDATE","PERMISSION_SHARE","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","_t","_v","directives","name","rawName","expression","_s","title","subtitle","_e","$slots","attrs","t","internalLinkSubtitle","scopedSlots","_u","key","fn","proxy","ref","internalLink","copied","copySuccess","on","$event","preventDefault","copyLink","apply","arguments","clipboardTooltip","passwordSet","passwordPolicy","api","generate","axios","request","console","info","Array","fill","reduce","prev","curr","charAt","Math","floor","random","length","shareUrl","generateOcsUrl","methods","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","type","deleteShare","updateShare","properties","Error","canReshare","loading","inputPlaceholder","asyncFind","addShare","noResultText","mixins","SharesRequests","props","fileInfo","Object","default","required","share","isUnique","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","computed","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","onDelete","debug","$emit","propertyNames","map","p","toString","updatedShare","indexOf","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","disabledDate","dateMoment","isBefore","dateMaxEnforced","isSameOrAfter","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","viaFileTargetUrl","folder","viaFolderName","mainTitle","subTitle","showInheritedSharesIcon","stopPropagation","toggleInheritedShares","toggleTooltip","_l","is","_g","_b","tag","action","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","permissionSet","isFolder","shareHasPermissions","atomicPermissions","toggleSharePermissions","fileHasCreatePermission","isPublicUploadEnabled","showCustomPermissionsForm","class","sharePermissionsSetIsValid","canToggleSharePermissions","sharePermissionEqual","bundledPermissions","randomFormName","setSharePermissions","sharePermissionsIsBundle","sharePermissionsSummary","isEmailShareType","shareLink","pending","pendingPassword","pendingExpirationDate","onMenuClose","canEdit","content","show","trigger","defaultContainer","modifiers","newLabel","onLabelChange","onLabelSubmit","hideDownload","isPasswordProtected","onPasswordDisable","hasUnsavedPassword","newPassword","onPasswordChange","onPasswordSubmit","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","onPasswordProtectedByTalkChange","hasExpirationDate","isDefaultExpireDateEnforced","index","icon","url","onNewLinkShare","isPasswordPolicyEnabled","minLength","model","callback","$$v","onCancel","hasLinkShares","shares","awaitForShare","removeShare","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","shareWithDisplayNameUnique","permissionsEdit","canSetEdit","canCreate","permissionsCreate","canSetCreate","canDelete","permissionsDelete","canSetDelete","permissionsShare","canSetReshare","isDefaultInternalExpireDateEnforced","group","escape","circle","conversation","sharedWithMe","user","displayName","linkShares","reshare","section","refInFor","ShareSearch","_state","results","result","handler","push","ExternalLinkActions","actions","warn","ExternalShareActions","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","Vue","n","VueClipboard","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","mount","el","context","$destroy","update","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_sharing-files_sharing_tab.js?v=f8f731dfaa95a954b620","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?924c","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=template&id=1436bf4a&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?d9e2","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=template&id=854dc2c6&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?1f8b","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=template&id=6c96bdca&","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?b36f","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?ec0b","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=template&id=49ffd834&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=template&id=29f555e7&","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?dc54","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=template&id=3d9cb67e&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?e9b7","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=template&id=a63eeae4&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=template&id=8be1a6a2&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?66a9","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=template&id=11f6b64f&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=template&id=0b29d4c0&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?54a0","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=template&id=b6bc0cd2&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=49ffd834&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/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 Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\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\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementById('filestable')\n\t\t\t&& document.getElementById('filestable').dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default internal expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultInternalExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default remote expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultRemoteExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.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 *\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 Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date as a string format\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date as a string format\n\t * e.g. YYYY-MM-DD\n\t *\n\t * @param {string} date the share expiration date\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password exipration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 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 { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\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!./SharingEntrySimple.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!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 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<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div v-tooltip=\"tooltip\" class=\"sharing-entry__desc\">\n\t\t\t<h5>{{ title }}</h5>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<Actions v-if=\"$slots['default']\" menu-align=\"right\" class=\"sharing-entry__actions\">\n\t\t\t<slot />\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tActions,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\th5 {\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tmax-width: inherit;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\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!./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&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!./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=1436bf4a&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&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 \"1436bf4a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"sharing-entry__desc\"},[_c('h5',[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"}},[_vm._t(\"default\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<SharingEntrySimple class=\"sharing-entry__internal\"\n\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t<template #avatar>\n\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t</template>\n\n\t\t<ActionLink ref=\"copyButton\"\n\t\t\t:href=\"internalLink\"\n\t\t\ttarget=\"_blank\"\n\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t@click.prevent=\"copyLink\">\n\t\t\t{{ clipboardTooltip }}\n\t\t</ActionLink>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.internalLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.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!./SharingEntryInternal.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!./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&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!./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=854dc2c6&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&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 \"854dc2c6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SharingEntrySimple',{staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionLink',{ref:\"copyButton\",attrs:{\"href\":_vm.internalLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService'\n\nconst config = new Config()\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t}\n\t}\n\n\t// generate password of 10 length based on passwordSet\n\treturn Array(10).fill(0)\n\t\t.reduce((prev, curr) => {\n\t\t\tprev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))\n\t\t\treturn prev\n\t\t}, '')\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.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 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// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 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<Multiselect ref=\"multiselect\"\n\t\tclass=\"sharing-input\"\n\t\t:clear-on-select=\"true\"\n\t\t:disabled=\"!canReshare\"\n\t\t:hide-selected=\"true\"\n\t\t:internal-search=\"false\"\n\t\t:loading=\"loading\"\n\t\t:options=\"options\"\n\t\t:placeholder=\"inputPlaceholder\"\n\t\t:preselect-first=\"true\"\n\t\t:preserve-search=\"true\"\n\t\t:searchable=\"true\"\n\t\t:user-select=\"true\"\n\t\topen-direction=\"below\"\n\t\tlabel=\"displayName\"\n\t\ttrack-by=\"id\"\n\t\t@search-change=\"asyncFind\"\n\t\t@select=\"addShare\">\n\t\t<template #noOptions>\n\t\t\t{{ t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t</template>\n\t\t<template #noResult>\n\t\t\t{{ noResultText }}\n\t\t</template>\n\t</Multiselect>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport Config from '../services/ConfigService'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport ShareRequests from '../mixins/ShareRequests'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\tasync asyncFind(query, id) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurances of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differenciate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn 'icon-user'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn 'icon-group'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn 'icon-mail'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn 'icon-circle'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn 'icon-room'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn 'icon-deck'\n\n\t\t\tdefault:\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\ticon: this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\t// focus the input again\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs.multiselect.$el.querySelector('.multiselect__input').focus()\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\t// reset the search string when done\n\t\t\t\t// FIXME: https://github.com/shentao/vue-multiselect/issues/633\n\t\t\t\tif (this.$refs.multiselect?.$refs?.VueMultiselect?.search) {\n\t\t\t\t\tthis.$refs.multiselect.$refs.VueMultiselect.search = ''\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\t// focus back if any error\n\t\t\t\tconst input = this.$refs.multiselect.$el.querySelector('input')\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\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 lang=\"scss\">\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-fff);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.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!./SharingInput.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!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=6c96bdca&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{ref:\"multiselect\",staticClass:\"sharing-input\",attrs:{\"clear-on-select\":true,\"disabled\":!_vm.canReshare,\"hide-selected\":true,\"internal-search\":false,\"loading\":_vm.loading,\"options\":_vm.options,\"placeholder\":_vm.inputPlaceholder,\"preselect-first\":true,\"preserve-search\":true,\"searchable\":true,\"user-select\":true,\"open-direction\":\"below\",\"label\":\"displayName\",\"track-by\":\"id\"},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.addShare},scopedSlots:_vm._u([{key:\"noOptions\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\")]},proxy:true},{key:\"noResult\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.noResultText)+\"\\n\\t\")]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.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-next-line import/no-unresolved, node/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share'\nimport SharesRequests from './ShareRequests'\nimport ShareTypes from './ShareTypes'\nimport Config from '../services/ConfigService'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn moment().add(1, 'days')\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = moment(share.expirationDate)\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * ActionInput can be a little tricky to work with.\n\t\t * Since we expect a string and not a Date,\n\t\t * we need to process the value here\n\t\t *\n\t\t * @param {Date} date js date to be parsed by moment.js\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\t// format to YYYY-MM-DD\n\t\t\tconst value = moment(date).format('YYYY-MM-DD')\n\t\t\tthis.share.expireDate = value\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.map(p => (properties[p] = this.share[p].toString()))\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.error('Cannot update share.', this.share, 'No valid id')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\n\t\t/**\n\t\t * Returns which dates are disabled for the datepicker\n\t\t *\n\t\t * @param {Date} date date to check\n\t\t * @return {boolean}\n\t\t */\n\t\tdisabledDate(date) {\n\t\t\tconst dateMoment = moment(date)\n\t\t\treturn (this.dateTomorrow && dateMoment.isBefore(this.dateTomorrow, 'day'))\n\t\t\t\t|| (this.dateMaxEnforced && dateMoment.isSameOrAfter(this.dateMaxEnforced, 'day'))\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!./SharingEntryInherited.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!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 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<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<Avatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\ttooltip-message=\"\" />\n\t\t</template>\n\t\t<ActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</ActionText>\n\t\t<ActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</ActionLink>\n\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</actionbutton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionLink,\n\t\tActionText,\n\t\tAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\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!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&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!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&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 \"29845767\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),_c('ActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('ActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<ActionButton :icon=\"showInheritedSharesIcon\" @click.prevent.stop=\"toggleInheritedShares\">\n\t\t\t\t{{ toggleTooltip }}\n\t\t\t</ActionButton>\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share'\nimport SharingEntryInherited from '../components/SharingEntryInherited'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\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!./SharingInherited.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!./SharingInherited.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!./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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!./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=49ffd834&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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 \"49ffd834\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.toggleTooltip)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.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!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 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<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=29f555e7&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\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 ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.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!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\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<span>\n\t\t<!-- file -->\n\t\t<ActionCheckbox v-if=\"!isFolder\"\n\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t:disabled=\"saving\"\n\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t</ActionCheckbox>\n\n\t\t<!-- folder -->\n\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t</ActionRadio>\n\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t</ActionRadio>\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t</ActionRadio>\n\n\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t<ActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Tune />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- custom permissions -->\n\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<ActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t</ActionButton>\n\t\t\t</span>\n\t\t</template>\n\t</span>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\n\nimport SharesMixin from '../mixins/SharesMixin'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox'\n\nimport Tune from 'vue-material-design-icons/Tune'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\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!./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&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!./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=3d9cb67e&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&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 \"3d9cb67e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[(!_vm.isFolder)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\")])],1)]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<Avatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<h5 :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</h5>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<Actions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<ActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\">\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</ActionLink>\n\t\t</Actions>\n\n\t\t<!-- pending actions -->\n\t\t<Actions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<ActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</ActionText>\n\t\t\t<ActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</ActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<ActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</ActionCheckbox>\n\t\t\t<ActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\tshow: errors.password,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</ActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<ActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tv-model=\"share.expireDate\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\n\t\t\t\t:lang=\"lang\"\n\t\t\t\ticon=\"\"\n\t\t\t\ttype=\"date\"\n\t\t\t\tvalue-type=\"format\"\n\t\t\t\t:disabled-date=\"disabledDate\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</ActionInput>\n\n\t\t\t<ActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</ActionButton>\n\t\t\t<ActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- actions -->\n\t\t<Actions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<ActionInput ref=\"label\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Share label') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<ActionSeparator />\n\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</ActionInput>\n\t\t\t\t\t<ActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</ActionText>\n\t\t\t\t\t<ActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</ActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<ActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<ActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<ActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</ActionLink>\n\n\t\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<ActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create a new share link') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport ExternalShareAction from './ExternalShareAction'\nimport SharePermissionsEditor from './SharePermissionsEditor'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionLink,\n\t\tActionText,\n\t\tActionTextEditable,\n\t\tActionSeparator,\n\t\tAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tlet dateString = moment(this.config.defaultExpirationDateString)\n\t\t\t\tif (!dateString.isValid()) {\n\t\t\t\t\tdateString = moment()\n\t\t\t\t}\n\t\t\t\tthis.share.state.expiration = enabled\n\t\t\t\t\t? dateString.format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t&& moment().add(1 + this.config.defaultExpireDate, 'days')\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.config.defaultExpirationDateString\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst newShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t})\n\n\t\t\t\tthis.open = false\n\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\n\t\t\t} catch ({ response }) {\n\t\t\t\tconst message = response.data.ocs.meta.message\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.shareLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submited.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\th5 {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.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!./SharingEntryLink.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!./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&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!./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=a63eeae4&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&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 \"a63eeae4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('h5',{attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('Actions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('ActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('ActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('ActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\tshow: _vm.errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"icon\":\"\",\"type\":\"date\",\"value-type\":\"format\",\"disabled-date\":_vm.disabledDate},model:{value:(_vm.share.expireDate),callback:function ($$v) {_vm.$set(_vm.share, \"expireDate\", $$v)},expression:\"share.expireDate\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.label,\n\t\t\t\t\t\tshow: _vm.errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.label,\\n\\t\\t\\t\\t\\t\\tshow: errors.label,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '.app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"aria-label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share label'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\t\t\tshow: _vm.errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('ActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('ActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function(ref,index){\n\t\t\t\t\tvar icon = ref.icon;\n\t\t\t\t\tvar url = ref.url;\n\t\t\t\t\tvar name = ref.name;\nreturn _c('ActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create a new share link'))+\"\\n\\t\\t\")]):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.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!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 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<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryLink from '../components/SharingEntryLink'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=8be1a6a2&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare.apply(void 0, arguments)}],\"add:share\":function($event){return _vm.addShare.apply(void 0, arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<li class=\"sharing-entry\">\n\t\t<Avatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:tooltip-message=\"share.type === SHARE_TYPES.SHARE_TYPE_USER ? share.shareWith : ''\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\tv-tooltip.auto=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<h5>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></h5>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<Actions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<ActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<ActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</ActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionTextEditable,\n\t\tAvatar,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.config.defaultInternalExpirationDateString !== ''\n\t\t\t\t\t\t? this.config.defaultInternalExpirationDateString\n\t\t\t\t\t\t: moment().format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote) {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultInternalExpireDate, 'days')\n\t\t\t} else {\n\t\t\t\treturn this.config.isDefaultRemoteExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultRemoteExpireDate, 'days')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({ isEditChecked = this.canEdit, isCreateChecked = this.canCreate, isDeleteChecked = this.canDelete, isReshareChecked = this.canReshare } = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\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!./SharingEntry.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!./SharingEntry.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!./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&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!./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=11f6b64f&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&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 \"11f6b64f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":_vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_USER ? _vm.share.shareWith : '',\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.tooltip),expression:\"tooltip\",modifiers:{\"auto\":true}}],tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"href\":_vm.share.shareWithLink}},[_c('h5',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('ActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('ActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharingEntry from '../components/SharingEntry'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\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!./SharingList.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!./SharingList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=0b29d4c0&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 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<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<template v-else>\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t\ttooltip-message=\"\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</template>\n\n\t\t<!-- additionnal entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport axios from '@nextcloud/axios'\n\nimport Config from '../services/ConfigService'\nimport { shareWithTitle } from '../utils/SharedWithMe'\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryInternal from '../components/SharingEntryInternal'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\nimport SharingInput from '../components/SharingInput'\n\nimport SharingInherited from './SharingInherited'\nimport SharingLinkList from './SharingLinkList'\nimport SharingList from './SharingList'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.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!./SharingTab.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!./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&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!./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=b6bc0cd2&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&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 \"b6bc0cd2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName,\"tooltip-message\":\"\"}})]},proxy:true}],null,false,1643724538)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":(\"\" + (_vm.fileInfo.id)),\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 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\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 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\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 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\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 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 VueClipboard from 'vue-clipboard2'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab'\nimport ShareSearch from './services/ShareSearch'\nimport ExternalLinkActions from './services/ExternalLinkActions'\nimport ExternalShareActions from './services/ExternalShareActions'\nimport TabSections from './services/TabSections'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.use(VueClipboard)\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticon: 'icon-share',\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-3d9cb67e] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AA+RC,wDACC,mCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\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, \".sharing-entry[data-v-11f6b64f]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-11f6b64f]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-11f6b64f]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\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, \".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\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, \".sharing-entry__internal .avatar-external[data-v-854dc2c6]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-854dc2c6]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAwGC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\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, \".sharing-entry[data-v-a63eeae4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-a63eeae4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc h5[data-v-a63eeae4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__desc p[data-v-a63eeae4]{color:var(--color-text-maxcontrast)}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-a63eeae4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-a63eeae4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-a63eeae4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-a63eeae4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-a63eeae4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-a63eeae4],.sharing-entry .action-item~.sharing-entry__loading[data-v-a63eeae4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-a63eeae4]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,yCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAED,wCACC,mCAAA,CAKD,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\th5 {\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\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, \".sharing-entry[data-v-1436bf4a]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1436bf4a]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc h5[data-v-1436bf4a]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__desc p[data-v-1436bf4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-1436bf4a]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AA4EA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,yCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,wCACC,mCAAA,CAGF,yCACC,2BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\th5 {\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tmax-width: inherit;\\n\\t\\t}\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\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, \".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-fff);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,uCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-input {\\n\\twidth: 100%;\\n\\tmargin: 10px 0;\\n\\n\\t// properly style the lookup entry\\n\\t.multiselect__option {\\n\\t\\tspan[lookup] {\\n\\t\\t\\t.avatardiv {\\n\\t\\t\\t\\tbackground-image: var(--icon-search-fff);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-49ffd834]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AA6JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\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, \".emptyContentWithSections[data-v-b6bc0cd2]{margin:1rem auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AAyWA,2CACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7870;","__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\t7870: 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__(62206); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementById","dataset","allowPublicUpload","value","OC","appConfig","core","federatedCloudShareDoc","expireDateString","this","isDefaultExpireDateEnabled","date","window","moment","utc","expireAfterDays","defaultExpireDate","add","format","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","remoteShareAllowed","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","resharingAllowed","password","enforced","sharee","always_show_unique","allowGroupSharing","parseInt","config","password_policy","Share","ocsData","ocs","data","hide_download","mail_send","_share","id","share_type","permissions","uid_owner","displayname_owner","share_with","share_with_displayname","share_with_displayname_unique","share_with_link","share_with_avatar","uid_file_owner","displayname_file_owner","stime","expiration","token","note","label","state","password_expiration_time","passwordExpirationTime","send_password_by_talk","sendPasswordByTalk","path","item_type","mimetype","file_source","file_target","file_parent","PERMISSION_READ","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_UPDATE","PERMISSION_SHARE","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","_t","_v","directives","name","rawName","expression","_s","title","subtitle","_e","$slots","attrs","t","internalLinkSubtitle","scopedSlots","_u","key","fn","proxy","ref","internalLink","copied","copySuccess","on","$event","preventDefault","copyLink","apply","arguments","clipboardTooltip","passwordSet","passwordPolicy","api","generate","axios","request","console","info","Array","fill","reduce","prev","curr","charAt","Math","floor","random","length","shareUrl","generateOcsUrl","methods","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","type","deleteShare","updateShare","properties","Error","canReshare","loading","inputPlaceholder","asyncFind","addShare","noResultText","mixins","SharesRequests","props","fileInfo","Object","default","required","share","isUnique","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","computed","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","onDelete","debug","$emit","propertyNames","map","p","toString","updatedShare","indexOf","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","disabledDate","dateMoment","isBefore","dateMaxEnforced","isSameOrAfter","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","viaFileTargetUrl","folder","viaFolderName","mainTitle","subTitle","showInheritedSharesIcon","stopPropagation","toggleInheritedShares","toggleTooltip","_l","is","_g","_b","tag","action","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","permissionSet","isFolder","shareHasPermissions","atomicPermissions","toggleSharePermissions","fileHasCreatePermission","isPublicUploadEnabled","showCustomPermissionsForm","class","sharePermissionsSetIsValid","canToggleSharePermissions","sharePermissionEqual","bundledPermissions","randomFormName","setSharePermissions","sharePermissionsIsBundle","sharePermissionsSummary","isEmailShareType","shareLink","pending","pendingPassword","pendingExpirationDate","onMenuClose","canEdit","content","show","trigger","defaultContainer","modifiers","newLabel","onLabelChange","onLabelSubmit","hideDownload","isPasswordProtected","onPasswordDisable","hasUnsavedPassword","newPassword","onPasswordChange","onPasswordSubmit","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","onPasswordProtectedByTalkChange","hasExpirationDate","isDefaultExpireDateEnforced","index","icon","url","onNewLinkShare","isPasswordPolicyEnabled","minLength","model","callback","$$v","onCancel","hasLinkShares","shares","awaitForShare","removeShare","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","shareWithDisplayNameUnique","permissionsEdit","canSetEdit","canCreate","permissionsCreate","canSetCreate","canDelete","permissionsDelete","canSetDelete","permissionsShare","canSetReshare","isDefaultInternalExpireDateEnforced","group","escape","circle","conversation","emptyContentWithSections","sections","sharedWithMe","user","displayName","linkShares","reshare","section","refInFor","ShareSearch","_state","results","result","handler","push","ExternalLinkActions","actions","warn","ExternalShareActions","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","Vue","n","VueClipboard","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","mount","el","context","$destroy","update","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-info.js b/dist/settings-vue-settings-personal-info.js
index 79371e9833c..622da66820f 100644
--- a/dist/settings-vue-settings-personal-info.js
+++ b/dist/settings-vue-settings-personal-info.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-personal-info.js.LICENSE.txt */
-!function(){"use strict";var n,e={95979:function(n,e,a){var r,i,o,s=a(20144),l=a(22200),c=a(16453),d=a(9944),u=(a(73317),(0,a(17499).IY)().setApp("settings").detectUser().build()),p=a(26932),A=a(74854),m=a(20296),f=a.n(m);function h(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var v=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),g=Object.freeze({ADDRESS:(0,d.translate)("settings","Address"),AVATAR:(0,d.translate)("settings","Avatar"),BIOGRAPHY:(0,d.translate)("settings","About"),DISPLAYNAME:(0,d.translate)("settings","Full name"),EMAIL_COLLECTION:(0,d.translate)("settings","Additional email"),EMAIL:(0,d.translate)("settings","Email"),HEADLINE:(0,d.translate)("settings","Headline"),ORGANISATION:(0,d.translate)("settings","Organisation"),PHONE:(0,d.translate)("settings","Phone number"),PROFILE_ENABLED:(0,d.translate)("settings","Profile"),ROLE:(0,d.translate)("settings","Role"),TWITTER:(0,d.translate)("settings","Twitter"),WEBSITE:(0,d.translate)("settings","Website")}),C=Object.freeze({PROFILE_VISIBILITY:(0,d.translate)("settings","Profile visibility")}),b=Object.freeze((h(r={},g.ADDRESS,v.ADDRESS),h(r,g.AVATAR,v.AVATAR),h(r,g.BIOGRAPHY,v.BIOGRAPHY),h(r,g.DISPLAYNAME,v.DISPLAYNAME),h(r,g.EMAIL_COLLECTION,v.EMAIL_COLLECTION),h(r,g.EMAIL,v.EMAIL),h(r,g.HEADLINE,v.HEADLINE),h(r,g.ORGANISATION,v.ORGANISATION),h(r,g.PHONE,v.PHONE),h(r,g.PROFILE_ENABLED,v.PROFILE_ENABLED),h(r,g.ROLE,v.ROLE),h(r,g.TWITTER,v.TWITTER),h(r,g.WEBSITE,v.WEBSITE),r)),y=Object.freeze({LANGUAGE:"language"}),x=Object.freeze({LANGUAGE:(0,d.translate)("settings","Language")}),E=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),w=Object.freeze((h(i={},g.ADDRESS,[E.LOCAL,E.PRIVATE]),h(i,g.AVATAR,[E.LOCAL,E.PRIVATE]),h(i,g.BIOGRAPHY,[E.LOCAL,E.PRIVATE]),h(i,g.DISPLAYNAME,[E.LOCAL]),h(i,g.EMAIL_COLLECTION,[E.LOCAL]),h(i,g.EMAIL,[E.LOCAL]),h(i,g.HEADLINE,[E.LOCAL,E.PRIVATE]),h(i,g.ORGANISATION,[E.LOCAL,E.PRIVATE]),h(i,g.PHONE,[E.LOCAL,E.PRIVATE]),h(i,g.PROFILE_ENABLED,[E.LOCAL,E.PRIVATE]),h(i,g.ROLE,[E.LOCAL,E.PRIVATE]),h(i,g.TWITTER,[E.LOCAL,E.PRIVATE]),h(i,g.WEBSITE,[E.LOCAL,E.PRIVATE]),i)),k=Object.freeze([g.BIOGRAPHY,g.HEADLINE,g.ORGANISATION,g.ROLE]),I="Scope",_=Object.freeze((h(o={},E.PRIVATE,{name:E.PRIVATE,displayName:(0,d.translate)("settings","Private"),tooltip:(0,d.translate)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,d.translate)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"}),h(o,E.LOCAL,{name:E.LOCAL,displayName:(0,d.translate)("settings","Local"),tooltip:(0,d.translate)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"}),h(o,E.FEDERATED,{name:E.FEDERATED,displayName:(0,d.translate)("settings","Federated"),tooltip:(0,d.translate)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,d.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"}),h(o,E.PUBLISHED,{name:E.PUBLISHED,displayName:(0,d.translate)("settings","Published"),tooltip:(0,d.translate)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,d.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}),o)),P=E.LOCAL,S=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),B=/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i,R=a(4820),O=a(79753),D=a(10128),L=a.n(D);function N(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function T(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){N(i,a,r,o,s,"next",n)}function s(n){N(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Z=function(){var n=T(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return"boolean"==typeof e&&(e=e?"1":"0"),a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:a}),n.next=5,L()();case 5:return n.next=7,R.default.put(r,{key:t,value:e});case 7:return i=n.sent,n.abrupt("return",i.data);case 9:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}(),H=function(){var n=T(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:a}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:"".concat(t).concat(I),value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}();function U(n){return""!==n}function $(n){return"string"==typeof n&&B.test(n)&&"\n"!==n.slice(-1)&&n.length<=320&&encodeURIComponent(n).replace(/%../g,"x").length<=320}function M(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function F(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){M(i,a,r,o,s,"next",n)}function s(n){M(i,a,r,o,s,"throw",n)}o(void 0)}))}}var j={name:"DisplayName",props:{displayName:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialDisplayName:this.displayName,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onDisplayNameChange:function(n){this.$emit("update:display-name",n.target.value),this.debounceDisplayNameChange(n.target.value.trim())},debounceDisplayNameChange:f()(function(){var n=F(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!U(t)){n.next=3;break}return n.next=3,this.updatePrimaryDisplayName(t);case 3:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryDisplayName:function(n){var e=this;return F(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.DISPLAYNAME,n);case 3:o=a.sent,e.handleResponse({displayName:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update full name"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.displayName,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialDisplayName=e,(0,A.emit)("settings:display-name:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},q=j,G=a(93379),V=a.n(G),W=a(7795),Y=a.n(W),z=a(90569),K=a.n(z),J=a(3565),Q=a.n(J),X=a(19216),nn=a.n(X),tn=a(44589),en=a.n(tn),an=a(74539),rn={};rn.styleTagTransform=en(),rn.setAttributes=Q(),rn.insert=K().bind(null,"head"),rn.domAPI=Y(),rn.insertStyleElement=nn(),V()(an.Z,rn),an.Z&&an.Z.locals&&an.Z.locals;var on=a(51900),sn=(0,on.Z)(q,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"displayname"},[e("input",{attrs:{id:"displayname",type:"text",placeholder:n.t("settings","Your full name"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.displayName},on:{input:n.onDisplayNameChange}}),n._v(" "),e("div",{staticClass:"displayname__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"3418897a",null).exports,ln=a(79440),cn=a.n(ln),dn=a(56286),un=a.n(dn),pn={name:"FederationControlAction",components:{ActionButton:un()},props:{activeScope:{type:String,required:!0},displayName:{type:String,required:!0},handleScopeChange:{type:Function,default:function(){}},iconClass:{type:String,required:!0},isSupportedScope:{type:Boolean,required:!0},name:{type:String,required:!0},tooltipDisabled:{type:String,default:""},tooltip:{type:String,required:!0}},methods:{updateScope:function(){this.handleScopeChange(this.name)}}},An=a(12461),mn={};mn.styleTagTransform=en(),mn.setAttributes=Q(),mn.insert=K().bind(null,"head"),mn.domAPI=Y(),mn.insertStyleElement=nn(),V()(An.Z,mn),An.Z&&An.Z.locals&&An.Z.locals;var fn=(0,on.Z)(pn,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("ActionButton",{staticClass:"federation-actions__btn",class:{"federation-actions__btn--active":n.activeScope===n.name},attrs:{"aria-label":n.isSupportedScope?n.tooltip:n.tooltipDisabled,"close-after-click":!0,disabled:!n.isSupportedScope,icon:n.iconClass,title:n.displayName},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.updateScope.apply(null,arguments)}}},[n._v("\n\t"+n._s(n.isSupportedScope?n.tooltip:n.tooltipDisabled)+"\n")])}),[],!1,null,"d2e8b360",null),hn=fn.exports;function vn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function gn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){vn(i,a,r,o,s,"next",n)}function s(n){vn(i,a,r,o,s,"throw",n)}o(void 0)}))}}function Cn(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var bn=(0,c.loadState)("settings","accountParameters",{}).lookupServerUploadEnabled,yn={name:"FederationControl",components:{Actions:cn(),FederationControlAction:hn},props:{accountProperty:{type:String,required:!0,validator:function(n){return Object.values(g).includes(n)}},additional:{type:Boolean,default:!1},additionalValue:{type:String,default:""},disabled:{type:Boolean,default:!1},handleAdditionalScopeChange:{type:Function,default:null},scope:{type:String,required:!0}},data:function(){return{accountPropertyLowerCase:this.accountProperty.toLocaleLowerCase(),initialScope:this.scope}},computed:{ariaLabel:function(){return t("settings","Change scope level of {accountProperty}",{accountProperty:this.accountPropertyLowerCase})},scopeIcon:function(){return _[this.scope].iconClass},federationScopes:function(){return Object.values(_)},supportedScopes:function(){return bn&&!k.includes(this.accountProperty)?[].concat(function(n){if(Array.isArray(n))return Cn(n)}(n=w[this.accountProperty])||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,t){if(n){if("string"==typeof n)return Cn(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Cn(n,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[E.FEDERATED,E.PUBLISHED]):w[this.accountProperty];var n}},methods:{changeScope:function(n){var t=this;return gn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.$emit("update:scope",n),t.additional){e.next=6;break}return e.next=4,t.updatePrimaryScope(n);case 4:e.next=8;break;case 6:return e.next=8,t.updateAdditionalScope(n);case 8:case"end":return e.stop()}}),e)})))()},updatePrimaryScope:function(n){var e=this;return gn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,H(b[e.accountProperty],n);case 3:o=a.sent,e.handleResponse({scope:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update federation scope of the primary {accountProperty}",{accountProperty:e.accountPropertyLowerCase}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},updateAdditionalScope:function(n){var e=this;return gn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.handleAdditionalScopeChange(e.additionalValue,n);case 3:o=a.sent,e.handleResponse({scope:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update federation scope of additional {accountProperty}",{accountProperty:e.accountPropertyLowerCase}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.scope,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialScope=t:(this.$emit("update:scope",this.initialScope),(0,p.x2)(a),this.logger.error(a,r))}}},xn=a(18561),En={};En.styleTagTransform=en(),En.setAttributes=Q(),En.insert=K().bind(null,"head"),En.domAPI=Y(),En.insertStyleElement=nn(),V()(xn.Z,En),xn.Z&&xn.Z.locals&&xn.Z.locals;var wn=(0,on.Z)(yn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("Actions",{class:{"federation-actions":!n.additional,"federation-actions--additional":n.additional},attrs:{"aria-label":n.ariaLabel,"default-icon":n.scopeIcon,disabled:n.disabled}},n._l(n.federationScopes,(function(t){return e("FederationControlAction",{key:t.name,attrs:{"active-scope":n.scope,"display-name":t.displayName,"handle-scope-change":n.changeScope,"icon-class":t.iconClass,"is-supported-scope":n.supportedScopes.includes(t.name),name:t.name,"tooltip-disabled":t.tooltipDisabled,tooltip:t.tooltip}})})),1)}),[],!1,null,"b51d8bee",null).exports,kn=a(1412),In=a.n(kn),_n=a(31209),Pn={name:"HeaderBar",components:{FederationControl:wn,Button:In(),Plus:_n.Z},props:{accountProperty:{type:String,required:!0,validator:function(n){return Object.values(g).includes(n)||Object.values(x).includes(n)||n===C.PROFILE_VISIBILITY}},isEditable:{type:Boolean,default:!0},isMultiValueSupported:{type:Boolean,default:!1},isValidSection:{type:Boolean,default:!1},labelFor:{type:String,default:""},scope:{type:String,default:null}},data:function(){return{localScope:this.scope}},computed:{isProfileProperty:function(){return this.accountProperty===g.PROFILE_ENABLED},isSettingProperty:function(){return Object.values(x).includes(this.accountProperty)}},methods:{onAddAdditional:function(){this.$emit("add-additional")},onScopeChange:function(n){this.$emit("update:scope",n)}}},Sn=a(75537),Bn={};Bn.styleTagTransform=en(),Bn.setAttributes=Q(),Bn.insert=K().bind(null,"head"),Bn.domAPI=Y(),Bn.insertStyleElement=nn(),V()(Sn.Z,Bn),Sn.Z&&Sn.Z.locals&&Sn.Z.locals;var Rn=(0,on.Z)(Pn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("h3",{class:{"setting-property":n.isSettingProperty,"profile-property":n.isProfileProperty}},[e("label",{attrs:{for:n.labelFor}},[n._v("\n\t\t"+n._s(n.accountProperty)+"\n\t")]),n._v(" "),n.scope?[e("FederationControl",{staticClass:"federation-control",attrs:{"account-property":n.accountProperty,scope:n.localScope},on:{"update:scope":[function(t){n.localScope=t},n.onScopeChange]}})]:n._e(),n._v(" "),n.isEditable&&n.isMultiValueSupported?[e("Button",{attrs:{type:"tertiary",disabled:!n.isValidSection,"aria-label":n.t("settings","Add additional email")},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.onAddAdditional.apply(null,arguments)}},scopedSlots:n._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}],null,!1,32235154)},[n._v("\n\t\t\t"+n._s(n.t("settings","Add"))+"\n\t\t")])]:n._e()],2)}),[],!1,null,"19038f0c",null),On=Rn.exports,Dn=(0,c.loadState)("settings","personalInfoParameters",{}).displayNameMap.primaryDisplayName,Ln=(0,c.loadState)("settings","accountParameters",{}).displayNameChangeSupported,Nn={name:"DisplayNameSection",components:{DisplayName:sn,HeaderBar:On},data:function(){return{accountProperty:g.DISPLAYNAME,displayNameChangeSupported:Ln,primaryDisplayName:Dn}},computed:{isValidSection:function(){return U(this.primaryDisplayName.value)}}},Tn=a(26184),Zn={};Zn.styleTagTransform=en(),Zn.setAttributes=Q(),Zn.insert=K().bind(null,"head"),Zn.domAPI=Y(),Zn.insertStyleElement=nn(),V()(Tn.Z,Zn),Tn.Z&&Tn.Z.locals&&Tn.Z.locals;var Hn=(0,on.Z)(Nn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"displayname","is-editable":n.displayNameChangeSupported,"is-valid-section":n.isValidSection,scope:n.primaryDisplayName.scope},on:{"update:scope":function(t){return n.$set(n.primaryDisplayName,"scope",t)}}}),n._v(" "),n.displayNameChangeSupported?[e("DisplayName",{attrs:{"display-name":n.primaryDisplayName.value,scope:n.primaryDisplayName.scope},on:{"update:displayName":function(t){return n.$set(n.primaryDisplayName,"value",t)},"update:display-name":function(t){return n.$set(n.primaryDisplayName,"value",t)},"update:scope":function(t){return n.$set(n.primaryDisplayName,"scope",t)}}})]:e("span",[n._v("\n\t\t"+n._s(n.primaryDisplayName.value||n.t("settings","No full name set"))+"\n\t")])],2)}),[],!1,null,"b8a748f4",null).exports;function Un(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function $n(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Un(i,a,r,o,s,"next",n)}function s(n){Un(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Mn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.EMAIL,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Fn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.EMAIL_COLLECTION,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),jn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.NOTIFICATION_EMAIL,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),qn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:e,collection:v.EMAIL_COLLECTION}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:t,value:""});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Gn=function(){var n=$n(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:a,collection:v.EMAIL_COLLECTION}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:t,value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}(),Vn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:"".concat(v.EMAIL).concat(I),value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Wn=function(){var n=$n(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}/{collectionScope}",{userId:a,collectionScope:"".concat(v.EMAIL_COLLECTION).concat(I)}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:t,value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}();function Yn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function zn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Yn(i,a,r,o,s,"next",n)}function s(n){Yn(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Kn={name:"Email",components:{Actions:cn(),ActionButton:un(),FederationControl:wn},props:{email:{type:String,required:!0},index:{type:Number,default:0},primary:{type:Boolean,default:!1},scope:{type:String,required:!0},activeNotificationEmail:{type:String,default:""},localVerificationState:{type:Number,default:S.NOT_VERIFIED}},data:function(){return{accountProperty:g.EMAIL,initialEmail:this.email,localScope:this.scope,saveAdditionalEmailScope:Wn,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{deleteDisabled:function(){return this.primary?""===this.email||this.initialEmail!==this.email:""!==this.initialEmail&&this.initialEmail!==this.email},deleteEmailLabel:function(){return this.primary?t("settings","Remove primary email"):t("settings","Delete email")},setNotificationMailDisabled:function(){return!this.primary&&this.localVerificationState!==S.VERIFIED},setNotificationMailLabel:function(){return this.isNotificationEmail?t("settings","Unset as primary email"):this.primary||this.localVerificationState===S.VERIFIED?t("settings","Set as primary email"):t("settings","This address is not confirmed")},federationDisabled:function(){return!this.initialEmail},inputId:function(){return this.primary?"email":"email-".concat(this.index)},inputPlaceholder:function(){return this.primary?t("settings","Your email address"):t("settings","Additional email address {index}",{index:this.index+1})},isNotificationEmail:function(){return this.email&&this.email===this.activeNotificationEmail||this.primary&&""===this.activeNotificationEmail}},mounted:function(){var n=this;this.primary||""!==this.initialEmail||this.$nextTick((function(){var t;return null===(t=n.$refs.email)||void 0===t?void 0:t.focus()}))},methods:{onEmailChange:function(n){this.$emit("update:email",n.target.value),this.debounceEmailChange(n.target.value.trim())},debounceEmailChange:f()(function(){var n=zn(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!$(t)&&""!==t){n.next=14;break}if(!this.primary){n.next=6;break}return n.next=4,this.updatePrimaryEmail(t);case 4:case 10:n.next=14;break;case 6:if(!t){n.next=14;break}if(""!==this.initialEmail){n.next=12;break}return n.next=10,this.addAdditionalEmail(t);case 12:return n.next=14,this.updateAdditionalEmail(t);case 14:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),deleteEmail:function(){var n=this;return zn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.primary){t.next=6;break}return n.$emit("update:email",""),t.next=4,n.updatePrimaryEmail("");case 4:t.next=8;break;case 6:return t.next=8,n.deleteAdditionalEmail();case 8:case"end":return t.stop()}}),t)})))()},updatePrimaryEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Mn(n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),""===n?e.handleResponse({errorMessage:t("settings","Unable to delete primary email address"),error:a.t0}):e.handleResponse({errorMessage:t("settings","Unable to update primary email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},addAdditionalEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Fn(n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to add additional email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},setNotificationMail:function(){var n=this;return zn(regeneratorRuntime.mark((function t(){var e,a,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=n.primary||n.isNotificationEmail?"":n.initialEmail,t.next=4,jn(r);case 4:i=t.sent,n.handleResponse({notificationEmail:r,status:null===(e=i.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status}),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),n.handleResponse({errorMessage:"Unable to choose this email for notifications",error:t.t0});case 11:case"end":return t.stop()}}),t,null,[[0,8]])})))()},updateAdditionalEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Gn(e.initialEmail,n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update additional email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},deleteAdditionalEmail:function(){var n=this;return zn(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,qn(n.initialEmail);case 3:i=e.sent,n.handleDeleteAdditionalEmail(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse({errorMessage:t("settings","Unable to delete additional email address"),error:e.t0});case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},handleDeleteAdditionalEmail:function(n){"ok"===n?this.$emit("delete-additional-email"):this.handleResponse({errorMessage:t("settings","Unable to delete additional email address")})},handleResponse:function(n){var t=this,e=n.email,a=n.notificationEmail,r=n.status,i=n.errorMessage,o=n.error;"ok"===r?(e?this.initialEmail=e:void 0!==a&&this.$emit("update:notification-email",a),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(i),this.logger.error(i,o),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Jn=Kn,Qn=a(26669),Xn={};Xn.styleTagTransform=en(),Xn.setAttributes=Q(),Xn.insert=K().bind(null,"head"),Xn.domAPI=Y(),Xn.insertStyleElement=nn(),V()(Qn.Z,Xn),Qn.Z&&Qn.Z.locals&&Qn.Z.locals;var nt=(0,on.Z)(Jn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",[e("div",{staticClass:"email"},[e("input",{ref:"email",attrs:{id:n.inputId,type:"email",placeholder:n.inputPlaceholder,autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.email},on:{input:n.onEmailChange}}),n._v(" "),e("div",{staticClass:"email__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()]),n._v(" "),n.primary?n._e():[e("FederationControl",{attrs:{"account-property":n.accountProperty,additional:!0,"additional-value":n.email,disabled:n.federationDisabled,"handle-additional-scope-change":n.saveAdditionalEmailScope,scope:n.localScope},on:{"update:scope":[function(t){n.localScope=t},n.onScopeChange]}})],n._v(" "),e("Actions",{staticClass:"email__actions",attrs:{"aria-label":n.t("settings","Email options"),disabled:n.deleteDisabled,"force-menu":!0}},[e("ActionButton",{attrs:{"aria-label":n.deleteEmailLabel,"close-after-click":!0,disabled:n.deleteDisabled,icon:"icon-delete"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.deleteEmail.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.deleteEmailLabel)+"\n\t\t\t\t")]),n._v(" "),n.primary&&n.isNotificationEmail?n._e():e("ActionButton",{attrs:{"aria-label":n.setNotificationMailLabel,"close-after-click":!0,disabled:n.setNotificationMailDisabled,icon:"icon-favorite"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.setNotificationMail.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.setNotificationMailLabel)+"\n\t\t\t\t")])],1)],2)]),n._v(" "),n.isNotificationEmail?e("em",[n._v("\n\t\t"+n._s(n.t("settings","Primary email for password reset and notifications"))+"\n\t")]):n._e()])}),[],!1,null,"2c097054",null),tt=nt.exports;function et(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function at(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){et(i,a,r,o,s,"next",n)}function s(n){et(i,a,r,o,s,"throw",n)}o(void 0)}))}}var rt=(0,c.loadState)("settings","personalInfoParameters",{}).emailMap,it=rt.additionalEmails,ot=rt.primaryEmail,st=rt.notificationEmail,lt=(0,c.loadState)("settings","accountParameters",{}).displayNameChangeSupported,ct={name:"EmailSection",components:{HeaderBar:On,Email:tt},data:function(){return{accountProperty:g.EMAIL,additionalEmails:it,displayNameChangeSupported:lt,primaryEmail:ot,savePrimaryEmailScope:Vn,notificationEmail:st}},computed:{firstAdditionalEmail:function(){return this.additionalEmails.length?this.additionalEmails[0].value:null},isValidSection:function(){return $(this.primaryEmail.value)&&this.additionalEmails.map((function(n){return n.value})).every($)},primaryEmailValue:{get:function(){return this.primaryEmail.value},set:function(n){this.primaryEmail.value=n}}},methods:{onAddAdditionalEmail:function(){this.isValidSection&&this.additionalEmails.push({value:"",scope:P})},onDeleteAdditionalEmail:function(n){this.$delete(this.additionalEmails,n)},onUpdateEmail:function(){var n=this;return at(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(""!==n.primaryEmailValue||!n.firstAdditionalEmail){t.next=7;break}return e=n.firstAdditionalEmail,t.next=4,n.deleteFirstAdditionalEmail();case 4:return n.primaryEmailValue=e,t.next=7,n.updatePrimaryEmail();case 7:case"end":return t.stop()}}),t)})))()},onUpdateNotificationEmail:function(n){var t=this;return at(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.notificationEmail=n;case 1:case"end":return e.stop()}}),e)})))()},updatePrimaryEmail:function(){var n=this;return at(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Mn(n.primaryEmailValue);case 3:i=e.sent,n.handleResponse(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse("error",t("settings","Unable to update primary email address"),e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},deleteFirstAdditionalEmail:function(){var n=this;return at(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,qn(n.firstAdditionalEmail);case 3:i=e.sent,n.handleDeleteFirstAdditionalEmail(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse("error",t("settings","Unable to delete additional email address"),e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},handleDeleteFirstAdditionalEmail:function(n){"ok"===n?this.$delete(this.additionalEmails,0):this.handleResponse("error",t("settings","Unable to delete additional email address"),{})},handleResponse:function(n,t,e){"ok"!==n&&((0,p.x2)(t),this.logger.error(t,e))}}},dt=a(35610),ut={};ut.styleTagTransform=en(),ut.setAttributes=Q(),ut.insert=K().bind(null,"head"),ut.domAPI=Y(),ut.insertStyleElement=nn(),V()(dt.Z,ut),dt.Z&&dt.Z.locals&&dt.Z.locals;var pt=(0,on.Z)(ct,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"email","handle-scope-change":n.savePrimaryEmailScope,"is-editable":!0,"is-multi-value-supported":!0,"is-valid-section":n.isValidSection,scope:n.primaryEmail.scope},on:{"update:scope":function(t){return n.$set(n.primaryEmail,"scope",t)},"add-additional":n.onAddAdditionalEmail}}),n._v(" "),n.displayNameChangeSupported?[e("Email",{attrs:{primary:!0,scope:n.primaryEmail.scope,email:n.primaryEmail.value,"active-notification-email":n.notificationEmail},on:{"update:scope":function(t){return n.$set(n.primaryEmail,"scope",t)},"update:email":[function(t){return n.$set(n.primaryEmail,"value",t)},n.onUpdateEmail],"update:activeNotificationEmail":function(t){n.notificationEmail=t},"update:active-notification-email":function(t){n.notificationEmail=t},"update:notification-email":n.onUpdateNotificationEmail}})]:e("span",[n._v("\n\t\t"+n._s(n.primaryEmail.value||n.t("settings","No email address set"))+"\n\t")]),n._v(" "),n.additionalEmails.length?[e("em",{staticClass:"additional-emails-label"},[n._v(n._s(n.t("settings","Additional emails")))]),n._v(" "),n._l(n.additionalEmails,(function(t,a){return e("Email",{key:a,attrs:{index:a,scope:t.scope,email:t.value,"local-verification-state":parseInt(t.locallyVerified,10),"active-notification-email":n.notificationEmail},on:{"update:scope":function(e){return n.$set(t,"scope",e)},"update:email":[function(e){return n.$set(t,"value",e)},n.onUpdateEmail],"update:activeNotificationEmail":function(t){n.notificationEmail=t},"update:active-notification-email":function(t){n.notificationEmail=t},"update:notification-email":n.onUpdateNotificationEmail,"delete-additional-email":function(t){return n.onDeleteAdditionalEmail(a)}}})}))]:n._e()],2)}),[],!1,null,"845b669e",null).exports;function At(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function mt(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){At(i,a,r,o,s,"next",n)}function s(n){At(i,a,r,o,s,"throw",n)}o(void 0)}))}}function ft(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,a)}return e}function ht(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?ft(Object(e),!0).forEach((function(t){vt(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):ft(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function vt(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function gt(n){return function(n){if(Array.isArray(n))return Ct(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,t){if(n){if("string"==typeof n)return Ct(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Ct(n,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ct(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var bt={name:"Language",props:{commonLanguages:{type:Array,required:!0},otherLanguages:{type:Array,required:!0},language:{type:Object,required:!0}},data:function(){return{initialLanguage:this.language}},computed:{allLanguages:function(){return Object.freeze([].concat(gt(this.commonLanguages),gt(this.otherLanguages)).reduce((function(n,t){var e=t.code,a=t.name;return ht(ht({},n),{},vt({},e,a))}),{}))}},methods:{onLanguageChange:function(n){var t=this;return mt(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.constructLanguage(n.target.value),t.$emit("update:language",a),""===(r=a).code||""===r.name||void 0===r.name){e.next=5;break}return e.next=5,t.updateLanguage(a);case 5:case"end":return e.stop()}var r}),e)})))()},updateLanguage:function(n){var e=this;return mt(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(y.LANGUAGE,n.code);case 3:o=a.sent,e.handleResponse({language:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),e.reloadPage(),a.next=11;break;case 8:a.prev=8,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update language"),error:a.t0});case 11:case"end":return a.stop()}}),a,null,[[0,8]])})))()},constructLanguage:function(n){return{code:n,name:this.allLanguages[n]}},handleResponse:function(n){var t=n.language,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialLanguage=t:((0,p.x2)(a),this.logger.error(a,r))},reloadPage:function(){location.reload()}}},yt=a(35595),xt={};xt.styleTagTransform=en(),xt.setAttributes=Q(),xt.insert=K().bind(null,"head"),xt.domAPI=Y(),xt.insertStyleElement=nn(),V()(yt.Z,xt),yt.Z&&yt.Z.locals&&yt.Z.locals;var Et=(0,on.Z)(bt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"language"},[e("select",{attrs:{id:"language",placeholder:n.t("settings","Language")},on:{change:n.onLanguageChange}},[n._l(n.commonLanguages,(function(t){return e("option",{key:t.code,domProps:{selected:n.language.code===t.code,value:t.code}},[n._v("\n\t\t\t"+n._s(t.name)+"\n\t\t")])})),n._v(" "),e("option",{attrs:{disabled:""}},[n._v("\n\t\t\t──────────\n\t\t")]),n._v(" "),n._l(n.otherLanguages,(function(t){return e("option",{key:t.code,domProps:{selected:n.language.code===t.code,value:t.code}},[n._v("\n\t\t\t"+n._s(t.name)+"\n\t\t")])}))],2),n._v(" "),e("a",{attrs:{href:"https://www.transifex.com/nextcloud/nextcloud/",target:"_blank",rel:"noreferrer noopener"}},[e("em",[n._v(n._s(n.t("settings","Help translate")))])])])}),[],!1,null,"5396d706",null).exports,wt=(0,c.loadState)("settings","personalInfoParameters",{}).languageMap,kt=wt.activeLanguage,It=wt.commonLanguages,_t=wt.otherLanguages,Pt={name:"LanguageSection",components:{Language:Et,HeaderBar:On},data:function(){return{accountProperty:x.LANGUAGE,commonLanguages:It,otherLanguages:_t,language:kt}},computed:{isEditable:function(){return Boolean(this.language)}}},St=a(3569),Bt={};Bt.styleTagTransform=en(),Bt.setAttributes=Q(),Bt.insert=K().bind(null,"head"),Bt.domAPI=Y(),Bt.insertStyleElement=nn(),V()(St.Z,Bt),St.Z&&St.Z.locals&&St.Z.locals;var Rt=(0,on.Z)(Pt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"language"}}),n._v(" "),n.isEditable?[e("Language",{attrs:{"common-languages":n.commonLanguages,"other-languages":n.otherLanguages,language:n.language},on:{"update:language":function(t){n.language=t}}})]:e("span",[n._v("\n\t\t"+n._s(n.t("settings","No language set"))+"\n\t")])],2)}),[],!1,null,"16883898",null).exports,Ot={name:"EditProfileAnchorLink",components:{ChevronDownIcon:a(6016).Z},props:{profileEnabled:{type:Boolean,required:!0}},computed:{disabled:function(){return!this.profileEnabled}}},Dt=a(61434),Lt={};Lt.styleTagTransform=en(),Lt.setAttributes=Q(),Lt.insert=K().bind(null,"head"),Lt.domAPI=Y(),Lt.insertStyleElement=nn(),V()(Dt.Z,Lt),Dt.Z&&Dt.Z.locals&&Dt.Z.locals;var Nt=a(95758),Tt={};Tt.styleTagTransform=en(),Tt.setAttributes=Q(),Tt.insert=K().bind(null,"head"),Tt.domAPI=Y(),Tt.insertStyleElement=nn(),V()(Nt.Z,Tt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;var Zt=(0,on.Z)(Ot,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("a",n._g({class:{disabled:n.disabled},attrs:{href:"#profile-visibility"}},n.$listeners),[e("ChevronDownIcon",{staticClass:"anchor-icon",attrs:{decorative:"",title:"",size:22}}),n._v("\n\t"+n._s(n.t("settings","Edit your Profile visibility"))+"\n")],1)}),[],!1,null,"73817e9f",null).exports;function Ht(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Ut(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Ht(i,a,r,o,s,"next",n)}function s(n){Ht(i,a,r,o,s,"throw",n)}o(void 0)}))}}var $t={name:"ProfileCheckbox",props:{profileEnabled:{type:Boolean,required:!0}},data:function(){return{initialProfileEnabled:this.profileEnabled}},methods:{onEnableProfileChange:function(n){var t=this;return Ut(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.target.checked,t.$emit("update:profile-enabled",a),"boolean"!=typeof a){e.next=5;break}return e.next=5,t.updateEnableProfile(a);case 5:case"end":return e.stop()}}),e)})))()},updateEnableProfile:function(n){var e=this;return Ut(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.PROFILE_ENABLED,n);case 3:o=a.sent,e.handleResponse({isEnabled:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update profile enabled state"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.isEnabled,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?(this.initialProfileEnabled=t,(0,A.emit)("settings:profile-enabled:updated",t)):((0,p.x2)(a),this.logger.error(a,r))}}},Mt=(0,on.Z)($t,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"checkbox-container"},[e("input",{staticClass:"checkbox",attrs:{id:"enable-profile",type:"checkbox"},domProps:{checked:n.profileEnabled},on:{change:n.onEnableProfileChange}}),n._v(" "),e("label",{attrs:{for:"enable-profile"}},[n._v("\n\t\t"+n._s(n.t("settings","Enable Profile"))+"\n\t")])])}),[],!1,null,"b6898860",null).exports,Ft=a(28017),jt={name:"ProfilePreviewCard",components:{Avatar:a.n(Ft)()},props:{displayName:{type:String,required:!0},organisation:{type:String,required:!0},profileEnabled:{type:Boolean,required:!0},userId:{type:String,required:!0}},computed:{disabled:function(){return!this.profileEnabled},profilePageLink:function(){return this.profileEnabled?(0,O.generateUrl)("/u/{userId}",{userId:(0,l.getCurrentUser)().uid}):null}}},qt=a(32756),Gt={};Gt.styleTagTransform=en(),Gt.setAttributes=Q(),Gt.insert=K().bind(null,"head"),Gt.domAPI=Y(),Gt.insertStyleElement=nn(),V()(qt.Z,Gt),qt.Z&&qt.Z.locals&&qt.Z.locals;var Vt=(0,on.Z)(jt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("a",{staticClass:"preview-card",class:{disabled:n.disabled},attrs:{href:n.profilePageLink}},[e("Avatar",{staticClass:"preview-card__avatar",attrs:{user:n.userId,size:48,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0}}),n._v(" "),e("div",{staticClass:"preview-card__header"},[e("span",[n._v(n._s(n.displayName))])]),n._v(" "),e("div",{staticClass:"preview-card__footer"},[e("span",[n._v(n._s(n.organisation))])])],1)}),[],!1,null,"79bf7437",null).exports,Wt=(0,c.loadState)("settings","personalInfoParameters",{}),Yt=Wt.organisationMap.primaryOrganisation.value,zt=Wt.displayNameMap.primaryDisplayName.value,Kt=Wt.profileEnabled,Jt=Wt.userId,Qt={name:"ProfileSection",components:{EditProfileAnchorLink:Zt,HeaderBar:On,ProfileCheckbox:Mt,ProfilePreviewCard:Vt},data:function(){return{accountProperty:g.PROFILE_ENABLED,organisation:Yt,displayName:zt,profileEnabled:Kt,userId:Jt}},mounted:function(){(0,A.subscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,A.subscribe)("settings:organisation:updated",this.handleOrganisationUpdate)},beforeDestroy:function(){(0,A.unsubscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,A.unsubscribe)("settings:organisation:updated",this.handleOrganisationUpdate)},methods:{handleDisplayNameUpdate:function(n){this.displayName=n},handleOrganisationUpdate:function(n){this.organisation=n}}},Xt=Qt,ne=a(83566),te={};te.styleTagTransform=en(),te.setAttributes=Q(),te.insert=K().bind(null,"head"),te.domAPI=Y(),te.insertStyleElement=nn(),V()(ne.Z,te),ne.Z&&ne.Z.locals&&ne.Z.locals;var ee=(0,on.Z)(Xt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty}}),n._v(" "),e("ProfileCheckbox",{attrs:{"profile-enabled":n.profileEnabled},on:{"update:profileEnabled":function(t){n.profileEnabled=t},"update:profile-enabled":function(t){n.profileEnabled=t}}}),n._v(" "),e("ProfilePreviewCard",{attrs:{organisation:n.organisation,"display-name":n.displayName,"profile-enabled":n.profileEnabled,"user-id":n.userId}}),n._v(" "),e("EditProfileAnchorLink",{attrs:{"profile-enabled":n.profileEnabled}})],1)}),[],!1,null,"252753e6",null).exports;function ae(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function re(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ae(i,a,r,o,s,"next",n)}function s(n){ae(i,a,r,o,s,"throw",n)}o(void 0)}))}}var ie={name:"Organisation",props:{organisation:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialOrganisation:this.organisation,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onOrganisationChange:function(n){this.$emit("update:organisation",n.target.value),this.debounceOrganisationChange(n.target.value.trim())},debounceOrganisationChange:f()(function(){var n=re(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryOrganisation(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryOrganisation:function(n){var e=this;return re(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.ORGANISATION,n);case 3:o=a.sent,e.handleResponse({organisation:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update organisation"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.organisation,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialOrganisation=e,(0,A.emit)("settings:organisation:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},oe=ie,se=a(25731),le={};le.styleTagTransform=en(),le.setAttributes=Q(),le.insert=K().bind(null,"head"),le.domAPI=Y(),le.insertStyleElement=nn(),V()(se.Z,le),se.Z&&se.Z.locals&&se.Z.locals;var ce=(0,on.Z)(oe,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"organisation"},[e("input",{attrs:{id:"organisation",type:"text",placeholder:n.t("settings","Your organisation"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.organisation},on:{input:n.onOrganisationChange}}),n._v(" "),e("div",{staticClass:"organisation__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"591cd6b6",null).exports,de=(0,c.loadState)("settings","personalInfoParameters",{}).organisationMap.primaryOrganisation,ue={name:"OrganisationSection",components:{Organisation:ce,HeaderBar:On},data:function(){return{accountProperty:g.ORGANISATION,primaryOrganisation:de}}},pe=a(34458),Ae={};Ae.styleTagTransform=en(),Ae.setAttributes=Q(),Ae.insert=K().bind(null,"head"),Ae.domAPI=Y(),Ae.insertStyleElement=nn(),V()(pe.Z,Ae),pe.Z&&pe.Z.locals&&pe.Z.locals;var me=(0,on.Z)(ue,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"organisation",scope:n.primaryOrganisation.scope},on:{"update:scope":function(t){return n.$set(n.primaryOrganisation,"scope",t)}}}),n._v(" "),e("Organisation",{attrs:{organisation:n.primaryOrganisation.value,scope:n.primaryOrganisation.scope},on:{"update:organisation":function(t){return n.$set(n.primaryOrganisation,"value",t)},"update:scope":function(t){return n.$set(n.primaryOrganisation,"scope",t)}}})],1)}),[],!1,null,"43146ff7",null).exports;function fe(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function he(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){fe(i,a,r,o,s,"next",n)}function s(n){fe(i,a,r,o,s,"throw",n)}o(void 0)}))}}var ve={name:"Role",props:{role:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialRole:this.role,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onRoleChange:function(n){this.$emit("update:role",n.target.value),this.debounceRoleChange(n.target.value.trim())},debounceRoleChange:f()(function(){var n=he(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryRole(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryRole:function(n){var e=this;return he(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.ROLE,n);case 3:o=a.sent,e.handleResponse({role:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update role"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.role,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialRole=e,(0,A.emit)("settings:role:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},ge=ve,Ce=a(4161),be={};be.styleTagTransform=en(),be.setAttributes=Q(),be.insert=K().bind(null,"head"),be.domAPI=Y(),be.insertStyleElement=nn(),V()(Ce.Z,be),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ye=(0,on.Z)(ge,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"role"},[e("input",{attrs:{id:"role",type:"text",placeholder:n.t("settings","Your role"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.role},on:{input:n.onRoleChange}}),n._v(" "),e("div",{staticClass:"role__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"aac18396",null).exports,xe=(0,c.loadState)("settings","personalInfoParameters",{}).roleMap.primaryRole,Ee={name:"RoleSection",components:{Role:ye,HeaderBar:On},data:function(){return{accountProperty:g.ROLE,primaryRole:xe}}},we=a(70986),ke={};ke.styleTagTransform=en(),ke.setAttributes=Q(),ke.insert=K().bind(null,"head"),ke.domAPI=Y(),ke.insertStyleElement=nn(),V()(we.Z,ke),we.Z&&we.Z.locals&&we.Z.locals;var Ie=(0,on.Z)(Ee,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"role",scope:n.primaryRole.scope},on:{"update:scope":function(t){return n.$set(n.primaryRole,"scope",t)}}}),n._v(" "),e("Role",{attrs:{role:n.primaryRole.value,scope:n.primaryRole.scope},on:{"update:role":function(t){return n.$set(n.primaryRole,"value",t)},"update:scope":function(t){return n.$set(n.primaryRole,"scope",t)}}})],1)}),[],!1,null,"f3d959c2",null).exports;function _e(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Pe(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){_e(i,a,r,o,s,"next",n)}function s(n){_e(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Se={name:"Headline",props:{headline:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialHeadline:this.headline,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onHeadlineChange:function(n){this.$emit("update:headline",n.target.value),this.debounceHeadlineChange(n.target.value.trim())},debounceHeadlineChange:f()(function(){var n=Pe(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryHeadline(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryHeadline:function(n){var e=this;return Pe(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.HEADLINE,n);case 3:o=a.sent,e.handleResponse({headline:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update headline"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.headline,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialHeadline=e,(0,A.emit)("settings:headline:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Be=Se,Re=a(93461),Oe={};Oe.styleTagTransform=en(),Oe.setAttributes=Q(),Oe.insert=K().bind(null,"head"),Oe.domAPI=Y(),Oe.insertStyleElement=nn(),V()(Re.Z,Oe),Re.Z&&Re.Z.locals&&Re.Z.locals;var De=(0,on.Z)(Be,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"headline"},[e("input",{attrs:{id:"headline",type:"text",placeholder:n.t("settings","Your headline"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.headline},on:{input:n.onHeadlineChange}}),n._v(" "),e("div",{staticClass:"headline__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"64e0e0bd",null).exports,Le=(0,c.loadState)("settings","personalInfoParameters",{}).headlineMap.primaryHeadline,Ne={name:"HeadlineSection",components:{Headline:De,HeaderBar:On},data:function(){return{accountProperty:g.HEADLINE,primaryHeadline:Le}}},Te=a(6479),Ze={};Ze.styleTagTransform=en(),Ze.setAttributes=Q(),Ze.insert=K().bind(null,"head"),Ze.domAPI=Y(),Ze.insertStyleElement=nn(),V()(Te.Z,Ze),Te.Z&&Te.Z.locals&&Te.Z.locals;var He=(0,on.Z)(Ne,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"headline",scope:n.primaryHeadline.scope},on:{"update:scope":function(t){return n.$set(n.primaryHeadline,"scope",t)}}}),n._v(" "),e("Headline",{attrs:{headline:n.primaryHeadline.value,scope:n.primaryHeadline.scope},on:{"update:headline":function(t){return n.$set(n.primaryHeadline,"value",t)},"update:scope":function(t){return n.$set(n.primaryHeadline,"scope",t)}}})],1)}),[],!1,null,"187bb5da",null).exports;function Ue(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function $e(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Ue(i,a,r,o,s,"next",n)}function s(n){Ue(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Me={name:"Biography",props:{biography:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialBiography:this.biography,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onBiographyChange:function(n){this.$emit("update:biography",n.target.value),this.debounceBiographyChange(n.target.value.trim())},debounceBiographyChange:f()(function(){var n=$e(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryBiography(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryBiography:function(n){var e=this;return $e(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.BIOGRAPHY,n);case 3:o=a.sent,e.handleResponse({biography:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update biography"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.biography,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialBiography=e,(0,A.emit)("settings:biography:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Fe=Me,je=a(3276),qe={};qe.styleTagTransform=en(),qe.setAttributes=Q(),qe.insert=K().bind(null,"head"),qe.domAPI=Y(),qe.insertStyleElement=nn(),V()(je.Z,qe),je.Z&&je.Z.locals&&je.Z.locals;var Ge=(0,on.Z)(Fe,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"biography"},[e("textarea",{attrs:{id:"biography",placeholder:n.t("settings","Your biography"),rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:n.biography},on:{input:n.onBiographyChange}}),n._v(" "),e("div",{staticClass:"biography__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"0fbf56a9",null).exports,Ve=(0,c.loadState)("settings","personalInfoParameters",{}).biographyMap.primaryBiography,We={name:"BiographySection",components:{Biography:Ge,HeaderBar:On},data:function(){return{accountProperty:g.BIOGRAPHY,primaryBiography:Ve}}},Ye=a(51340),ze={};ze.styleTagTransform=en(),ze.setAttributes=Q(),ze.insert=K().bind(null,"head"),ze.domAPI=Y(),ze.insertStyleElement=nn(),V()(Ye.Z,ze),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var Ke=(0,on.Z)(We,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"biography",scope:n.primaryBiography.scope},on:{"update:scope":function(t){return n.$set(n.primaryBiography,"scope",t)}}}),n._v(" "),e("Biography",{attrs:{biography:n.primaryBiography.value,scope:n.primaryBiography.scope},on:{"update:biography":function(t){return n.$set(n.primaryBiography,"value",t)},"update:scope":function(t){return n.$set(n.primaryBiography,"scope",t)}}})],1)}),[],!1,null,"cfa727da",null).exports,Je=a(7811),Qe=a.n(Je);function Xe(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}var na,ta=function(){var n,t=(n=regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("/profile/{userId}",{userId:a}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{paramId:t,visibility:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Xe(i,a,r,o,s,"next",n)}function s(n){Xe(i,a,r,o,s,"throw",n)}o(void 0)}))});return function(n,e){return t.apply(this,arguments)}}();function ea(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var aa=Object.freeze({SHOW:"show",SHOW_USERS_ONLY:"show_users_only",HIDE:"hide"}),ra=Object.freeze((ea(na={},aa.SHOW,{name:aa.SHOW,label:t("settings","Show to everyone")}),ea(na,aa.SHOW_USERS_ONLY,{name:aa.SHOW_USERS_ONLY,label:t("settings","Show to logged in users only")}),ea(na,aa.HIDE,{name:aa.HIDE,label:t("settings","Hide")}),na));function ia(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function oa(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ia(i,a,r,o,s,"next",n)}function s(n){ia(i,a,r,o,s,"throw",n)}o(void 0)}))}}var sa=(0,c.loadState)("settings","personalInfoParameters",!1).profileEnabled,la={name:"VisibilityDropdown",components:{Multiselect:Qe()},props:{paramId:{type:String,required:!0},displayId:{type:String,required:!0},visibility:{type:String,required:!0}},data:function(){return{initialVisibility:this.visibility,profileEnabled:sa}},computed:{disabled:function(){return!this.profileEnabled},inputId:function(){return"profile-visibility-".concat(this.paramId)},visibilityObject:function(){return ra[this.visibility]},visibilityOptions:function(){return Object.values(ra)}},mounted:function(){(0,A.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},beforeDestroy:function(){(0,A.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{onVisibilityChange:function(n){var t=this;return oa(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null===n){e.next=6;break}if(a=n.name,t.$emit("update:visibility",a),!U(a)){e.next=6;break}return e.next=6,t.updateVisibility(a);case 6:case"end":return e.stop()}}),e)})))()},updateVisibility:function(n){var e=this;return oa(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,ta(e.paramId,n);case 3:o=a.sent,e.handleResponse({visibility:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update visibility of {displayId}",{displayId:e.displayId}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.visibility,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialVisibility=t:((0,p.x2)(a),this.logger.error(a,r))},handleProfileEnabledUpdate:function(n){this.profileEnabled=n}}},ca=la,da=a(93343),ua={};ua.styleTagTransform=en(),ua.setAttributes=Q(),ua.insert=K().bind(null,"head"),ua.domAPI=Y(),ua.insertStyleElement=nn(),V()(da.Z,ua),da.Z&&da.Z.locals&&da.Z.locals;var pa=(0,on.Z)(ca,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"visibility-container",class:{disabled:n.disabled}},[e("label",{attrs:{for:n.inputId}},[n._v("\n\t\t"+n._s(n.t("settings","{displayId}",{displayId:n.displayId}))+"\n\t")]),n._v(" "),e("Multiselect",{staticClass:"visibility-container__multiselect",attrs:{id:n.inputId,options:n.visibilityOptions,"track-by":"name",label:"label",value:n.visibilityObject},on:{change:n.onVisibilityChange}})],1)}),[],!1,null,"4643b0e2",null).exports;function Aa(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var ma=(0,c.loadState)("settings","profileParameters",{}).profileConfig,fa=(0,c.loadState)("settings","personalInfoParameters",!1).profileEnabled,ha=function(n,t){return n.appId===t.appId||"core"!==n.appId&&"core"!==t.appId?n.displayId.localeCompare(t.displayId):"core"===n.appId?1:-1},va={name:"ProfileVisibilitySection",components:{HeaderBar:On,VisibilityDropdown:pa},data:function(){return{heading:C.PROFILE_VISIBILITY,profileEnabled:fa,visibilityParams:Object.entries(ma).map((function(n){var t,e,a=(e=2,function(n){if(Array.isArray(n))return n}(t=n)||function(n,t){var e=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=e){var a,r,i=[],o=!0,s=!1;try{for(e=e.call(n);!(o=(a=e.next()).done)&&(i.push(a.value),!t||i.length!==t);o=!0);}catch(n){s=!0,r=n}finally{try{o||null==e.return||e.return()}finally{if(s)throw r}}return i}}(t,e)||function(n,t){if(n){if("string"==typeof n)return Aa(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Aa(n,t):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=a[0],i=a[1];return{id:r,appId:i.appId,displayId:i.displayId,visibility:i.visibility}})).sort(ha),marginLeft:window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("personal-settings-avatar-container")).getPropertyValue("width").trim():"0px"}},computed:{disabled:function(){return!this.profileEnabled},rows:function(){return Math.ceil(this.visibilityParams.length/2)}},mounted:function(){var n=this;(0,A.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.onresize=function(){n.marginLeft=window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("personal-settings-avatar-container")).getPropertyValue("width").trim():"0px"}},beforeDestroy:function(){(0,A.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{handleProfileEnabledUpdate:function(n){this.profileEnabled=n}}},ga=va,Ca=a(40958),ba={};ba.styleTagTransform=en(),ba.setAttributes=Q(),ba.insert=K().bind(null,"head"),ba.domAPI=Y(),ba.insertStyleElement=nn(),V()(Ca.Z,ba),Ca.Z&&Ca.Z.locals&&Ca.Z.locals;var ya=(0,on.Z)(ga,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",{style:{marginLeft:n.marginLeft},attrs:{id:"profile-visibility"}},[e("HeaderBar",{attrs:{"account-property":n.heading}}),n._v(" "),e("em",{class:{disabled:n.disabled}},[n._v("\n\t\t"+n._s(n.t("settings",'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.'))+"\n\t")]),n._v(" "),e("div",{staticClass:"visibility-dropdowns",style:{gridTemplateRows:"repeat("+n.rows+", 44px)"}},n._l(n.visibilityParams,(function(t){return e("VisibilityDropdown",{key:t.id,attrs:{"param-id":t.id,"display-id":t.displayId,visibility:t.visibility},on:{"update:visibility":function(e){return n.$set(t,"visibility",e)}}})})),1)],1)}),[],!1,null,"16df62f8",null).exports;a.nc=btoa((0,l.getRequestToken)());var xa=(0,c.loadState)("settings","profileEnabledGlobally",!0);s.default.mixin({props:{logger:u},methods:{t:d.translate}});var Ea=s.default.extend(Hn),wa=s.default.extend(pt),ka=s.default.extend(Rt);if((new Ea).$mount("#vue-displayname-section"),(new wa).$mount("#vue-email-section"),(new ka).$mount("#vue-language-section"),xa){var Ia=s.default.extend(ee),_a=s.default.extend(me),Pa=s.default.extend(Ie),Sa=s.default.extend(He),Ba=s.default.extend(Ke),Ra=s.default.extend(ya);(new Ia).$mount("#vue-profile-section"),(new _a).$mount("#vue-organisation-section"),(new Pa).$mount("#vue-role-section"),(new Sa).$mount("#vue-headline-section"),(new Ba).$mount("#vue-biography-section"),(new Ra).$mount("#vue-profile-visibility-section")}},3276:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".biography[data-v-0fbf56a9]{display:grid;align-items:center}.biography textarea[data-v-0fbf56a9]{resize:vertical;grid-area:1/1;width:100%;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.biography textarea[data-v-0fbf56a9]:hover,.biography textarea[data-v-0fbf56a9]:focus,.biography textarea[data-v-0fbf56a9]:active{border-color:var(--color-primary-element) !important;outline:none !important}.biography .biography__actions-container[data-v-0fbf56a9]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}.biography .biography__actions-container .icon-checkmark[data-v-0fbf56a9],.biography .biography__actions-container .icon-error[data-v-0fbf56a9]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-0fbf56a9],.fade-leave-to[data-v-0fbf56a9]{opacity:0}.fade-enter-active[data-v-0fbf56a9]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-0fbf56a9]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue"],names:[],mappings:"AAyHA,4BACC,YAAA,CACA,kBAAA,CAEA,qCACC,eAAA,CACA,aAAA,CACA,UAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAEA,kIAGC,oDAAA,CACA,uBAAA,CAIF,0DACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAEA,gJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.biography {\n\tdisplay: grid;\n\talign-items: center;\n\n\ttextarea {\n\t\tresize: vertical;\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: var(--color-primary-element) !important;\n\t\t\toutline: none !important;\n\t\t}\n\t}\n\n\t.biography__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\talign-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},51340:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-cfa727da]{padding:10px 10px}section[data-v-cfa727da] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},74539:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".displayname[data-v-3418897a]{display:grid;align-items:center}.displayname input[data-v-3418897a]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.displayname .displayname__actions-container[data-v-3418897a]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.displayname .displayname__actions-container .icon-checkmark[data-v-3418897a],.displayname .displayname__actions-container .icon-error[data-v-3418897a]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-3418897a],.fade-leave-to[data-v-3418897a]{opacity:0}.fade-enter-active[data-v-3418897a]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3418897a]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue"],names:[],mappings:"AA8HA,8BACC,YAAA,CACA,kBAAA,CAEA,oCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,8DACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,wJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.displayname {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.displayname__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},26184:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-b8a748f4]{padding:10px 10px}section[data-v-b8a748f4] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue"],names:[],mappings:"AA8EA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},26669:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".email[data-v-2c097054]{display:grid;align-items:center}.email input[data-v-2c097054]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.email .email__actions-container[data-v-2c097054]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-2c097054]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-2c097054]:hover,.email .email__actions-container .email__actions[data-v-2c097054]:focus,.email .email__actions-container .email__actions[data-v-2c097054]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-2c097054] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email .email__actions-container .icon-checkmark[data-v-2c097054],.email .email__actions-container .icon-error[data-v-2c097054]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-2c097054],.fade-leave-to[data-v-2c097054]{opacity:0}.fade-enter-active[data-v-2c097054]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-2c097054]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue"],names:[],mappings:"AAoWA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAIF,gIAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},35610:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-845b669e]{padding:10px 10px}section[data-v-845b669e] button:disabled{cursor:default}section .additional-emails-label[data-v-845b669e]{display:block;margin-top:16px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue"],names:[],mappings:"AA+LA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},93461:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".headline[data-v-64e0e0bd]{display:grid;align-items:center}.headline input[data-v-64e0e0bd]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.headline .headline__actions-container[data-v-64e0e0bd]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.headline .headline__actions-container .icon-checkmark[data-v-64e0e0bd],.headline .headline__actions-container .icon-error[data-v-64e0e0bd]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-64e0e0bd],.fade-leave-to[data-v-64e0e0bd]{opacity:0}.fade-enter-active[data-v-64e0e0bd]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-64e0e0bd]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue"],names:[],mappings:"AAyHA,2BACC,YAAA,CACA,kBAAA,CAEA,iCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,wDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4IAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.headline {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.headline__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},6479:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-187bb5da]{padding:10px 10px}section[data-v-187bb5da] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},35595:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".language[data-v-5396d706]{display:grid}.language select[data-v-5396d706]{width:100%;height:34px;margin:3px 3px 3px 0;padding:6px 16px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background:var(--icon-triangle-s-000) no-repeat right 4px center;font-family:var(--font-face);appearance:none;cursor:pointer}.language a[data-v-5396d706]{color:var(--color-main-text);text-decoration:none;width:max-content}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue"],names:[],mappings:"AA+IA,2BACC,YAAA,CAEA,kCACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,gBAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,gEAAA,CACA,4BAAA,CACA,eAAA,CACA,cAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 6px 16px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\n\t\tfont-family: var(--font-face);\n\t\tappearance: none;\n\t\tcursor: pointer;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},3569:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-16883898]{padding:10px 10px}section[data-v-16883898] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue"],names:[],mappings:"AA2EA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},25731:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".organisation[data-v-591cd6b6]{display:grid;align-items:center}.organisation input[data-v-591cd6b6]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.organisation .organisation__actions-container[data-v-591cd6b6]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.organisation .organisation__actions-container .icon-checkmark[data-v-591cd6b6],.organisation .organisation__actions-container .icon-error[data-v-591cd6b6]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-591cd6b6],.fade-leave-to[data-v-591cd6b6]{opacity:0}.fade-enter-active[data-v-591cd6b6]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-591cd6b6]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue"],names:[],mappings:"AAyHA,+BACC,YAAA,CACA,kBAAA,CAEA,qCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4JAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.organisation {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.organisation__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},34458:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-43146ff7]{padding:10px 10px}section[data-v-43146ff7] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},61434:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AA4DA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},95758:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"a[data-v-73817e9f]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-73817e9f]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-73817e9f]:hover,a[data-v-73817e9f]:focus,a[data-v-73817e9f]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-73817e9f]{pointer-events:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AAsEA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},32756:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".preview-card[data-v-79bf7437]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:hover,.preview-card[data-v-79bf7437]:focus,.preview-card[data-v-79bf7437]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-79bf7437]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-79bf7437],.preview-card.disabled[data-v-79bf7437] *{cursor:default}.preview-card__avatar[data-v-79bf7437]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-79bf7437]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-79bf7437],.preview-card__footer[data-v-79bf7437]{position:relative;width:auto}.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-79bf7437]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0}.preview-card__header span[data-v-79bf7437]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-79bf7437]{height:46px}.preview-card__footer span[data-v-79bf7437]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue"],names:[],mappings:"AA6FA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tword-break: break-all;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},83566:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-252753e6]{padding:10px 10px}section[data-v-252753e6] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue"],names:[],mappings:"AAkGA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},40958:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-16df62f8]{padding:30px;max-width:100vw}section em[data-v-16df62f8]{display:block;margin:16px 0}section em.disabled[data-v-16df62f8]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-16df62f8],section em.disabled[data-v-16df62f8] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-16df62f8]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-16df62f8]{width:940px}section .visibility-dropdowns[data-v-16df62f8]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-16df62f8]{width:470px}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue"],names:[],mappings:"AAyHA,yBACC,YAAA,CACA,eAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA3BD,yBA4BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BAnCD,yBAoCE,WAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 30px;\n\tmax-width: 100vw;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},93343:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".visibility-container[data-v-4643b0e2]{display:flex;width:max-content}.visibility-container.disabled[data-v-4643b0e2]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-4643b0e2],.visibility-container.disabled[data-v-4643b0e2] *{cursor:default;pointer-events:none}.visibility-container label[data-v-4643b0e2]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__multiselect[data-v-4643b0e2]{width:260px;max-width:40vw}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue"],names:[],mappings:"AAwJA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,oDACC,WAAA,CACA,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__multiselect {\n\t\twidth: 260px;\n\t\tmax-width: 40vw;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},4161:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".role[data-v-aac18396]{display:grid;align-items:center}.role input[data-v-aac18396]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.role .role__actions-container[data-v-aac18396]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.role .role__actions-container .icon-checkmark[data-v-aac18396],.role .role__actions-container .icon-error[data-v-aac18396]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-aac18396],.fade-leave-to[data-v-aac18396]{opacity:0}.fade-enter-active[data-v-aac18396]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-aac18396]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue"],names:[],mappings:"AAyHA,uBACC,YAAA,CACA,kBAAA,CAEA,6BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4HAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.role {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.role__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},70986:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-f3d959c2]{padding:10px 10px}section[data-v-f3d959c2] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},18561:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".federation-actions[data-v-b51d8bee],.federation-actions--additional[data-v-b51d8bee]{opacity:.4 !important}.federation-actions[data-v-b51d8bee]:hover,.federation-actions[data-v-b51d8bee]:focus,.federation-actions[data-v-b51d8bee]:active,.federation-actions--additional[data-v-b51d8bee]:hover,.federation-actions--additional[data-v-b51d8bee]:focus,.federation-actions--additional[data-v-b51d8bee]:active{opacity:.8 !important}.federation-actions--additional[data-v-b51d8bee] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue"],names:[],mappings:"AAsLA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.federation-actions,\n.federation-actions--additional {\n\topacity: 0.4 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8 !important;\n\t}\n}\n\n.federation-actions--additional {\n\t&::v-deep button {\n\t\t// TODO remove this hack\n\t\tpadding-bottom: 7px;\n\t\theight: 30px !important;\n\t\tmin-height: 30px !important;\n\t\twidth: 30px !important;\n\t\tmin-width: 30px !important;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},12461:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".federation-actions__btn[data-v-d2e8b360] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d2e8b360]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue"],names:[],mappings:"AA0FC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.federation-actions__btn {\n\t&::v-deep p {\n\t\twidth: 150px !important;\n\t\tpadding: 8px 0 !important;\n\t\tcolor: var(--color-main-text) !important;\n\t\tfont-size: 12.8px !important;\n\t\tline-height: 1.5em !important;\n\t}\n}\n\n.federation-actions__btn--active {\n\tbackground-color: var(--color-primary-light) !important;\n\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n}\n"],sourceRoot:""}]),t.Z=o},75537:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"h3[data-v-19038f0c]{display:inline-flex;width:100%;margin:12px 0 0 0;font-size:16px;color:var(--color-text-light)}h3.profile-property[data-v-19038f0c]{height:38px}h3.setting-property[data-v-19038f0c]{height:32px}h3 label[data-v-19038f0c]{cursor:pointer}.federation-control[data-v-19038f0c]{margin:-12px 0 0 8px}.button-vue[data-v-19038f0c]{margin:-6px 0 0 auto !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue"],names:[],mappings:"AA0HA,oBACC,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAEA,qCACC,WAAA,CAGD,qCACC,WAAA,CAGD,0BACC,cAAA,CAIF,qCACC,oBAAA,CAGD,6BACC,+BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nh3 {\n\tdisplay: inline-flex;\n\twidth: 100%;\n\tmargin: 12px 0 0 0;\n\tfont-size: 16px;\n\tcolor: var(--color-text-light);\n\n\t&.profile-property {\n\t\theight: 38px;\n\t}\n\n\t&.setting-property {\n\t\theight: 32px;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t}\n}\n\n.federation-control {\n\tmargin: -12px 0 0 8px;\n}\n\n.button-vue {\n\tmargin: -6px 0 0 auto !important;\n}\n"],sourceRoot:""}]),t.Z=o}},a={};function r(n){var t=a[n];if(void 0!==t)return t.exports;var i=a[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=e,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(t,e,a,i){if(!e){var o=1/0;for(d=0;d<n.length;d++){e=n[d][0],a=n[d][1],i=n[d][2];for(var s=!0,l=0;l<e.length;l++)(!1&i||o>=i)&&Object.keys(r.O).every((function(n){return r.O[n](e[l])}))?e.splice(l--,1):(s=!1,i<o&&(o=i));if(s){n.splice(d--,1);var c=a();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=n.length;d>0&&n[d-1][2]>i;d--)n[d]=n[d-1];n[d]=[e,a,i]},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,{a:t}),t},r.d=function(n,t){for(var e in t)r.o(t,e)&&!r.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},r.j=4418,function(){r.b=document.baseURI||self.location.href;var n={4418:0};r.O.j=function(t){return 0===n[t]};var t=function(t,e){var a,i,o=e[0],s=e[1],l=e[2],c=0;if(o.some((function(t){return 0!==n[t]}))){for(a in s)r.o(s,a)&&(r.m[a]=s[a]);if(l)var d=l(r)}for(t&&t(e);c<o.length;c++)i=o[c],r.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return r.O(d)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),r.nc=void 0;var i=r.O(void 0,[7874],(function(){return r(95979)}));i=r.O(i)}();
-//# sourceMappingURL=settings-vue-settings-personal-info.js.map?v=f43189b5ce919b48b8cd \ No newline at end of file
+!function(){"use strict";var n,e={29875:function(n,e,a){var r,i,o,s=a(20144),l=a(22200),c=a(16453),d=a(9944),u=(a(73317),(0,a(17499).IY)().setApp("settings").detectUser().build()),p=a(26932),A=a(74854),m=a(20296),f=a.n(m);function h(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var v=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),g=Object.freeze({ADDRESS:(0,d.translate)("settings","Address"),AVATAR:(0,d.translate)("settings","Avatar"),BIOGRAPHY:(0,d.translate)("settings","About"),DISPLAYNAME:(0,d.translate)("settings","Full name"),EMAIL_COLLECTION:(0,d.translate)("settings","Additional email"),EMAIL:(0,d.translate)("settings","Email"),HEADLINE:(0,d.translate)("settings","Headline"),ORGANISATION:(0,d.translate)("settings","Organisation"),PHONE:(0,d.translate)("settings","Phone number"),PROFILE_ENABLED:(0,d.translate)("settings","Profile"),ROLE:(0,d.translate)("settings","Role"),TWITTER:(0,d.translate)("settings","Twitter"),WEBSITE:(0,d.translate)("settings","Website")}),C=Object.freeze({PROFILE_VISIBILITY:(0,d.translate)("settings","Profile visibility")}),b=Object.freeze((h(r={},g.ADDRESS,v.ADDRESS),h(r,g.AVATAR,v.AVATAR),h(r,g.BIOGRAPHY,v.BIOGRAPHY),h(r,g.DISPLAYNAME,v.DISPLAYNAME),h(r,g.EMAIL_COLLECTION,v.EMAIL_COLLECTION),h(r,g.EMAIL,v.EMAIL),h(r,g.HEADLINE,v.HEADLINE),h(r,g.ORGANISATION,v.ORGANISATION),h(r,g.PHONE,v.PHONE),h(r,g.PROFILE_ENABLED,v.PROFILE_ENABLED),h(r,g.ROLE,v.ROLE),h(r,g.TWITTER,v.TWITTER),h(r,g.WEBSITE,v.WEBSITE),r)),y=Object.freeze({LANGUAGE:"language"}),x=Object.freeze({LANGUAGE:(0,d.translate)("settings","Language")}),E=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),w=Object.freeze((h(i={},g.ADDRESS,[E.LOCAL,E.PRIVATE]),h(i,g.AVATAR,[E.LOCAL,E.PRIVATE]),h(i,g.BIOGRAPHY,[E.LOCAL,E.PRIVATE]),h(i,g.DISPLAYNAME,[E.LOCAL]),h(i,g.EMAIL_COLLECTION,[E.LOCAL]),h(i,g.EMAIL,[E.LOCAL]),h(i,g.HEADLINE,[E.LOCAL,E.PRIVATE]),h(i,g.ORGANISATION,[E.LOCAL,E.PRIVATE]),h(i,g.PHONE,[E.LOCAL,E.PRIVATE]),h(i,g.PROFILE_ENABLED,[E.LOCAL,E.PRIVATE]),h(i,g.ROLE,[E.LOCAL,E.PRIVATE]),h(i,g.TWITTER,[E.LOCAL,E.PRIVATE]),h(i,g.WEBSITE,[E.LOCAL,E.PRIVATE]),i)),k=Object.freeze([g.BIOGRAPHY,g.HEADLINE,g.ORGANISATION,g.ROLE]),I="Scope",_=Object.freeze((h(o={},E.PRIVATE,{name:E.PRIVATE,displayName:(0,d.translate)("settings","Private"),tooltip:(0,d.translate)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,d.translate)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"}),h(o,E.LOCAL,{name:E.LOCAL,displayName:(0,d.translate)("settings","Local"),tooltip:(0,d.translate)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"}),h(o,E.FEDERATED,{name:E.FEDERATED,displayName:(0,d.translate)("settings","Federated"),tooltip:(0,d.translate)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,d.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"}),h(o,E.PUBLISHED,{name:E.PUBLISHED,displayName:(0,d.translate)("settings","Published"),tooltip:(0,d.translate)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,d.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}),o)),P=E.LOCAL,S=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),B=/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i,R=a(4820),O=a(79753),D=a(10128),L=a.n(D);function N(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function T(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){N(i,a,r,o,s,"next",n)}function s(n){N(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Z=function(){var n=T(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return"boolean"==typeof e&&(e=e?"1":"0"),a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:a}),n.next=5,L()();case 5:return n.next=7,R.default.put(r,{key:t,value:e});case 7:return i=n.sent,n.abrupt("return",i.data);case 9:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}(),U=function(){var n=T(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:a}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:"".concat(t).concat(I),value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}();function H(n){return""!==n}function M(n){return"string"==typeof n&&B.test(n)&&"\n"!==n.slice(-1)&&n.length<=320&&encodeURIComponent(n).replace(/%../g,"x").length<=320}function $(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function j(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){$(i,a,r,o,s,"next",n)}function s(n){$(i,a,r,o,s,"throw",n)}o(void 0)}))}}var F={name:"DisplayName",props:{displayName:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialDisplayName:this.displayName,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onDisplayNameChange:function(n){this.$emit("update:display-name",n.target.value),this.debounceDisplayNameChange(n.target.value.trim())},debounceDisplayNameChange:f()(function(){var n=j(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!H(t)){n.next=3;break}return n.next=3,this.updatePrimaryDisplayName(t);case 3:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryDisplayName:function(n){var e=this;return j(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.DISPLAYNAME,n);case 3:o=a.sent,e.handleResponse({displayName:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update full name"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.displayName,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialDisplayName=e,(0,A.emit)("settings:display-name:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},q=F,G=a(93379),V=a.n(G),W=a(7795),Y=a.n(W),z=a(90569),K=a.n(z),J=a(3565),Q=a.n(J),X=a(19216),nn=a.n(X),tn=a(44589),en=a.n(tn),an=a(74539),rn={};rn.styleTagTransform=en(),rn.setAttributes=Q(),rn.insert=K().bind(null,"head"),rn.domAPI=Y(),rn.insertStyleElement=nn(),V()(an.Z,rn),an.Z&&an.Z.locals&&an.Z.locals;var on=a(51900),sn=(0,on.Z)(q,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"displayname"},[e("input",{attrs:{id:"displayname",type:"text",placeholder:n.t("settings","Your full name"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.displayName},on:{input:n.onDisplayNameChange}}),n._v(" "),e("div",{staticClass:"displayname__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"3418897a",null).exports,ln=a(79440),cn=a.n(ln),dn=a(56286),un=a.n(dn),pn={name:"FederationControlAction",components:{ActionButton:un()},props:{activeScope:{type:String,required:!0},displayName:{type:String,required:!0},handleScopeChange:{type:Function,default:function(){}},iconClass:{type:String,required:!0},isSupportedScope:{type:Boolean,required:!0},name:{type:String,required:!0},tooltipDisabled:{type:String,default:""},tooltip:{type:String,required:!0}},methods:{updateScope:function(){this.handleScopeChange(this.name)}}},An=a(12461),mn={};mn.styleTagTransform=en(),mn.setAttributes=Q(),mn.insert=K().bind(null,"head"),mn.domAPI=Y(),mn.insertStyleElement=nn(),V()(An.Z,mn),An.Z&&An.Z.locals&&An.Z.locals;var fn=(0,on.Z)(pn,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("ActionButton",{staticClass:"federation-actions__btn",class:{"federation-actions__btn--active":n.activeScope===n.name},attrs:{"aria-label":n.isSupportedScope?n.tooltip:n.tooltipDisabled,"close-after-click":!0,disabled:!n.isSupportedScope,icon:n.iconClass,title:n.displayName},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.updateScope.apply(null,arguments)}}},[n._v("\n\t"+n._s(n.isSupportedScope?n.tooltip:n.tooltipDisabled)+"\n")])}),[],!1,null,"d2e8b360",null),hn=fn.exports;function vn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function gn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){vn(i,a,r,o,s,"next",n)}function s(n){vn(i,a,r,o,s,"throw",n)}o(void 0)}))}}function Cn(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var bn=(0,c.loadState)("settings","accountParameters",{}).lookupServerUploadEnabled,yn={name:"FederationControl",components:{Actions:cn(),FederationControlAction:hn},props:{accountProperty:{type:String,required:!0,validator:function(n){return Object.values(g).includes(n)}},additional:{type:Boolean,default:!1},additionalValue:{type:String,default:""},disabled:{type:Boolean,default:!1},handleAdditionalScopeChange:{type:Function,default:null},scope:{type:String,required:!0}},data:function(){return{accountPropertyLowerCase:this.accountProperty.toLocaleLowerCase(),initialScope:this.scope}},computed:{ariaLabel:function(){return t("settings","Change scope level of {accountProperty}",{accountProperty:this.accountPropertyLowerCase})},scopeIcon:function(){return _[this.scope].iconClass},federationScopes:function(){return Object.values(_)},supportedScopes:function(){return bn&&!k.includes(this.accountProperty)?[].concat(function(n){if(Array.isArray(n))return Cn(n)}(n=w[this.accountProperty])||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,t){if(n){if("string"==typeof n)return Cn(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Cn(n,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[E.FEDERATED,E.PUBLISHED]):w[this.accountProperty];var n}},methods:{changeScope:function(n){var t=this;return gn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.$emit("update:scope",n),t.additional){e.next=6;break}return e.next=4,t.updatePrimaryScope(n);case 4:e.next=8;break;case 6:return e.next=8,t.updateAdditionalScope(n);case 8:case"end":return e.stop()}}),e)})))()},updatePrimaryScope:function(n){var e=this;return gn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,U(b[e.accountProperty],n);case 3:o=a.sent,e.handleResponse({scope:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update federation scope of the primary {accountProperty}",{accountProperty:e.accountPropertyLowerCase}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},updateAdditionalScope:function(n){var e=this;return gn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.handleAdditionalScopeChange(e.additionalValue,n);case 3:o=a.sent,e.handleResponse({scope:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update federation scope of additional {accountProperty}",{accountProperty:e.accountPropertyLowerCase}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.scope,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialScope=t:(this.$emit("update:scope",this.initialScope),(0,p.x2)(a),this.logger.error(a,r))}}},xn=a(18561),En={};En.styleTagTransform=en(),En.setAttributes=Q(),En.insert=K().bind(null,"head"),En.domAPI=Y(),En.insertStyleElement=nn(),V()(xn.Z,En),xn.Z&&xn.Z.locals&&xn.Z.locals;var wn=(0,on.Z)(yn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("Actions",{class:{"federation-actions":!n.additional,"federation-actions--additional":n.additional},attrs:{"aria-label":n.ariaLabel,"default-icon":n.scopeIcon,disabled:n.disabled}},n._l(n.federationScopes,(function(t){return e("FederationControlAction",{key:t.name,attrs:{"active-scope":n.scope,"display-name":t.displayName,"handle-scope-change":n.changeScope,"icon-class":t.iconClass,"is-supported-scope":n.supportedScopes.includes(t.name),name:t.name,"tooltip-disabled":t.tooltipDisabled,tooltip:t.tooltip}})})),1)}),[],!1,null,"b51d8bee",null).exports,kn=a(1412),In=a.n(kn),_n=a(31209),Pn={name:"HeaderBar",components:{FederationControl:wn,Button:In(),Plus:_n.Z},props:{accountProperty:{type:String,required:!0,validator:function(n){return Object.values(g).includes(n)||Object.values(x).includes(n)||n===C.PROFILE_VISIBILITY}},isEditable:{type:Boolean,default:!0},isMultiValueSupported:{type:Boolean,default:!1},isValidSection:{type:Boolean,default:!1},labelFor:{type:String,default:""},scope:{type:String,default:null}},data:function(){return{localScope:this.scope}},computed:{isProfileProperty:function(){return this.accountProperty===g.PROFILE_ENABLED},isSettingProperty:function(){return Object.values(x).includes(this.accountProperty)}},methods:{onAddAdditional:function(){this.$emit("add-additional")},onScopeChange:function(n){this.$emit("update:scope",n)}}},Sn=a(75537),Bn={};Bn.styleTagTransform=en(),Bn.setAttributes=Q(),Bn.insert=K().bind(null,"head"),Bn.domAPI=Y(),Bn.insertStyleElement=nn(),V()(Sn.Z,Bn),Sn.Z&&Sn.Z.locals&&Sn.Z.locals;var Rn=(0,on.Z)(Pn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("h3",{class:{"setting-property":n.isSettingProperty,"profile-property":n.isProfileProperty}},[e("label",{attrs:{for:n.labelFor}},[n._v("\n\t\t"+n._s(n.accountProperty)+"\n\t")]),n._v(" "),n.scope?[e("FederationControl",{staticClass:"federation-control",attrs:{"account-property":n.accountProperty,scope:n.localScope},on:{"update:scope":[function(t){n.localScope=t},n.onScopeChange]}})]:n._e(),n._v(" "),n.isEditable&&n.isMultiValueSupported?[e("Button",{attrs:{type:"tertiary",disabled:!n.isValidSection,"aria-label":n.t("settings","Add additional email")},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.onAddAdditional.apply(null,arguments)}},scopedSlots:n._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}],null,!1,32235154)},[n._v("\n\t\t\t"+n._s(n.t("settings","Add"))+"\n\t\t")])]:n._e()],2)}),[],!1,null,"19038f0c",null),On=Rn.exports,Dn=(0,c.loadState)("settings","personalInfoParameters",{}).displayNameMap.primaryDisplayName,Ln=(0,c.loadState)("settings","accountParameters",{}).displayNameChangeSupported,Nn={name:"DisplayNameSection",components:{DisplayName:sn,HeaderBar:On},data:function(){return{accountProperty:g.DISPLAYNAME,displayNameChangeSupported:Ln,primaryDisplayName:Dn}},computed:{isValidSection:function(){return H(this.primaryDisplayName.value)}}},Tn=a(26184),Zn={};Zn.styleTagTransform=en(),Zn.setAttributes=Q(),Zn.insert=K().bind(null,"head"),Zn.domAPI=Y(),Zn.insertStyleElement=nn(),V()(Tn.Z,Zn),Tn.Z&&Tn.Z.locals&&Tn.Z.locals;var Un=(0,on.Z)(Nn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"displayname","is-editable":n.displayNameChangeSupported,"is-valid-section":n.isValidSection,scope:n.primaryDisplayName.scope},on:{"update:scope":function(t){return n.$set(n.primaryDisplayName,"scope",t)}}}),n._v(" "),n.displayNameChangeSupported?[e("DisplayName",{attrs:{"display-name":n.primaryDisplayName.value,scope:n.primaryDisplayName.scope},on:{"update:displayName":function(t){return n.$set(n.primaryDisplayName,"value",t)},"update:display-name":function(t){return n.$set(n.primaryDisplayName,"value",t)},"update:scope":function(t){return n.$set(n.primaryDisplayName,"scope",t)}}})]:e("span",[n._v("\n\t\t"+n._s(n.primaryDisplayName.value||n.t("settings","No full name set"))+"\n\t")])],2)}),[],!1,null,"b8a748f4",null).exports;function Hn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Mn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Hn(i,a,r,o,s,"next",n)}function s(n){Hn(i,a,r,o,s,"throw",n)}o(void 0)}))}}var $n=function(){var n=Mn(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.EMAIL,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),jn=function(){var n=Mn(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.EMAIL_COLLECTION,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Fn=function(){var n=Mn(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.NOTIFICATION_EMAIL,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),qn=function(){var n=Mn(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:e,collection:v.EMAIL_COLLECTION}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:t,value:""});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Gn=function(){var n=Mn(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:a,collection:v.EMAIL_COLLECTION}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:t,value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}(),Vn=function(){var n=Mn(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:"".concat(v.EMAIL).concat(I),value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Wn=function(){var n=Mn(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}/{collectionScope}",{userId:a,collectionScope:"".concat(v.EMAIL_COLLECTION).concat(I)}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:t,value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}();function Yn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function zn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Yn(i,a,r,o,s,"next",n)}function s(n){Yn(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Kn={name:"Email",components:{Actions:cn(),ActionButton:un(),FederationControl:wn},props:{email:{type:String,required:!0},index:{type:Number,default:0},primary:{type:Boolean,default:!1},scope:{type:String,required:!0},activeNotificationEmail:{type:String,default:""},localVerificationState:{type:Number,default:S.NOT_VERIFIED}},data:function(){return{accountProperty:g.EMAIL,initialEmail:this.email,localScope:this.scope,saveAdditionalEmailScope:Wn,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{deleteDisabled:function(){return this.primary?""===this.email||this.initialEmail!==this.email:""!==this.initialEmail&&this.initialEmail!==this.email},deleteEmailLabel:function(){return this.primary?t("settings","Remove primary email"):t("settings","Delete email")},setNotificationMailDisabled:function(){return!this.primary&&this.localVerificationState!==S.VERIFIED},setNotificationMailLabel:function(){return this.isNotificationEmail?t("settings","Unset as primary email"):this.primary||this.localVerificationState===S.VERIFIED?t("settings","Set as primary email"):t("settings","This address is not confirmed")},federationDisabled:function(){return!this.initialEmail},inputId:function(){return this.primary?"email":"email-".concat(this.index)},inputPlaceholder:function(){return this.primary?t("settings","Your email address"):t("settings","Additional email address {index}",{index:this.index+1})},isNotificationEmail:function(){return this.email&&this.email===this.activeNotificationEmail||this.primary&&""===this.activeNotificationEmail}},mounted:function(){var n=this;this.primary||""!==this.initialEmail||this.$nextTick((function(){var t;return null===(t=n.$refs.email)||void 0===t?void 0:t.focus()}))},methods:{onEmailChange:function(n){this.$emit("update:email",n.target.value),this.debounceEmailChange(n.target.value.trim())},debounceEmailChange:f()(function(){var n=zn(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!M(t)&&""!==t){n.next=14;break}if(!this.primary){n.next=6;break}return n.next=4,this.updatePrimaryEmail(t);case 4:case 10:n.next=14;break;case 6:if(!t){n.next=14;break}if(""!==this.initialEmail){n.next=12;break}return n.next=10,this.addAdditionalEmail(t);case 12:return n.next=14,this.updateAdditionalEmail(t);case 14:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),deleteEmail:function(){var n=this;return zn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.primary){t.next=6;break}return n.$emit("update:email",""),t.next=4,n.updatePrimaryEmail("");case 4:t.next=8;break;case 6:return t.next=8,n.deleteAdditionalEmail();case 8:case"end":return t.stop()}}),t)})))()},updatePrimaryEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,$n(n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),""===n?e.handleResponse({errorMessage:t("settings","Unable to delete primary email address"),error:a.t0}):e.handleResponse({errorMessage:t("settings","Unable to update primary email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},addAdditionalEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,jn(n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to add additional email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},setNotificationMail:function(){var n=this;return zn(regeneratorRuntime.mark((function t(){var e,a,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=n.primary||n.isNotificationEmail?"":n.initialEmail,t.next=4,Fn(r);case 4:i=t.sent,n.handleResponse({notificationEmail:r,status:null===(e=i.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status}),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),n.handleResponse({errorMessage:"Unable to choose this email for notifications",error:t.t0});case 11:case"end":return t.stop()}}),t,null,[[0,8]])})))()},updateAdditionalEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Gn(e.initialEmail,n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update additional email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},deleteAdditionalEmail:function(){var n=this;return zn(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,qn(n.initialEmail);case 3:i=e.sent,n.handleDeleteAdditionalEmail(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse({errorMessage:t("settings","Unable to delete additional email address"),error:e.t0});case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},handleDeleteAdditionalEmail:function(n){"ok"===n?this.$emit("delete-additional-email"):this.handleResponse({errorMessage:t("settings","Unable to delete additional email address")})},handleResponse:function(n){var t=this,e=n.email,a=n.notificationEmail,r=n.status,i=n.errorMessage,o=n.error;"ok"===r?(e?this.initialEmail=e:void 0!==a&&this.$emit("update:notification-email",a),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(i),this.logger.error(i,o),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Jn=Kn,Qn=a(16183),Xn={};Xn.styleTagTransform=en(),Xn.setAttributes=Q(),Xn.insert=K().bind(null,"head"),Xn.domAPI=Y(),Xn.insertStyleElement=nn(),V()(Qn.Z,Xn),Qn.Z&&Qn.Z.locals&&Qn.Z.locals;var nt=(0,on.Z)(Jn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",[e("div",{staticClass:"email"},[e("input",{ref:"email",attrs:{id:n.inputId,type:"email",placeholder:n.inputPlaceholder,autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.email},on:{input:n.onEmailChange}}),n._v(" "),e("div",{staticClass:"email__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()]),n._v(" "),n.primary?n._e():[e("FederationControl",{attrs:{"account-property":n.accountProperty,additional:!0,"additional-value":n.email,disabled:n.federationDisabled,"handle-additional-scope-change":n.saveAdditionalEmailScope,scope:n.localScope},on:{"update:scope":[function(t){n.localScope=t},n.onScopeChange]}})],n._v(" "),e("Actions",{staticClass:"email__actions",attrs:{"aria-label":n.t("settings","Email options"),"force-menu":!0}},[e("ActionButton",{attrs:{"aria-label":n.deleteEmailLabel,"close-after-click":!0,disabled:n.deleteDisabled,icon:"icon-delete"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.deleteEmail.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.deleteEmailLabel)+"\n\t\t\t\t")]),n._v(" "),n.primary&&n.isNotificationEmail?n._e():e("ActionButton",{attrs:{"aria-label":n.setNotificationMailLabel,"close-after-click":!0,disabled:n.setNotificationMailDisabled,icon:"icon-favorite"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.setNotificationMail.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.setNotificationMailLabel)+"\n\t\t\t\t")])],1)],2)]),n._v(" "),n.isNotificationEmail?e("em",[n._v("\n\t\t"+n._s(n.t("settings","Primary email for password reset and notifications"))+"\n\t")]):n._e()])}),[],!1,null,"49f8e937",null),tt=nt.exports;function et(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function at(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){et(i,a,r,o,s,"next",n)}function s(n){et(i,a,r,o,s,"throw",n)}o(void 0)}))}}function rt(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,a)}return e}function it(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?rt(Object(e),!0).forEach((function(t){ot(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):rt(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function ot(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var st=(0,c.loadState)("settings","personalInfoParameters",{}).emailMap,lt=st.additionalEmails,ct=st.primaryEmail,dt=st.notificationEmail,ut=(0,c.loadState)("settings","accountParameters",{}).displayNameChangeSupported,pt={name:"EmailSection",components:{HeaderBar:On,Email:tt},data:function(){var n=this;return{accountProperty:g.EMAIL,additionalEmails:lt.map((function(t){return it(it({},t),{},{key:n.generateUniqueKey()})})),displayNameChangeSupported:ut,primaryEmail:ct,savePrimaryEmailScope:Vn,notificationEmail:dt}},computed:{firstAdditionalEmail:function(){return this.additionalEmails.length?this.additionalEmails[0].value:null},isValidSection:function(){return M(this.primaryEmail.value)&&this.additionalEmails.map((function(n){return n.value})).every(M)},primaryEmailValue:{get:function(){return this.primaryEmail.value},set:function(n){this.primaryEmail.value=n}}},methods:{onAddAdditionalEmail:function(){this.isValidSection&&this.additionalEmails.push({value:"",scope:P,key:this.generateUniqueKey()})},onDeleteAdditionalEmail:function(n){this.$delete(this.additionalEmails,n)},onUpdateEmail:function(){var n=this;return at(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(""!==n.primaryEmailValue||!n.firstAdditionalEmail){t.next=7;break}return e=n.firstAdditionalEmail,t.next=4,n.deleteFirstAdditionalEmail();case 4:return n.primaryEmailValue=e,t.next=7,n.updatePrimaryEmail();case 7:case"end":return t.stop()}}),t)})))()},onUpdateNotificationEmail:function(n){var t=this;return at(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.notificationEmail=n;case 1:case"end":return e.stop()}}),e)})))()},updatePrimaryEmail:function(){var n=this;return at(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,$n(n.primaryEmailValue);case 3:i=e.sent,n.handleResponse(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse("error",t("settings","Unable to update primary email address"),e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},deleteFirstAdditionalEmail:function(){var n=this;return at(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,qn(n.firstAdditionalEmail);case 3:i=e.sent,n.handleDeleteFirstAdditionalEmail(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse("error",t("settings","Unable to delete additional email address"),e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},handleDeleteFirstAdditionalEmail:function(n){"ok"===n?this.$delete(this.additionalEmails,0):this.handleResponse("error",t("settings","Unable to delete additional email address"),{})},handleResponse:function(n,t,e){"ok"!==n&&((0,p.x2)(t),this.logger.error(t,e))},generateUniqueKey:function(){return Math.random().toString(36).substring(2)}}},At=a(19617),mt={};mt.styleTagTransform=en(),mt.setAttributes=Q(),mt.insert=K().bind(null,"head"),mt.domAPI=Y(),mt.insertStyleElement=nn(),V()(At.Z,mt),At.Z&&At.Z.locals&&At.Z.locals;var ft=(0,on.Z)(pt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"email","handle-scope-change":n.savePrimaryEmailScope,"is-editable":!0,"is-multi-value-supported":!0,"is-valid-section":n.isValidSection,scope:n.primaryEmail.scope},on:{"update:scope":function(t){return n.$set(n.primaryEmail,"scope",t)},"add-additional":n.onAddAdditionalEmail}}),n._v(" "),n.displayNameChangeSupported?[e("Email",{attrs:{primary:!0,scope:n.primaryEmail.scope,email:n.primaryEmail.value,"active-notification-email":n.notificationEmail},on:{"update:scope":function(t){return n.$set(n.primaryEmail,"scope",t)},"update:email":[function(t){return n.$set(n.primaryEmail,"value",t)},n.onUpdateEmail],"update:activeNotificationEmail":function(t){n.notificationEmail=t},"update:active-notification-email":function(t){n.notificationEmail=t},"update:notification-email":n.onUpdateNotificationEmail}})]:e("span",[n._v("\n\t\t"+n._s(n.primaryEmail.value||n.t("settings","No email address set"))+"\n\t")]),n._v(" "),n.additionalEmails.length?[e("em",{staticClass:"additional-emails-label"},[n._v(n._s(n.t("settings","Additional emails")))]),n._v(" "),n._l(n.additionalEmails,(function(t,a){return e("Email",{key:t.key,attrs:{index:a,scope:t.scope,email:t.value,"local-verification-state":parseInt(t.locallyVerified,10),"active-notification-email":n.notificationEmail},on:{"update:scope":function(e){return n.$set(t,"scope",e)},"update:email":[function(e){return n.$set(t,"value",e)},n.onUpdateEmail],"update:activeNotificationEmail":function(t){n.notificationEmail=t},"update:active-notification-email":function(t){n.notificationEmail=t},"update:notification-email":n.onUpdateNotificationEmail,"delete-additional-email":function(t){return n.onDeleteAdditionalEmail(a)}}})}))]:n._e()],2)}),[],!1,null,"32b8ad0a",null).exports;function ht(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function vt(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ht(i,a,r,o,s,"next",n)}function s(n){ht(i,a,r,o,s,"throw",n)}o(void 0)}))}}function gt(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,a)}return e}function Ct(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?gt(Object(e),!0).forEach((function(t){bt(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):gt(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function bt(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function yt(n){return function(n){if(Array.isArray(n))return xt(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,t){if(n){if("string"==typeof n)return xt(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?xt(n,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function xt(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var Et={name:"Language",props:{commonLanguages:{type:Array,required:!0},otherLanguages:{type:Array,required:!0},language:{type:Object,required:!0}},data:function(){return{initialLanguage:this.language}},computed:{allLanguages:function(){return Object.freeze([].concat(yt(this.commonLanguages),yt(this.otherLanguages)).reduce((function(n,t){var e=t.code,a=t.name;return Ct(Ct({},n),{},bt({},e,a))}),{}))}},methods:{onLanguageChange:function(n){var t=this;return vt(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.constructLanguage(n.target.value),t.$emit("update:language",a),""===(r=a).code||""===r.name||void 0===r.name){e.next=5;break}return e.next=5,t.updateLanguage(a);case 5:case"end":return e.stop()}var r}),e)})))()},updateLanguage:function(n){var e=this;return vt(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(y.LANGUAGE,n.code);case 3:o=a.sent,e.handleResponse({language:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),e.reloadPage(),a.next=11;break;case 8:a.prev=8,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update language"),error:a.t0});case 11:case"end":return a.stop()}}),a,null,[[0,8]])})))()},constructLanguage:function(n){return{code:n,name:this.allLanguages[n]}},handleResponse:function(n){var t=n.language,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialLanguage=t:((0,p.x2)(a),this.logger.error(a,r))},reloadPage:function(){location.reload()}}},wt=a(35595),kt={};kt.styleTagTransform=en(),kt.setAttributes=Q(),kt.insert=K().bind(null,"head"),kt.domAPI=Y(),kt.insertStyleElement=nn(),V()(wt.Z,kt),wt.Z&&wt.Z.locals&&wt.Z.locals;var It=(0,on.Z)(Et,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"language"},[e("select",{attrs:{id:"language",placeholder:n.t("settings","Language")},on:{change:n.onLanguageChange}},[n._l(n.commonLanguages,(function(t){return e("option",{key:t.code,domProps:{selected:n.language.code===t.code,value:t.code}},[n._v("\n\t\t\t"+n._s(t.name)+"\n\t\t")])})),n._v(" "),e("option",{attrs:{disabled:""}},[n._v("\n\t\t\t──────────\n\t\t")]),n._v(" "),n._l(n.otherLanguages,(function(t){return e("option",{key:t.code,domProps:{selected:n.language.code===t.code,value:t.code}},[n._v("\n\t\t\t"+n._s(t.name)+"\n\t\t")])}))],2),n._v(" "),e("a",{attrs:{href:"https://www.transifex.com/nextcloud/nextcloud/",target:"_blank",rel:"noreferrer noopener"}},[e("em",[n._v(n._s(n.t("settings","Help translate")))])])])}),[],!1,null,"5396d706",null).exports,_t=(0,c.loadState)("settings","personalInfoParameters",{}).languageMap,Pt=_t.activeLanguage,St=_t.commonLanguages,Bt=_t.otherLanguages,Rt={name:"LanguageSection",components:{Language:It,HeaderBar:On},data:function(){return{accountProperty:x.LANGUAGE,commonLanguages:St,otherLanguages:Bt,language:Pt}},computed:{isEditable:function(){return Boolean(this.language)}}},Ot=a(3569),Dt={};Dt.styleTagTransform=en(),Dt.setAttributes=Q(),Dt.insert=K().bind(null,"head"),Dt.domAPI=Y(),Dt.insertStyleElement=nn(),V()(Ot.Z,Dt),Ot.Z&&Ot.Z.locals&&Ot.Z.locals;var Lt=(0,on.Z)(Rt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"language"}}),n._v(" "),n.isEditable?[e("Language",{attrs:{"common-languages":n.commonLanguages,"other-languages":n.otherLanguages,language:n.language},on:{"update:language":function(t){n.language=t}}})]:e("span",[n._v("\n\t\t"+n._s(n.t("settings","No language set"))+"\n\t")])],2)}),[],!1,null,"16883898",null).exports,Nt={name:"EditProfileAnchorLink",components:{ChevronDownIcon:a(6016).Z},props:{profileEnabled:{type:Boolean,required:!0}},computed:{disabled:function(){return!this.profileEnabled}}},Tt=a(61434),Zt={};Zt.styleTagTransform=en(),Zt.setAttributes=Q(),Zt.insert=K().bind(null,"head"),Zt.domAPI=Y(),Zt.insertStyleElement=nn(),V()(Tt.Z,Zt),Tt.Z&&Tt.Z.locals&&Tt.Z.locals;var Ut=a(95758),Ht={};Ht.styleTagTransform=en(),Ht.setAttributes=Q(),Ht.insert=K().bind(null,"head"),Ht.domAPI=Y(),Ht.insertStyleElement=nn(),V()(Ut.Z,Ht),Ut.Z&&Ut.Z.locals&&Ut.Z.locals;var Mt=(0,on.Z)(Nt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("a",n._g({class:{disabled:n.disabled},attrs:{href:"#profile-visibility"}},n.$listeners),[e("ChevronDownIcon",{staticClass:"anchor-icon",attrs:{decorative:"",title:"",size:22}}),n._v("\n\t"+n._s(n.t("settings","Edit your Profile visibility"))+"\n")],1)}),[],!1,null,"73817e9f",null).exports;function $t(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function jt(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){$t(i,a,r,o,s,"next",n)}function s(n){$t(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Ft={name:"ProfileCheckbox",props:{profileEnabled:{type:Boolean,required:!0}},data:function(){return{initialProfileEnabled:this.profileEnabled}},methods:{onEnableProfileChange:function(n){var t=this;return jt(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.target.checked,t.$emit("update:profile-enabled",a),"boolean"!=typeof a){e.next=5;break}return e.next=5,t.updateEnableProfile(a);case 5:case"end":return e.stop()}}),e)})))()},updateEnableProfile:function(n){var e=this;return jt(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.PROFILE_ENABLED,n);case 3:o=a.sent,e.handleResponse({isEnabled:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update profile enabled state"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.isEnabled,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?(this.initialProfileEnabled=t,(0,A.emit)("settings:profile-enabled:updated",t)):((0,p.x2)(a),this.logger.error(a,r))}}},qt=(0,on.Z)(Ft,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"checkbox-container"},[e("input",{staticClass:"checkbox",attrs:{id:"enable-profile",type:"checkbox"},domProps:{checked:n.profileEnabled},on:{change:n.onEnableProfileChange}}),n._v(" "),e("label",{attrs:{for:"enable-profile"}},[n._v("\n\t\t"+n._s(n.t("settings","Enable Profile"))+"\n\t")])])}),[],!1,null,"b6898860",null).exports,Gt=a(28017),Vt={name:"ProfilePreviewCard",components:{Avatar:a.n(Gt)()},props:{displayName:{type:String,required:!0},organisation:{type:String,required:!0},profileEnabled:{type:Boolean,required:!0},userId:{type:String,required:!0}},computed:{disabled:function(){return!this.profileEnabled},profilePageLink:function(){return this.profileEnabled?(0,O.generateUrl)("/u/{userId}",{userId:(0,l.getCurrentUser)().uid}):null}}},Wt=a(32756),Yt={};Yt.styleTagTransform=en(),Yt.setAttributes=Q(),Yt.insert=K().bind(null,"head"),Yt.domAPI=Y(),Yt.insertStyleElement=nn(),V()(Wt.Z,Yt),Wt.Z&&Wt.Z.locals&&Wt.Z.locals;var zt=(0,on.Z)(Vt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("a",{staticClass:"preview-card",class:{disabled:n.disabled},attrs:{href:n.profilePageLink}},[e("Avatar",{staticClass:"preview-card__avatar",attrs:{user:n.userId,size:48,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0}}),n._v(" "),e("div",{staticClass:"preview-card__header"},[e("span",[n._v(n._s(n.displayName))])]),n._v(" "),e("div",{staticClass:"preview-card__footer"},[e("span",[n._v(n._s(n.organisation))])])],1)}),[],!1,null,"79bf7437",null).exports,Kt=(0,c.loadState)("settings","personalInfoParameters",{}),Jt=Kt.organisationMap.primaryOrganisation.value,Qt=Kt.displayNameMap.primaryDisplayName.value,Xt=Kt.profileEnabled,ne=Kt.userId,te={name:"ProfileSection",components:{EditProfileAnchorLink:Mt,HeaderBar:On,ProfileCheckbox:qt,ProfilePreviewCard:zt},data:function(){return{accountProperty:g.PROFILE_ENABLED,organisation:Jt,displayName:Qt,profileEnabled:Xt,userId:ne}},mounted:function(){(0,A.subscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,A.subscribe)("settings:organisation:updated",this.handleOrganisationUpdate)},beforeDestroy:function(){(0,A.unsubscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,A.unsubscribe)("settings:organisation:updated",this.handleOrganisationUpdate)},methods:{handleDisplayNameUpdate:function(n){this.displayName=n},handleOrganisationUpdate:function(n){this.organisation=n}}},ee=te,ae=a(83566),re={};re.styleTagTransform=en(),re.setAttributes=Q(),re.insert=K().bind(null,"head"),re.domAPI=Y(),re.insertStyleElement=nn(),V()(ae.Z,re),ae.Z&&ae.Z.locals&&ae.Z.locals;var ie=(0,on.Z)(ee,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty}}),n._v(" "),e("ProfileCheckbox",{attrs:{"profile-enabled":n.profileEnabled},on:{"update:profileEnabled":function(t){n.profileEnabled=t},"update:profile-enabled":function(t){n.profileEnabled=t}}}),n._v(" "),e("ProfilePreviewCard",{attrs:{organisation:n.organisation,"display-name":n.displayName,"profile-enabled":n.profileEnabled,"user-id":n.userId}}),n._v(" "),e("EditProfileAnchorLink",{attrs:{"profile-enabled":n.profileEnabled}})],1)}),[],!1,null,"252753e6",null).exports;function oe(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function se(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){oe(i,a,r,o,s,"next",n)}function s(n){oe(i,a,r,o,s,"throw",n)}o(void 0)}))}}var le={name:"Organisation",props:{organisation:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialOrganisation:this.organisation,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onOrganisationChange:function(n){this.$emit("update:organisation",n.target.value),this.debounceOrganisationChange(n.target.value.trim())},debounceOrganisationChange:f()(function(){var n=se(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryOrganisation(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryOrganisation:function(n){var e=this;return se(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.ORGANISATION,n);case 3:o=a.sent,e.handleResponse({organisation:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update organisation"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.organisation,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialOrganisation=e,(0,A.emit)("settings:organisation:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},ce=le,de=a(25731),ue={};ue.styleTagTransform=en(),ue.setAttributes=Q(),ue.insert=K().bind(null,"head"),ue.domAPI=Y(),ue.insertStyleElement=nn(),V()(de.Z,ue),de.Z&&de.Z.locals&&de.Z.locals;var pe=(0,on.Z)(ce,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"organisation"},[e("input",{attrs:{id:"organisation",type:"text",placeholder:n.t("settings","Your organisation"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.organisation},on:{input:n.onOrganisationChange}}),n._v(" "),e("div",{staticClass:"organisation__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"591cd6b6",null).exports,Ae=(0,c.loadState)("settings","personalInfoParameters",{}).organisationMap.primaryOrganisation,me={name:"OrganisationSection",components:{Organisation:pe,HeaderBar:On},data:function(){return{accountProperty:g.ORGANISATION,primaryOrganisation:Ae}}},fe=a(34458),he={};he.styleTagTransform=en(),he.setAttributes=Q(),he.insert=K().bind(null,"head"),he.domAPI=Y(),he.insertStyleElement=nn(),V()(fe.Z,he),fe.Z&&fe.Z.locals&&fe.Z.locals;var ve=(0,on.Z)(me,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"organisation",scope:n.primaryOrganisation.scope},on:{"update:scope":function(t){return n.$set(n.primaryOrganisation,"scope",t)}}}),n._v(" "),e("Organisation",{attrs:{organisation:n.primaryOrganisation.value,scope:n.primaryOrganisation.scope},on:{"update:organisation":function(t){return n.$set(n.primaryOrganisation,"value",t)},"update:scope":function(t){return n.$set(n.primaryOrganisation,"scope",t)}}})],1)}),[],!1,null,"43146ff7",null).exports;function ge(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Ce(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ge(i,a,r,o,s,"next",n)}function s(n){ge(i,a,r,o,s,"throw",n)}o(void 0)}))}}var be={name:"Role",props:{role:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialRole:this.role,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onRoleChange:function(n){this.$emit("update:role",n.target.value),this.debounceRoleChange(n.target.value.trim())},debounceRoleChange:f()(function(){var n=Ce(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryRole(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryRole:function(n){var e=this;return Ce(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.ROLE,n);case 3:o=a.sent,e.handleResponse({role:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update role"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.role,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialRole=e,(0,A.emit)("settings:role:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},ye=be,xe=a(4161),Ee={};Ee.styleTagTransform=en(),Ee.setAttributes=Q(),Ee.insert=K().bind(null,"head"),Ee.domAPI=Y(),Ee.insertStyleElement=nn(),V()(xe.Z,Ee),xe.Z&&xe.Z.locals&&xe.Z.locals;var we=(0,on.Z)(ye,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"role"},[e("input",{attrs:{id:"role",type:"text",placeholder:n.t("settings","Your role"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.role},on:{input:n.onRoleChange}}),n._v(" "),e("div",{staticClass:"role__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"aac18396",null).exports,ke=(0,c.loadState)("settings","personalInfoParameters",{}).roleMap.primaryRole,Ie={name:"RoleSection",components:{Role:we,HeaderBar:On},data:function(){return{accountProperty:g.ROLE,primaryRole:ke}}},_e=a(70986),Pe={};Pe.styleTagTransform=en(),Pe.setAttributes=Q(),Pe.insert=K().bind(null,"head"),Pe.domAPI=Y(),Pe.insertStyleElement=nn(),V()(_e.Z,Pe),_e.Z&&_e.Z.locals&&_e.Z.locals;var Se=(0,on.Z)(Ie,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"role",scope:n.primaryRole.scope},on:{"update:scope":function(t){return n.$set(n.primaryRole,"scope",t)}}}),n._v(" "),e("Role",{attrs:{role:n.primaryRole.value,scope:n.primaryRole.scope},on:{"update:role":function(t){return n.$set(n.primaryRole,"value",t)},"update:scope":function(t){return n.$set(n.primaryRole,"scope",t)}}})],1)}),[],!1,null,"f3d959c2",null).exports;function Be(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Re(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Be(i,a,r,o,s,"next",n)}function s(n){Be(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Oe={name:"Headline",props:{headline:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialHeadline:this.headline,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onHeadlineChange:function(n){this.$emit("update:headline",n.target.value),this.debounceHeadlineChange(n.target.value.trim())},debounceHeadlineChange:f()(function(){var n=Re(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryHeadline(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryHeadline:function(n){var e=this;return Re(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.HEADLINE,n);case 3:o=a.sent,e.handleResponse({headline:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update headline"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.headline,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialHeadline=e,(0,A.emit)("settings:headline:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},De=Oe,Le=a(93461),Ne={};Ne.styleTagTransform=en(),Ne.setAttributes=Q(),Ne.insert=K().bind(null,"head"),Ne.domAPI=Y(),Ne.insertStyleElement=nn(),V()(Le.Z,Ne),Le.Z&&Le.Z.locals&&Le.Z.locals;var Te=(0,on.Z)(De,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"headline"},[e("input",{attrs:{id:"headline",type:"text",placeholder:n.t("settings","Your headline"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.headline},on:{input:n.onHeadlineChange}}),n._v(" "),e("div",{staticClass:"headline__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"64e0e0bd",null).exports,Ze=(0,c.loadState)("settings","personalInfoParameters",{}).headlineMap.primaryHeadline,Ue={name:"HeadlineSection",components:{Headline:Te,HeaderBar:On},data:function(){return{accountProperty:g.HEADLINE,primaryHeadline:Ze}}},He=a(6479),Me={};Me.styleTagTransform=en(),Me.setAttributes=Q(),Me.insert=K().bind(null,"head"),Me.domAPI=Y(),Me.insertStyleElement=nn(),V()(He.Z,Me),He.Z&&He.Z.locals&&He.Z.locals;var $e=(0,on.Z)(Ue,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"headline",scope:n.primaryHeadline.scope},on:{"update:scope":function(t){return n.$set(n.primaryHeadline,"scope",t)}}}),n._v(" "),e("Headline",{attrs:{headline:n.primaryHeadline.value,scope:n.primaryHeadline.scope},on:{"update:headline":function(t){return n.$set(n.primaryHeadline,"value",t)},"update:scope":function(t){return n.$set(n.primaryHeadline,"scope",t)}}})],1)}),[],!1,null,"187bb5da",null).exports;function je(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Fe(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){je(i,a,r,o,s,"next",n)}function s(n){je(i,a,r,o,s,"throw",n)}o(void 0)}))}}var qe={name:"Biography",props:{biography:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialBiography:this.biography,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onBiographyChange:function(n){this.$emit("update:biography",n.target.value),this.debounceBiographyChange(n.target.value.trim())},debounceBiographyChange:f()(function(){var n=Fe(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryBiography(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryBiography:function(n){var e=this;return Fe(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.BIOGRAPHY,n);case 3:o=a.sent,e.handleResponse({biography:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update biography"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.biography,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialBiography=e,(0,A.emit)("settings:biography:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Ge=qe,Ve=a(3276),We={};We.styleTagTransform=en(),We.setAttributes=Q(),We.insert=K().bind(null,"head"),We.domAPI=Y(),We.insertStyleElement=nn(),V()(Ve.Z,We),Ve.Z&&Ve.Z.locals&&Ve.Z.locals;var Ye=(0,on.Z)(Ge,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"biography"},[e("textarea",{attrs:{id:"biography",placeholder:n.t("settings","Your biography"),rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:n.biography},on:{input:n.onBiographyChange}}),n._v(" "),e("div",{staticClass:"biography__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"0fbf56a9",null).exports,ze=(0,c.loadState)("settings","personalInfoParameters",{}).biographyMap.primaryBiography,Ke={name:"BiographySection",components:{Biography:Ye,HeaderBar:On},data:function(){return{accountProperty:g.BIOGRAPHY,primaryBiography:ze}}},Je=a(51340),Qe={};Qe.styleTagTransform=en(),Qe.setAttributes=Q(),Qe.insert=K().bind(null,"head"),Qe.domAPI=Y(),Qe.insertStyleElement=nn(),V()(Je.Z,Qe),Je.Z&&Je.Z.locals&&Je.Z.locals;var Xe=(0,on.Z)(Ke,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"biography",scope:n.primaryBiography.scope},on:{"update:scope":function(t){return n.$set(n.primaryBiography,"scope",t)}}}),n._v(" "),e("Biography",{attrs:{biography:n.primaryBiography.value,scope:n.primaryBiography.scope},on:{"update:biography":function(t){return n.$set(n.primaryBiography,"value",t)},"update:scope":function(t){return n.$set(n.primaryBiography,"scope",t)}}})],1)}),[],!1,null,"cfa727da",null).exports,na=a(7811),ta=a.n(na);function ea(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}var aa,ra=function(){var n,t=(n=regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("/profile/{userId}",{userId:a}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{paramId:t,visibility:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ea(i,a,r,o,s,"next",n)}function s(n){ea(i,a,r,o,s,"throw",n)}o(void 0)}))});return function(n,e){return t.apply(this,arguments)}}();function ia(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var oa=Object.freeze({SHOW:"show",SHOW_USERS_ONLY:"show_users_only",HIDE:"hide"}),sa=Object.freeze((ia(aa={},oa.SHOW,{name:oa.SHOW,label:t("settings","Show to everyone")}),ia(aa,oa.SHOW_USERS_ONLY,{name:oa.SHOW_USERS_ONLY,label:t("settings","Show to logged in users only")}),ia(aa,oa.HIDE,{name:oa.HIDE,label:t("settings","Hide")}),aa));function la(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function ca(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){la(i,a,r,o,s,"next",n)}function s(n){la(i,a,r,o,s,"throw",n)}o(void 0)}))}}var da=(0,c.loadState)("settings","personalInfoParameters",!1).profileEnabled,ua={name:"VisibilityDropdown",components:{Multiselect:ta()},props:{paramId:{type:String,required:!0},displayId:{type:String,required:!0},visibility:{type:String,required:!0}},data:function(){return{initialVisibility:this.visibility,profileEnabled:da}},computed:{disabled:function(){return!this.profileEnabled},inputId:function(){return"profile-visibility-".concat(this.paramId)},visibilityObject:function(){return sa[this.visibility]},visibilityOptions:function(){return Object.values(sa)}},mounted:function(){(0,A.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},beforeDestroy:function(){(0,A.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{onVisibilityChange:function(n){var t=this;return ca(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null===n){e.next=6;break}if(a=n.name,t.$emit("update:visibility",a),!H(a)){e.next=6;break}return e.next=6,t.updateVisibility(a);case 6:case"end":return e.stop()}}),e)})))()},updateVisibility:function(n){var e=this;return ca(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,ra(e.paramId,n);case 3:o=a.sent,e.handleResponse({visibility:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update visibility of {displayId}",{displayId:e.displayId}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.visibility,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialVisibility=t:((0,p.x2)(a),this.logger.error(a,r))},handleProfileEnabledUpdate:function(n){this.profileEnabled=n}}},pa=ua,Aa=a(93343),ma={};ma.styleTagTransform=en(),ma.setAttributes=Q(),ma.insert=K().bind(null,"head"),ma.domAPI=Y(),ma.insertStyleElement=nn(),V()(Aa.Z,ma),Aa.Z&&Aa.Z.locals&&Aa.Z.locals;var fa=(0,on.Z)(pa,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"visibility-container",class:{disabled:n.disabled}},[e("label",{attrs:{for:n.inputId}},[n._v("\n\t\t"+n._s(n.t("settings","{displayId}",{displayId:n.displayId}))+"\n\t")]),n._v(" "),e("Multiselect",{staticClass:"visibility-container__multiselect",attrs:{id:n.inputId,options:n.visibilityOptions,"track-by":"name",label:"label",value:n.visibilityObject},on:{change:n.onVisibilityChange}})],1)}),[],!1,null,"4643b0e2",null).exports;function ha(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var va=(0,c.loadState)("settings","profileParameters",{}).profileConfig,ga=(0,c.loadState)("settings","personalInfoParameters",!1).profileEnabled,Ca=function(n,t){return n.appId===t.appId||"core"!==n.appId&&"core"!==t.appId?n.displayId.localeCompare(t.displayId):"core"===n.appId?1:-1},ba={name:"ProfileVisibilitySection",components:{HeaderBar:On,VisibilityDropdown:fa},data:function(){return{heading:C.PROFILE_VISIBILITY,profileEnabled:ga,visibilityParams:Object.entries(va).map((function(n){var t,e,a=(e=2,function(n){if(Array.isArray(n))return n}(t=n)||function(n,t){var e=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=e){var a,r,i=[],o=!0,s=!1;try{for(e=e.call(n);!(o=(a=e.next()).done)&&(i.push(a.value),!t||i.length!==t);o=!0);}catch(n){s=!0,r=n}finally{try{o||null==e.return||e.return()}finally{if(s)throw r}}return i}}(t,e)||function(n,t){if(n){if("string"==typeof n)return ha(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?ha(n,t):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=a[0],i=a[1];return{id:r,appId:i.appId,displayId:i.displayId,visibility:i.visibility}})).sort(Ca),marginLeft:window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("personal-settings-avatar-container")).getPropertyValue("width").trim():"0px"}},computed:{disabled:function(){return!this.profileEnabled},rows:function(){return Math.ceil(this.visibilityParams.length/2)}},mounted:function(){var n=this;(0,A.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.onresize=function(){n.marginLeft=window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("personal-settings-avatar-container")).getPropertyValue("width").trim():"0px"}},beforeDestroy:function(){(0,A.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{handleProfileEnabledUpdate:function(n){this.profileEnabled=n}}},ya=ba,xa=a(40958),Ea={};Ea.styleTagTransform=en(),Ea.setAttributes=Q(),Ea.insert=K().bind(null,"head"),Ea.domAPI=Y(),Ea.insertStyleElement=nn(),V()(xa.Z,Ea),xa.Z&&xa.Z.locals&&xa.Z.locals;var wa=(0,on.Z)(ya,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",{style:{marginLeft:n.marginLeft},attrs:{id:"profile-visibility"}},[e("HeaderBar",{attrs:{"account-property":n.heading}}),n._v(" "),e("em",{class:{disabled:n.disabled}},[n._v("\n\t\t"+n._s(n.t("settings",'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.'))+"\n\t")]),n._v(" "),e("div",{staticClass:"visibility-dropdowns",style:{gridTemplateRows:"repeat("+n.rows+", 44px)"}},n._l(n.visibilityParams,(function(t){return e("VisibilityDropdown",{key:t.id,attrs:{"param-id":t.id,"display-id":t.displayId,visibility:t.visibility},on:{"update:visibility":function(e){return n.$set(t,"visibility",e)}}})})),1)],1)}),[],!1,null,"16df62f8",null).exports;a.nc=btoa((0,l.getRequestToken)());var ka=(0,c.loadState)("settings","profileEnabledGlobally",!0);s.default.mixin({props:{logger:u},methods:{t:d.translate}});var Ia=s.default.extend(Un),_a=s.default.extend(ft),Pa=s.default.extend(Lt);if((new Ia).$mount("#vue-displayname-section"),(new _a).$mount("#vue-email-section"),(new Pa).$mount("#vue-language-section"),ka){var Sa=s.default.extend(ie),Ba=s.default.extend(ve),Ra=s.default.extend(Se),Oa=s.default.extend($e),Da=s.default.extend(Xe),La=s.default.extend(wa);(new Sa).$mount("#vue-profile-section"),(new Ba).$mount("#vue-organisation-section"),(new Ra).$mount("#vue-role-section"),(new Oa).$mount("#vue-headline-section"),(new Da).$mount("#vue-biography-section"),(new La).$mount("#vue-profile-visibility-section")}},3276:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".biography[data-v-0fbf56a9]{display:grid;align-items:center}.biography textarea[data-v-0fbf56a9]{resize:vertical;grid-area:1/1;width:100%;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.biography textarea[data-v-0fbf56a9]:hover,.biography textarea[data-v-0fbf56a9]:focus,.biography textarea[data-v-0fbf56a9]:active{border-color:var(--color-primary-element) !important;outline:none !important}.biography .biography__actions-container[data-v-0fbf56a9]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}.biography .biography__actions-container .icon-checkmark[data-v-0fbf56a9],.biography .biography__actions-container .icon-error[data-v-0fbf56a9]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-0fbf56a9],.fade-leave-to[data-v-0fbf56a9]{opacity:0}.fade-enter-active[data-v-0fbf56a9]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-0fbf56a9]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue"],names:[],mappings:"AAyHA,4BACC,YAAA,CACA,kBAAA,CAEA,qCACC,eAAA,CACA,aAAA,CACA,UAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAEA,kIAGC,oDAAA,CACA,uBAAA,CAIF,0DACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAEA,gJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.biography {\n\tdisplay: grid;\n\talign-items: center;\n\n\ttextarea {\n\t\tresize: vertical;\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: var(--color-primary-element) !important;\n\t\t\toutline: none !important;\n\t\t}\n\t}\n\n\t.biography__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\talign-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},51340:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-cfa727da]{padding:10px 10px}section[data-v-cfa727da] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},74539:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".displayname[data-v-3418897a]{display:grid;align-items:center}.displayname input[data-v-3418897a]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.displayname .displayname__actions-container[data-v-3418897a]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.displayname .displayname__actions-container .icon-checkmark[data-v-3418897a],.displayname .displayname__actions-container .icon-error[data-v-3418897a]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-3418897a],.fade-leave-to[data-v-3418897a]{opacity:0}.fade-enter-active[data-v-3418897a]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3418897a]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue"],names:[],mappings:"AA8HA,8BACC,YAAA,CACA,kBAAA,CAEA,oCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,8DACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,wJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.displayname {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.displayname__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},26184:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-b8a748f4]{padding:10px 10px}section[data-v-b8a748f4] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue"],names:[],mappings:"AA8EA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},16183:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".email[data-v-49f8e937]{display:grid;align-items:center}.email input[data-v-49f8e937]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.email .email__actions-container[data-v-49f8e937]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-49f8e937]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-49f8e937]:hover,.email .email__actions-container .email__actions[data-v-49f8e937]:focus,.email .email__actions-container .email__actions[data-v-49f8e937]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-49f8e937] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email .email__actions-container .icon-checkmark[data-v-49f8e937],.email .email__actions-container .icon-error[data-v-49f8e937]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-49f8e937],.fade-leave-to[data-v-49f8e937]{opacity:0}.fade-enter-active[data-v-49f8e937]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-49f8e937]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue"],names:[],mappings:"AAmWA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAIF,gIAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},19617:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-32b8ad0a]{padding:10px 10px}section[data-v-32b8ad0a] button:disabled{cursor:default}section .additional-emails-label[data-v-32b8ad0a]{display:block;margin-top:16px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue"],names:[],mappings:"AAoMA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},93461:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".headline[data-v-64e0e0bd]{display:grid;align-items:center}.headline input[data-v-64e0e0bd]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.headline .headline__actions-container[data-v-64e0e0bd]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.headline .headline__actions-container .icon-checkmark[data-v-64e0e0bd],.headline .headline__actions-container .icon-error[data-v-64e0e0bd]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-64e0e0bd],.fade-leave-to[data-v-64e0e0bd]{opacity:0}.fade-enter-active[data-v-64e0e0bd]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-64e0e0bd]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue"],names:[],mappings:"AAyHA,2BACC,YAAA,CACA,kBAAA,CAEA,iCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,wDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4IAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.headline {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.headline__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},6479:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-187bb5da]{padding:10px 10px}section[data-v-187bb5da] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},35595:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".language[data-v-5396d706]{display:grid}.language select[data-v-5396d706]{width:100%;height:34px;margin:3px 3px 3px 0;padding:6px 16px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background:var(--icon-triangle-s-000) no-repeat right 4px center;font-family:var(--font-face);appearance:none;cursor:pointer}.language a[data-v-5396d706]{color:var(--color-main-text);text-decoration:none;width:max-content}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue"],names:[],mappings:"AA+IA,2BACC,YAAA,CAEA,kCACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,gBAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,gEAAA,CACA,4BAAA,CACA,eAAA,CACA,cAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 6px 16px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\n\t\tfont-family: var(--font-face);\n\t\tappearance: none;\n\t\tcursor: pointer;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},3569:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-16883898]{padding:10px 10px}section[data-v-16883898] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue"],names:[],mappings:"AA2EA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},25731:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".organisation[data-v-591cd6b6]{display:grid;align-items:center}.organisation input[data-v-591cd6b6]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.organisation .organisation__actions-container[data-v-591cd6b6]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.organisation .organisation__actions-container .icon-checkmark[data-v-591cd6b6],.organisation .organisation__actions-container .icon-error[data-v-591cd6b6]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-591cd6b6],.fade-leave-to[data-v-591cd6b6]{opacity:0}.fade-enter-active[data-v-591cd6b6]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-591cd6b6]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue"],names:[],mappings:"AAyHA,+BACC,YAAA,CACA,kBAAA,CAEA,qCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4JAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.organisation {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.organisation__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},34458:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-43146ff7]{padding:10px 10px}section[data-v-43146ff7] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},61434:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AA4DA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},95758:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"a[data-v-73817e9f]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-73817e9f]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-73817e9f]:hover,a[data-v-73817e9f]:focus,a[data-v-73817e9f]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-73817e9f]{pointer-events:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AAsEA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},32756:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".preview-card[data-v-79bf7437]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:hover,.preview-card[data-v-79bf7437]:focus,.preview-card[data-v-79bf7437]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-79bf7437]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-79bf7437],.preview-card.disabled[data-v-79bf7437] *{cursor:default}.preview-card__avatar[data-v-79bf7437]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-79bf7437]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-79bf7437],.preview-card__footer[data-v-79bf7437]{position:relative;width:auto}.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-79bf7437]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0}.preview-card__header span[data-v-79bf7437]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-79bf7437]{height:46px}.preview-card__footer span[data-v-79bf7437]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue"],names:[],mappings:"AA6FA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tword-break: break-all;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},83566:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-252753e6]{padding:10px 10px}section[data-v-252753e6] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue"],names:[],mappings:"AAkGA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},40958:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-16df62f8]{padding:30px;max-width:100vw}section em[data-v-16df62f8]{display:block;margin:16px 0}section em.disabled[data-v-16df62f8]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-16df62f8],section em.disabled[data-v-16df62f8] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-16df62f8]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-16df62f8]{width:940px}section .visibility-dropdowns[data-v-16df62f8]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-16df62f8]{width:470px}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue"],names:[],mappings:"AAyHA,yBACC,YAAA,CACA,eAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA3BD,yBA4BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BAnCD,yBAoCE,WAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 30px;\n\tmax-width: 100vw;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},93343:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".visibility-container[data-v-4643b0e2]{display:flex;width:max-content}.visibility-container.disabled[data-v-4643b0e2]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-4643b0e2],.visibility-container.disabled[data-v-4643b0e2] *{cursor:default;pointer-events:none}.visibility-container label[data-v-4643b0e2]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__multiselect[data-v-4643b0e2]{width:260px;max-width:40vw}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue"],names:[],mappings:"AAwJA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,oDACC,WAAA,CACA,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__multiselect {\n\t\twidth: 260px;\n\t\tmax-width: 40vw;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},4161:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".role[data-v-aac18396]{display:grid;align-items:center}.role input[data-v-aac18396]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.role .role__actions-container[data-v-aac18396]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.role .role__actions-container .icon-checkmark[data-v-aac18396],.role .role__actions-container .icon-error[data-v-aac18396]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-aac18396],.fade-leave-to[data-v-aac18396]{opacity:0}.fade-enter-active[data-v-aac18396]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-aac18396]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue"],names:[],mappings:"AAyHA,uBACC,YAAA,CACA,kBAAA,CAEA,6BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4HAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.role {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.role__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},70986:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-f3d959c2]{padding:10px 10px}section[data-v-f3d959c2] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},18561:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".federation-actions[data-v-b51d8bee],.federation-actions--additional[data-v-b51d8bee]{opacity:.4 !important}.federation-actions[data-v-b51d8bee]:hover,.federation-actions[data-v-b51d8bee]:focus,.federation-actions[data-v-b51d8bee]:active,.federation-actions--additional[data-v-b51d8bee]:hover,.federation-actions--additional[data-v-b51d8bee]:focus,.federation-actions--additional[data-v-b51d8bee]:active{opacity:.8 !important}.federation-actions--additional[data-v-b51d8bee] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue"],names:[],mappings:"AAsLA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.federation-actions,\n.federation-actions--additional {\n\topacity: 0.4 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8 !important;\n\t}\n}\n\n.federation-actions--additional {\n\t&::v-deep button {\n\t\t// TODO remove this hack\n\t\tpadding-bottom: 7px;\n\t\theight: 30px !important;\n\t\tmin-height: 30px !important;\n\t\twidth: 30px !important;\n\t\tmin-width: 30px !important;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},12461:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".federation-actions__btn[data-v-d2e8b360] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d2e8b360]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue"],names:[],mappings:"AA0FC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.federation-actions__btn {\n\t&::v-deep p {\n\t\twidth: 150px !important;\n\t\tpadding: 8px 0 !important;\n\t\tcolor: var(--color-main-text) !important;\n\t\tfont-size: 12.8px !important;\n\t\tline-height: 1.5em !important;\n\t}\n}\n\n.federation-actions__btn--active {\n\tbackground-color: var(--color-primary-light) !important;\n\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n}\n"],sourceRoot:""}]),t.Z=o},75537:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"h3[data-v-19038f0c]{display:inline-flex;width:100%;margin:12px 0 0 0;font-size:16px;color:var(--color-text-light)}h3.profile-property[data-v-19038f0c]{height:38px}h3.setting-property[data-v-19038f0c]{height:32px}h3 label[data-v-19038f0c]{cursor:pointer}.federation-control[data-v-19038f0c]{margin:-12px 0 0 8px}.button-vue[data-v-19038f0c]{margin:-6px 0 0 auto !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue"],names:[],mappings:"AA0HA,oBACC,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAEA,qCACC,WAAA,CAGD,qCACC,WAAA,CAGD,0BACC,cAAA,CAIF,qCACC,oBAAA,CAGD,6BACC,+BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nh3 {\n\tdisplay: inline-flex;\n\twidth: 100%;\n\tmargin: 12px 0 0 0;\n\tfont-size: 16px;\n\tcolor: var(--color-text-light);\n\n\t&.profile-property {\n\t\theight: 38px;\n\t}\n\n\t&.setting-property {\n\t\theight: 32px;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t}\n}\n\n.federation-control {\n\tmargin: -12px 0 0 8px;\n}\n\n.button-vue {\n\tmargin: -6px 0 0 auto !important;\n}\n"],sourceRoot:""}]),t.Z=o}},a={};function r(n){var t=a[n];if(void 0!==t)return t.exports;var i=a[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=e,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(t,e,a,i){if(!e){var o=1/0;for(d=0;d<n.length;d++){e=n[d][0],a=n[d][1],i=n[d][2];for(var s=!0,l=0;l<e.length;l++)(!1&i||o>=i)&&Object.keys(r.O).every((function(n){return r.O[n](e[l])}))?e.splice(l--,1):(s=!1,i<o&&(o=i));if(s){n.splice(d--,1);var c=a();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=n.length;d>0&&n[d-1][2]>i;d--)n[d]=n[d-1];n[d]=[e,a,i]},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,{a:t}),t},r.d=function(n,t){for(var e in t)r.o(t,e)&&!r.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},r.j=4418,function(){r.b=document.baseURI||self.location.href;var n={4418:0};r.O.j=function(t){return 0===n[t]};var t=function(t,e){var a,i,o=e[0],s=e[1],l=e[2],c=0;if(o.some((function(t){return 0!==n[t]}))){for(a in s)r.o(s,a)&&(r.m[a]=s[a]);if(l)var d=l(r)}for(t&&t(e);c<o.length;c++)i=o[c],r.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return r.O(d)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),r.nc=void 0;var i=r.O(void 0,[7874],(function(){return r(29875)}));i=r.O(i)}();
+//# sourceMappingURL=settings-vue-settings-personal-info.js.map?v=98ac8b07be7ed8292699 \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-info.js.map b/dist/settings-vue-settings-personal-info.js.map
index 31e68daf146..058da08dfa8 100644
--- a/dist/settings-vue-settings-personal-info.js.map
+++ b/dist/settings-vue-settings-personal-info.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-personal-info.js?v=f43189b5ce919b48b8cd","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/PersonalInfoService.js","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?d91e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?aebc","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=template&id=3418897a&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?ca95","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?90b5","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=template&id=d2e8b360&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?6304","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?e342","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=template&id=b51d8bee&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?6e55","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?feed","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=template&id=19038f0c&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?f577","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?f21f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=template&id=b8a748f4&scoped=true&","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/EmailService.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?c98f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?bd2c","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=template&id=2c097054&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?ff48","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?1258","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=template&id=845b669e&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?1e5a","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?6358","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=template&id=5396d706&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?47a6","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?a350","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=template&id=16883898&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?a0a7","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?8473","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?7d4b","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=template&id=73817e9f&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?7612","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=template&id=b6898860&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?9ff5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?240c","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=template&id=79bf7437&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?6fa5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?c85f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=template&id=252753e6&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?e2cd","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?29db","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=template&id=591cd6b6&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?7527","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?647a","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=template&id=43146ff7&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?ce58","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?ec2b","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=template&id=aac18396&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?5af0","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?dc70","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=template&id=f3d959c2&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?1cf8","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?f7d1","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=template&id=64e0e0bd&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?d7b4","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?5bd2","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=template&id=187bb5da&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?8960","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?57fe","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=template&id=0fbf56a9&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?a1f3","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?e305","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=template&id=cfa727da&scoped=true&","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/ProfileConstants.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?6b1e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?c222","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=template&id=4643b0e2&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?d5ab","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?7729","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=template&id=16df62f8&scoped=true&","webpack:///nextcloud/apps/settings/src/main-personal-info.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=style&index=0&id=0fbf56a9&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=style&index=0&id=cfa727da&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=style&index=0&id=3418897a&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=style&index=0&id=2c097054&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=style&index=0&id=845b669e&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=style&index=0&id=64e0e0bd&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=style&index=0&id=5396d706&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=style&index=0&id=16883898&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=style&index=0&id=591cd6b6&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=style&index=0&id=252753e6&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=style&index=0&id=aac18396&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=style&index=0&id=f3d959c2&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=style&index=0&id=b51d8bee&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=style&index=0&id=19038f0c&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2020 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 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Address'),\n\tAVATAR: t('settings', 'Avatar'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport { SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants'\n\n/**\n * Save the primary account property value for the user\n *\n * @param {string} accountProperty the account property\n * @param {string|boolean} value the primary value\n * @return {object}\n */\nexport const savePrimaryAccountProperty = async (accountProperty, value) => {\n\t// TODO allow boolean values on backend route handler\n\t// Convert boolean to string for compatibility\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? '1' : '0'\n\t}\n\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: accountProperty,\n\t\tvalue,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope of the primary account property for the user\n *\n * @param {string} accountProperty the account property\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryAccountPropertyScope = async (accountProperty, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${accountProperty}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants'\n\n/**\n * Validate the string input\n *\n * Generic validator just to check that input is not an empty string*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateStringInput(input) {\n\treturn input !== ''\n}\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"displayname\">\n\t\t<input id=\"displayname\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your full name')\"\n\t\t\t:value=\"displayName\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onDisplayNameChange\">\n\n\t\t<div class=\"displayname__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateStringInput } from '../../../utils/validate'\n\n// TODO Global avatar updating on events (e.g. updating the displayname) is currently being handled by global js, investigate using https://github.com/nextcloud/nextcloud-event-bus for global avatar updating\n\nexport default {\n\tname: 'DisplayName',\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialDisplayName: this.displayName,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonDisplayNameChange(e) {\n\t\t\tthis.$emit('update:display-name', e.target.value)\n\t\t\tthis.debounceDisplayNameChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceDisplayNameChange: debounce(async function(displayName) {\n\t\t\tif (validateStringInput(displayName)) {\n\t\t\t\tawait this.updatePrimaryDisplayName(displayName)\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync updatePrimaryDisplayName(displayName) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.DISPLAYNAME, displayName)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tdisplayName,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update full name'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ displayName, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialDisplayName = displayName\n\t\t\t\temit('settings:display-name:updated', displayName)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.displayname {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.displayname__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayName.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!./DisplayName.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!./DisplayName.vue?vue&type=style&index=0&id=3418897a&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!./DisplayName.vue?vue&type=style&index=0&id=3418897a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DisplayName.vue?vue&type=template&id=3418897a&scoped=true&\"\nimport script from \"./DisplayName.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayName.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DisplayName.vue?vue&type=style&index=0&id=3418897a&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 \"3418897a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"displayname\"},[_c('input',{attrs:{\"id\":\"displayname\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your full name'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.displayName},on:{\"input\":_vm.onDisplayNameChange}}),_vm._v(\" \"),_c('div',{staticClass:\"displayname__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.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!./FederationControlAction.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<ActionButton :aria-label=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\tclass=\"federation-actions__btn\"\n\t\t:class=\"{ 'federation-actions__btn--active': activeScope === name }\"\n\t\t:close-after-click=\"true\"\n\t\t:disabled=\"!isSupportedScope\"\n\t\t:icon=\"iconClass\"\n\t\t:title=\"displayName\"\n\t\t@click.stop.prevent=\"updateScope\">\n\t\t{{ isSupportedScope ? tooltip : tooltipDisabled }}\n\t</ActionButton>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\n\nexport default {\n\tname: 'FederationControlAction',\n\n\tcomponents: {\n\t\tActionButton,\n\t},\n\n\tprops: {\n\t\tactiveScope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thandleScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisSupportedScope: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttooltipDisabled: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateScope() {\n\t\t\tthis.handleScopeChange(this.name)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions__btn {\n\t\t&::v-deep p {\n\t\t\twidth: 150px !important;\n\t\t\tpadding: 8px 0 !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t\tfont-size: 12.8px !important;\n\t\t\tline-height: 1.5em !important;\n\t\t}\n\t}\n\n\t.federation-actions__btn--active {\n\t\tbackground-color: var(--color-primary-light) !important;\n\t\tbox-shadow: inset 2px 0 var(--color-primary) !important;\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!./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&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!./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=d2e8b360&scoped=true&\"\nimport script from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&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 \"d2e8b360\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ActionButton',{staticClass:\"federation-actions__btn\",class:{ 'federation-actions__btn--active': _vm.activeScope === _vm.name },attrs:{\"aria-label\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled,\"close-after-click\":true,\"disabled\":!_vm.isSupportedScope,\"icon\":_vm.iconClass,\"title\":_vm.displayName},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.updateScope.apply(null, arguments)}}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<Actions :class=\"{ 'federation-actions': !additional, 'federation-actions--additional': additional }\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:default-icon=\"scopeIcon\"\n\t\t:disabled=\"disabled\">\n\t\t<FederationControlAction v-for=\"federationScope in federationScopes\"\n\t\t\t:key=\"federationScope.name\"\n\t\t\t:active-scope=\"scope\"\n\t\t\t:display-name=\"federationScope.displayName\"\n\t\t\t:handle-scope-change=\"changeScope\"\n\t\t\t:icon-class=\"federationScope.iconClass\"\n\t\t\t:is-supported-scope=\"supportedScopes.includes(federationScope.name)\"\n\t\t\t:name=\"federationScope.name\"\n\t\t\t:tooltip-disabled=\"federationScope.tooltipDisabled\"\n\t\t\t:tooltip=\"federationScope.tooltip\" />\n\t</Actions>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport FederationControlAction from './FederationControlAction'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tPROPERTY_READABLE_KEYS_ENUM,\n\tPROPERTY_READABLE_SUPPORTED_SCOPES_ENUM,\n\tSCOPE_ENUM, SCOPE_PROPERTY_ENUM,\n\tUNPUBLISHED_READABLE_PROPERTIES,\n} from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService'\n\nconst { lookupServerUploadEnabled } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'FederationControl',\n\n\tcomponents: {\n\t\tActions,\n\t\tFederationControlAction,\n\t},\n\n\tprops: {\n\t\taccountProperty: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value),\n\t\t},\n\t\tadditional: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tadditionalValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thandleAdditionalScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountPropertyLowerCase: this.accountProperty.toLocaleLowerCase(),\n\t\t\tinitialScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('settings', 'Change scope level of {accountProperty}', { accountProperty: this.accountPropertyLowerCase })\n\t\t},\n\n\t\tscopeIcon() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].iconClass\n\t\t},\n\n\t\tfederationScopes() {\n\t\t\treturn Object.values(SCOPE_PROPERTY_ENUM)\n\t\t},\n\n\t\tsupportedScopes() {\n\t\t\tif (lookupServerUploadEnabled && !UNPUBLISHED_READABLE_PROPERTIES.includes(this.accountProperty)) {\n\t\t\t\treturn [\n\t\t\t\t\t...PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty],\n\t\t\t\t\tSCOPE_ENUM.FEDERATED,\n\t\t\t\t\tSCOPE_ENUM.PUBLISHED,\n\t\t\t\t]\n\t\t\t}\n\n\t\t\treturn PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty]\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync changeScope(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\n\t\t\tif (!this.additional) {\n\t\t\t\tawait this.updatePrimaryScope(scope)\n\t\t\t} else {\n\t\t\t\tawait this.updateAdditionalScope(scope)\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.accountProperty], scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of the primary {accountProperty}', { accountProperty: this.accountPropertyLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync updateAdditionalScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await this.handleAdditionalScopeChange(this.additionalValue, scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of additional {accountProperty}', { accountProperty: this.accountPropertyLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ scope, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialScope = scope\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:scope', this.initialScope)\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions,\n\t.federation-actions--additional {\n\t\topacity: 0.4 !important;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: 0.8 !important;\n\t\t}\n\t}\n\n\t.federation-actions--additional {\n\t\t&::v-deep button {\n\t\t\t// TODO remove this hack\n\t\t\tpadding-bottom: 7px;\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\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!./FederationControl.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!./FederationControl.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!./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&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!./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=b51d8bee&scoped=true&\"\nimport script from \"./FederationControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&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 \"b51d8bee\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Actions',{class:{ 'federation-actions': !_vm.additional, 'federation-actions--additional': _vm.additional },attrs:{\"aria-label\":_vm.ariaLabel,\"default-icon\":_vm.scopeIcon,\"disabled\":_vm.disabled}},_vm._l((_vm.federationScopes),function(federationScope){return _c('FederationControlAction',{key:federationScope.name,attrs:{\"active-scope\":_vm.scope,\"display-name\":federationScope.displayName,\"handle-scope-change\":_vm.changeScope,\"icon-class\":federationScope.iconClass,\"is-supported-scope\":_vm.supportedScopes.includes(federationScope.name),\"name\":federationScope.name,\"tooltip-disabled\":federationScope.tooltipDisabled,\"tooltip\":federationScope.tooltip}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.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!./HeaderBar.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<h3 :class=\"{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }\">\n\t\t<label :for=\"labelFor\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ accountProperty }}\n\t\t</label>\n\n\t\t<template v-if=\"scope\">\n\t\t\t<FederationControl class=\"federation-control\"\n\t\t\t\t:account-property=\"accountProperty\"\n\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t</template>\n\n\t\t<template v-if=\"isEditable && isMultiValueSupported\">\n\t\t\t<Button type=\"tertiary\"\n\t\t\t\t:disabled=\"!isValidSection\"\n\t\t\t\t:aria-label=\"t('settings', 'Add additional email')\"\n\t\t\t\t@click.stop.prevent=\"onAddAdditional\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</Button>\n\t\t</template>\n\t</h3>\n</template>\n\n<script>\nimport FederationControl from './FederationControl'\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport Plus from 'vue-material-design-icons/Plus'\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM, PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nexport default {\n\tname: 'HeaderBar',\n\n\tcomponents: {\n\t\tFederationControl,\n\t\tButton,\n\t\tPlus,\n\t},\n\n\tprops: {\n\t\taccountProperty: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisMultiValueSupported: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisValidSection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tlabelFor: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProfileProperty() {\n\t\t\treturn this.accountProperty === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED\n\t\t},\n\n\t\tisSettingProperty() {\n\t\t\treturn Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(this.accountProperty)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditional() {\n\t\t\tthis.$emit('add-additional')\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\th3 {\n\t\tdisplay: inline-flex;\n\t\twidth: 100%;\n\t\tmargin: 12px 0 0 0;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text-light);\n\n\t\t&.profile-property {\n\t\t\theight: 38px;\n\t\t}\n\n\t\t&.setting-property {\n\t\t\theight: 32px;\n\t\t}\n\n\t\tlabel {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.federation-control {\n\t\tmargin: -12px 0 0 8px;\n\t}\n\n\t.button-vue {\n\t\tmargin: -6px 0 0 auto !important;\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!./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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!./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=19038f0c&scoped=true&\"\nimport script from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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 \"19038f0c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{class:{ 'setting-property': _vm.isSettingProperty, 'profile-property': _vm.isProfileProperty }},[_c('label',{attrs:{\"for\":_vm.labelFor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.accountProperty)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"account-property\":_vm.accountProperty,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('Button',{attrs:{\"type\":\"tertiary\",\"disabled\":!_vm.isValidSection,\"aria-label\":_vm.t('settings', 'Add additional email')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddAdditional.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}],null,false,32235154)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"displayname\"\n\t\t\t:is-editable=\"displayNameChangeSupported\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryDisplayName.scope\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<DisplayName :display-name.sync=\"primaryDisplayName.value\"\n\t\t\t\t:scope.sync=\"primaryDisplayName.scope\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryDisplayName.value || t('settings', 'No full name set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport DisplayName from './DisplayName'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { validateStringInput } from '../../../utils/validate'\n\nconst { displayNameMap: { primaryDisplayName } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'DisplayNameSection',\n\n\tcomponents: {\n\t\tDisplayName,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryDisplayName,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisValidSection() {\n\t\t\treturn validateStringInput(this.primaryDisplayName.value)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./DisplayNameSection.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!./DisplayNameSection.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!./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&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!./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DisplayNameSection.vue?vue&type=template&id=b8a748f4&scoped=true&\"\nimport script from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&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 \"b8a748f4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"displayname\",\"is-editable\":_vm.displayNameChangeSupported,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryDisplayName.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryDisplayName, \"scope\", $event)}}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('DisplayName',{attrs:{\"display-name\":_vm.primaryDisplayName.value,\"scope\":_vm.primaryDisplayName.scope},on:{\"update:displayName\":function($event){return _vm.$set(_vm.primaryDisplayName, \"value\", $event)},\"update:display-name\":function($event){return _vm.$set(_vm.primaryDisplayName, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryDisplayName, \"scope\", $event)}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryDisplayName.value || _vm.t('settings', 'No full name set'))+\"\\n\\t\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport { ACCOUNT_PROPERTY_ENUM, SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants'\n\n/**\n * Save the primary email of the user\n *\n * @param {string} email the primary email\n * @return {object}\n */\nexport const savePrimaryEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save an additional email of the user\n *\n * Will be appended to the user's additional emails*\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const saveAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the notification email of the user\n *\n * @param {string} email the notification email\n * @return {object}\n */\nexport const saveNotificationEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.NOTIFICATION_EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Remove an additional email of the user\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const removeAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: '',\n\t})\n\n\treturn res.data\n}\n\n/**\n * Update an additional email of the user\n *\n * @param {string} prevEmail the additional email to be updated\n * @param {string} newEmail the new additional email\n * @return {object}\n */\nexport const updateAdditionalEmail = async (prevEmail, newEmail) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: prevEmail,\n\t\tvalue: newEmail,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the primary email of the user\n *\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryEmailScope = async (scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${ACCOUNT_PROPERTY_ENUM.EMAIL}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the additional email of the user\n *\n * @param {string} email the additional email\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const saveAdditionalEmailScope = async (email, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collectionScope}', { userId, collectionScope: `${ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION}${SCOPE_SUFFIX}` })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div>\n\t\t<div class=\"email\">\n\t\t\t<input :id=\"inputId\"\n\t\t\t\tref=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t\t:value=\"email\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"on\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onEmailChange\">\n\n\t\t\t<div class=\"email__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t\t</transition>\n\n\t\t\t\t<template v-if=\"!primary\">\n\t\t\t\t\t<FederationControl :account-property=\"accountProperty\"\n\t\t\t\t\t\t:additional=\"true\"\n\t\t\t\t\t\t:additional-value=\"email\"\n\t\t\t\t\t\t:disabled=\"federationDisabled\"\n\t\t\t\t\t\t:handle-additional-scope-change=\"saveAdditionalEmailScope\"\n\t\t\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t\t\t</template>\n\n\t\t\t\t<Actions class=\"email__actions\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Email options')\"\n\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t:force-menu=\"true\">\n\t\t\t\t\t<ActionButton :aria-label=\"deleteEmailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click.stop.prevent=\"deleteEmail\">\n\t\t\t\t\t\t{{ deleteEmailLabel }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t\t<ActionButton v-if=\"!primary || !isNotificationEmail\"\n\t\t\t\t\t\t:aria-label=\"setNotificationMailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"setNotificationMailDisabled\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t@click.stop.prevent=\"setNotificationMail\">\n\t\t\t\t\t\t{{ setNotificationMailLabel }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</Actions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<em v-if=\"isNotificationEmail\">\n\t\t\t{{ t('settings', 'Primary email for password reset and notifications') }}\n\t\t</em>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport { showError } from '@nextcloud/dialogs'\nimport debounce from 'debounce'\n\nimport FederationControl from '../shared/FederationControl'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants'\nimport {\n\tremoveAdditionalEmail,\n\tsaveAdditionalEmail,\n\tsaveAdditionalEmailScope,\n\tsaveNotificationEmail,\n\tsavePrimaryEmail,\n\tupdateAdditionalEmail,\n} from '../../../service/PersonalInfo/EmailService'\nimport { validateEmail } from '../../../utils/validate'\n\nexport default {\n\tname: 'Email',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tFederationControl,\n\t},\n\n\tprops: {\n\t\temail: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactiveNotificationEmail: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tlocalVerificationState: {\n\t\t\ttype: Number,\n\t\t\tdefault: VERIFICATION_ENUM.NOT_VERIFIED,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tinitialEmail: this.email,\n\t\t\tlocalScope: this.scope,\n\t\t\tsaveAdditionalEmailScope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdeleteDisabled() {\n\t\t\tif (this.primary) {\n\t\t\t\t// Disable for empty primary email as there is nothing to delete\n\t\t\t\t// OR when initialEmail (reflects server state) and email (current input) are not the same\n\t\t\t\treturn this.email === '' || this.initialEmail !== this.email\n\t\t\t} else if (this.initialEmail !== '') {\n\t\t\t\treturn this.initialEmail !== this.email\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tdeleteEmailLabel() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Remove primary email')\n\t\t\t}\n\t\t\treturn t('settings', 'Delete email')\n\t\t},\n\n\t setNotificationMailDisabled() {\n\t\t\treturn !this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED\n\t\t},\n\n\t setNotificationMailLabel() {\n\t\t\tif (this.isNotificationEmail) {\n\t\t\t\treturn t('settings', 'Unset as primary email')\n\t\t\t} else if (!this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED) {\n\t\t\t\treturn t('settings', 'This address is not confirmed')\n\t\t\t}\n\t\t\treturn t('settings', 'Set as primary email')\n\t\t},\n\n\t\tfederationDisabled() {\n\t\t\treturn !this.initialEmail\n\t\t},\n\n\t\tinputId() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn 'email'\n\t\t\t}\n\t\t\treturn `email-${this.index}`\n\t\t},\n\n\t\tinputPlaceholder() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Your email address')\n\t\t\t}\n\t\t\treturn t('settings', 'Additional email address {index}', { index: this.index + 1 })\n\t\t},\n\n\t\tisNotificationEmail() {\n\t\t\treturn (this.email && this.email === this.activeNotificationEmail)\n\t\t\t\t|| (this.primary && this.activeNotificationEmail === '')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.primary && this.initialEmail === '') {\n\t\t\t// $nextTick is needed here, otherwise it may not always work https://stackoverflow.com/questions/51922767/autofocus-input-on-mount-vue-ios/63485725#63485725\n\t\t\tthis.$nextTick(() => this.$refs.email?.focus())\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEmailChange(e) {\n\t\t\tthis.$emit('update:email', e.target.value)\n\t\t\tthis.debounceEmailChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceEmailChange: debounce(async function(email) {\n\t\t\tif (validateEmail(email) || email === '') {\n\t\t\t\tif (this.primary) {\n\t\t\t\t\tawait this.updatePrimaryEmail(email)\n\t\t\t\t} else {\n\t\t\t\t\tif (email) {\n\t\t\t\t\t\tif (this.initialEmail === '') {\n\t\t\t\t\t\t\tawait this.addAdditionalEmail(email)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait this.updateAdditionalEmail(email)\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}, 500),\n\n\t\tasync deleteEmail() {\n\t\t\tif (this.primary) {\n\t\t\t\tthis.$emit('update:email', '')\n\t\t\t\tawait this.updatePrimaryEmail('')\n\t\t\t} else {\n\t\t\t\tawait this.deleteAdditionalEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (email === '') {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to delete primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to update primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync addAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveAdditionalEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to add additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync setNotificationMail() {\n\t\t try {\n\t\t\t const newNotificationMailValue = (this.primary || this.isNotificationEmail) ? '' : this.initialEmail\n\t\t\t const responseData = await saveNotificationEmail(newNotificationMailValue)\n\t\t\t this.handleResponse({\n\t\t\t\t notificationEmail: newNotificationMailValue,\n\t\t\t\t status: responseData.ocs?.meta?.status,\n\t\t\t })\n\t\t } catch (e) {\n\t\t\t this.handleResponse({\n\t\t\t\t errorMessage: 'Unable to choose this email for notifications',\n\t\t\t\t error: e,\n\t\t\t })\n\t\t }\n\t\t},\n\n\t\tasync updateAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await updateAdditionalEmail(this.initialEmail, email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync deleteAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.initialEmail)\n\t\t\t\tthis.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$emit('delete-additional-email')\n\t\t\t} else {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ email, notificationEmail, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tif (email) {\n\t\t\t\t\tthis.initialEmail = email\n\t\t\t\t} else if (notificationEmail !== undefined) {\n\t\t\t\t\tthis.$emit('update:notification-email', notificationEmail)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.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!./Email.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!./Email.vue?vue&type=style&index=0&id=2c097054&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!./Email.vue?vue&type=style&index=0&id=2c097054&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=2c097054&scoped=true&\"\nimport script from \"./Email.vue?vue&type=script&lang=js&\"\nexport * from \"./Email.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Email.vue?vue&type=style&index=0&id=2c097054&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 \"2c097054\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"email\"},[_c('input',{ref:\"email\",attrs:{\"id\":_vm.inputId,\"type\":\"email\",\"placeholder\":_vm.inputPlaceholder,\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.email},on:{\"input\":_vm.onEmailChange}}),_vm._v(\" \"),_c('div',{staticClass:\"email__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()]),_vm._v(\" \"),(!_vm.primary)?[_c('FederationControl',{attrs:{\"account-property\":_vm.accountProperty,\"additional\":true,\"additional-value\":_vm.email,\"disabled\":_vm.federationDisabled,\"handle-additional-scope-change\":_vm.saveAdditionalEmailScope,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),_c('Actions',{staticClass:\"email__actions\",attrs:{\"aria-label\":_vm.t('settings', 'Email options'),\"disabled\":_vm.deleteDisabled,\"force-menu\":true}},[_c('ActionButton',{attrs:{\"aria-label\":_vm.deleteEmailLabel,\"close-after-click\":true,\"disabled\":_vm.deleteDisabled,\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteEmail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.deleteEmailLabel)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.primary || !_vm.isNotificationEmail)?_c('ActionButton',{attrs:{\"aria-label\":_vm.setNotificationMailLabel,\"close-after-click\":true,\"disabled\":_vm.setNotificationMailDisabled,\"icon\":\"icon-favorite\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setNotificationMail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setNotificationMailLabel)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)],2)]),_vm._v(\" \"),(_vm.isNotificationEmail)?_c('em',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Primary email for password reset and notifications'))+\"\\n\\t\")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"email\"\n\t\t\t:handle-scope-change=\"savePrimaryEmailScope\"\n\t\t\t:is-editable=\"true\"\n\t\t\t:is-multi-value-supported=\"true\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t@add-additional=\"onAddAdditionalEmail\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<Email :primary=\"true\"\n\t\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t\t:email.sync=\"primaryEmail.value\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryEmail.value || t('settings', 'No email address set') }}\n\t\t</span>\n\n\t\t<template v-if=\"additionalEmails.length\">\n\t\t\t<em class=\"additional-emails-label\">{{ t('settings', 'Additional emails') }}</em>\n\t\t\t<Email v-for=\"(additionalEmail, index) in additionalEmails\"\n\t\t\t\t:key=\"index\"\n\t\t\t\t:index=\"index\"\n\t\t\t\t:scope.sync=\"additionalEmail.scope\"\n\t\t\t\t:email.sync=\"additionalEmail.value\"\n\t\t\t\t:local-verification-state=\"parseInt(additionalEmail.locallyVerified, 10)\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\"\n\t\t\t\t@delete-additional-email=\"onDeleteAdditionalEmail(index)\" />\n\t\t</template>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport Email from './Email'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService'\nimport { validateEmail } from '../../../utils/validate'\n\nconst { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'EmailSection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tEmail,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tadditionalEmails,\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryEmail,\n\t\t\tsavePrimaryEmailScope,\n\t\t\tnotificationEmail,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfirstAdditionalEmail() {\n\t\t\tif (this.additionalEmails.length) {\n\t\t\t\treturn this.additionalEmails[0].value\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tisValidSection() {\n\t\t\treturn validateEmail(this.primaryEmail.value)\n\t\t\t\t&& this.additionalEmails.map(({ value }) => value).every(validateEmail)\n\t\t},\n\n\t\tprimaryEmailValue: {\n\t\t\tget() {\n\t\t\t\treturn this.primaryEmail.value\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.primaryEmail.value = value\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditionalEmail() {\n\t\t\tif (this.isValidSection) {\n\t\t\t\tthis.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE })\n\t\t\t}\n\t\t},\n\n\t\tonDeleteAdditionalEmail(index) {\n\t\t\tthis.$delete(this.additionalEmails, index)\n\t\t},\n\n\t\tasync onUpdateEmail() {\n\t\t\tif (this.primaryEmailValue === '' && this.firstAdditionalEmail) {\n\t\t\t\tconst deletedEmail = this.firstAdditionalEmail\n\t\t\t\tawait this.deleteFirstAdditionalEmail()\n\t\t\t\tthis.primaryEmailValue = deletedEmail\n\t\t\t\tawait this.updatePrimaryEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync onUpdateNotificationEmail(email) {\n\t\t\tthis.notificationEmail = email\n\t\t},\n\n\t\tasync updatePrimaryEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(this.primaryEmailValue)\n\t\t\t\tthis.handleResponse(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to update primary email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\tasync deleteFirstAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.firstAdditionalEmail)\n\t\t\t\tthis.handleDeleteFirstAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteFirstAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$delete(this.additionalEmails, 0)\n\t\t\t} else {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleResponse(status, errorMessage, error) {\n\t\t\tif (status !== 'ok') {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\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!./EmailSection.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!./EmailSection.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!./EmailSection.vue?vue&type=style&index=0&id=845b669e&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!./EmailSection.vue?vue&type=style&index=0&id=845b669e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmailSection.vue?vue&type=template&id=845b669e&scoped=true&\"\nimport script from \"./EmailSection.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmailSection.vue?vue&type=style&index=0&id=845b669e&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 \"845b669e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"email\",\"handle-scope-change\":_vm.savePrimaryEmailScope,\"is-editable\":true,\"is-multi-value-supported\":true,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryEmail.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"add-additional\":_vm.onAddAdditionalEmail}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('Email',{attrs:{\"primary\":true,\"scope\":_vm.primaryEmail.scope,\"email\":_vm.primaryEmail.value,\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(_vm.primaryEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryEmail.value || _vm.t('settings', 'No email address set'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.additionalEmails.length)?[_c('em',{staticClass:\"additional-emails-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Additional emails')))]),_vm._v(\" \"),_vm._l((_vm.additionalEmails),function(additionalEmail,index){return _c('Email',{key:index,attrs:{\"index\":index,\"scope\":additionalEmail.scope,\"email\":additionalEmail.value,\"local-verification-state\":parseInt(additionalEmail.locallyVerified, 10),\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(additionalEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(additionalEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail,\"delete-additional-email\":function($event){return _vm.onDeleteAdditionalEmail(index)}}})})]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"language\">\n\t\t<select id=\"language\"\n\t\t\t:placeholder=\"t('settings', 'Language')\"\n\t\t\t@change=\"onLanguageChange\">\n\t\t\t<option v-for=\"commonLanguage in commonLanguages\"\n\t\t\t\t:key=\"commonLanguage.code\"\n\t\t\t\t:selected=\"language.code === commonLanguage.code\"\n\t\t\t\t:value=\"commonLanguage.code\">\n\t\t\t\t{{ commonLanguage.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"otherLanguage in otherLanguages\"\n\t\t\t\t:key=\"otherLanguage.code\"\n\t\t\t\t:selected=\"language.code === otherLanguage.code\"\n\t\t\t\t:value=\"otherLanguage.code\">\n\t\t\t\t{{ otherLanguage.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<a href=\"https://www.transifex.com/nextcloud/nextcloud/\"\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noreferrer noopener\">\n\t\t\t<em>{{ t('settings', 'Help translate') }}</em>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateLanguage } from '../../../utils/validate'\n\nexport default {\n\tname: 'Language',\n\n\tprops: {\n\t\tcommonLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguage: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLanguage: this.language,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLanguages() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.commonLanguages, ...this.otherLanguages]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync onLanguageChange(e) {\n\t\t\tconst language = this.constructLanguage(e.target.value)\n\t\t\tthis.$emit('update:language', language)\n\n\t\t\tif (validateLanguage(language)) {\n\t\t\t\tawait this.updateLanguage(language)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLanguage(language) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE, language.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlanguage,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update language'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLanguage(languageCode) {\n\t\t\treturn {\n\t\t\t\tcode: languageCode,\n\t\t\t\tname: this.allLanguages[languageCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ language, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialLanguage = language\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 6px 16px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\n\t\tfont-family: var(--font-face);\n\t\tappearance: none;\n\t\tcursor: pointer;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\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!./Language.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!./Language.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!./Language.vue?vue&type=style&index=0&id=5396d706&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!./Language.vue?vue&type=style&index=0&id=5396d706&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Language.vue?vue&type=template&id=5396d706&scoped=true&\"\nimport script from \"./Language.vue?vue&type=script&lang=js&\"\nexport * from \"./Language.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Language.vue?vue&type=style&index=0&id=5396d706&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 \"5396d706\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"language\"},[_c('select',{attrs:{\"id\":\"language\",\"placeholder\":_vm.t('settings', 'Language')},on:{\"change\":_vm.onLanguageChange}},[_vm._l((_vm.commonLanguages),function(commonLanguage){return _c('option',{key:commonLanguage.code,domProps:{\"selected\":_vm.language.code === commonLanguage.code,\"value\":commonLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(commonLanguage.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLanguages),function(otherLanguage){return _c('option',{key:otherLanguage.code,domProps:{\"selected\":_vm.language.code === otherLanguage.code,\"value\":otherLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(otherLanguage.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.transifex.com/nextcloud/nextcloud/\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Help translate')))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"language\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Language :common-languages=\"commonLanguages\"\n\t\t\t\t:other-languages=\"otherLanguages\"\n\t\t\t\t:language.sync=\"language\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No language set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Language from './Language'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LanguageSection',\n\n\tcomponents: {\n\t\tLanguage,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE,\n\t\t\tcommonLanguages,\n\t\t\totherLanguages,\n\t\t\tlanguage: activeLanguage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisEditable() {\n\t\t\treturn Boolean(this.language)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./LanguageSection.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!./LanguageSection.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!./LanguageSection.vue?vue&type=style&index=0&id=16883898&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!./LanguageSection.vue?vue&type=style&index=0&id=16883898&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LanguageSection.vue?vue&type=template&id=16883898&scoped=true&\"\nimport script from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSection.vue?vue&type=style&index=0&id=16883898&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 \"16883898\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"language\"}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Language',{attrs:{\"common-languages\":_vm.commonLanguages,\"other-languages\":_vm.otherLanguages,\"language\":_vm.language},on:{\"update:language\":function($event){_vm.language=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No language set'))+\"\\n\\t\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.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!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a :class=\"{ disabled }\"\n\t\thref=\"#profile-visibility\"\n\t\tv-on=\"$listeners\">\n\t\t<ChevronDownIcon class=\"anchor-icon\"\n\t\t\tdecorative\n\t\t\ttitle=\"\"\n\t\t\t:size=\"22\" />\n\t\t{{ t('settings', 'Edit your Profile visibility') }}\n\t</a>\n</template>\n\n<script>\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown'\n\nexport default {\n\tname: 'EditProfileAnchorLink',\n\n\tcomponents: {\n\t\tChevronDownIcon,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n</style>\n\n<style lang=\"scss\" scoped>\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\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!./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&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!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditProfileAnchorLink.vue?vue&type=template&id=73817e9f&scoped=true&\"\nimport script from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&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 \"73817e9f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',_vm._g({class:{ disabled: _vm.disabled },attrs:{\"href\":\"#profile-visibility\"}},_vm.$listeners),[_c('ChevronDownIcon',{staticClass:\"anchor-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":22}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Edit your Profile visibility'))+\"\\n\")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"checkbox-container\">\n\t\t<input id=\"enable-profile\"\n\t\t\tclass=\"checkbox\"\n\t\t\ttype=\"checkbox\"\n\t\t\t:checked=\"profileEnabled\"\n\t\t\t@change=\"onEnableProfileChange\">\n\t\t<label for=\"enable-profile\">\n\t\t\t{{ t('settings', 'Enable Profile') }}\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateBoolean } from '../../../utils/validate'\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\n\nexport default {\n\tname: 'ProfileCheckbox',\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialProfileEnabled: this.profileEnabled,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync onEnableProfileChange(e) {\n\t\t\tconst isEnabled = e.target.checked\n\t\t\tthis.$emit('update:profile-enabled', isEnabled)\n\n\t\t\tif (validateBoolean(isEnabled)) {\n\t\t\t\tawait this.updateEnableProfile(isEnabled)\n\t\t\t}\n\t\t},\n\n\t\tasync updateEnableProfile(isEnabled) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, isEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile enabled state'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialProfileEnabled = isEnabled\n\t\t\t\temit('settings:profile-enabled:updated', isEnabled)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.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!./ProfileCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileCheckbox.vue?vue&type=template&id=b6898860&scoped=true&\"\nimport script from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileCheckbox.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 \"b6898860\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"checkbox-container\"},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":\"enable-profile\",\"type\":\"checkbox\"},domProps:{\"checked\":_vm.profileEnabled},on:{\"change\":_vm.onEnableProfileChange}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"enable-profile\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable Profile'))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.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!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"preview-card\"\n\t\t:class=\"{ disabled }\"\n\t\t:href=\"profilePageLink\">\n\t\t<Avatar class=\"preview-card__avatar\"\n\t\t\t:user=\"userId\"\n\t\t\t:size=\"48\"\n\t\t\t:show-user-status=\"true\"\n\t\t\t:show-user-status-compact=\"false\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\" />\n\t\t<div class=\"preview-card__header\">\n\t\t\t<span>{{ displayName }}</span>\n\t\t</div>\n\t\t<div class=\"preview-card__footer\">\n\t\t\t<span>{{ organisation }}</span>\n\t\t</div>\n\t</a>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\n\nexport default {\n\tname: 'ProfilePreviewCard',\n\n\tcomponents: {\n\t\tAvatar,\n\t},\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button for better UX,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event (which disabling pointer-events wouldn't allow) for styling\n\t\t\treturn null\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tword-break: break-all;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\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!./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&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!./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfilePreviewCard.vue?vue&type=template&id=79bf7437&scoped=true&\"\nimport script from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&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 \"79bf7437\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"preview-card\",class:{ disabled: _vm.disabled },attrs:{\"href\":_vm.profilePageLink}},[_c('Avatar',{staticClass:\"preview-card__avatar\",attrs:{\"user\":_vm.userId,\"size\":48,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__header\"},[_c('span',[_vm._v(_vm._s(_vm.displayName))])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__footer\"},[_c('span',[_vm._v(_vm._s(_vm.organisation))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\" />\n\n\t\t<ProfileCheckbox :profile-enabled.sync=\"profileEnabled\" />\n\n\t\t<ProfilePreviewCard :organisation=\"organisation\"\n\t\t\t:display-name=\"displayName\"\n\t\t\t:profile-enabled=\"profileEnabled\"\n\t\t\t:user-id=\"userId\" />\n\n\t\t<EditProfileAnchorLink :profile-enabled=\"profileEnabled\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport EditProfileAnchorLink from './EditProfileAnchorLink'\nimport HeaderBar from '../shared/HeaderBar'\nimport ProfileCheckbox from './ProfileCheckbox'\nimport ProfilePreviewCard from './ProfilePreviewCard'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst {\n\torganisationMap: { primaryOrganisation: { value: organisation } },\n\tdisplayNameMap: { primaryDisplayName: { value: displayName } },\n\tprofileEnabled,\n\tuserId,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'ProfileSection',\n\n\tcomponents: {\n\t\tEditProfileAnchorLink,\n\t\tHeaderBar,\n\t\tProfileCheckbox,\n\t\tProfilePreviewCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t\t\torganisation,\n\t\t\tdisplayName,\n\t\t\tprofileEnabled,\n\t\t\tuserId,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleOrganisationUpdate(organisation) {\n\t\t\tthis.organisation = organisation\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./ProfileSection.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!./ProfileSection.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!./ProfileSection.vue?vue&type=style&index=0&id=252753e6&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!./ProfileSection.vue?vue&type=style&index=0&id=252753e6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileSection.vue?vue&type=template&id=252753e6&scoped=true&\"\nimport script from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileSection.vue?vue&type=style&index=0&id=252753e6&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 \"252753e6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty}}),_vm._v(\" \"),_c('ProfileCheckbox',{attrs:{\"profile-enabled\":_vm.profileEnabled},on:{\"update:profileEnabled\":function($event){_vm.profileEnabled=$event},\"update:profile-enabled\":function($event){_vm.profileEnabled=$event}}}),_vm._v(\" \"),_c('ProfilePreviewCard',{attrs:{\"organisation\":_vm.organisation,\"display-name\":_vm.displayName,\"profile-enabled\":_vm.profileEnabled,\"user-id\":_vm.userId}}),_vm._v(\" \"),_c('EditProfileAnchorLink',{attrs:{\"profile-enabled\":_vm.profileEnabled}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"organisation\">\n\t\t<input id=\"organisation\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your organisation')\"\n\t\t\t:value=\"organisation\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onOrganisationChange\">\n\n\t\t<div class=\"organisation__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Organisation',\n\n\tprops: {\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialOrganisation: this.organisation,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonOrganisationChange(e) {\n\t\t\tthis.$emit('update:organisation', e.target.value)\n\t\t\tthis.debounceOrganisationChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceOrganisationChange: debounce(async function(organisation) {\n\t\t\tawait this.updatePrimaryOrganisation(organisation)\n\t\t}, 500),\n\n\t\tasync updatePrimaryOrganisation(organisation) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ORGANISATION, organisation)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\torganisation,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update organisation'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ organisation, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialOrganisation = organisation\n\t\t\t\temit('settings:organisation:updated', organisation)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.organisation {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.organisation__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Organisation.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!./Organisation.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!./Organisation.vue?vue&type=style&index=0&id=591cd6b6&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!./Organisation.vue?vue&type=style&index=0&id=591cd6b6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Organisation.vue?vue&type=template&id=591cd6b6&scoped=true&\"\nimport script from \"./Organisation.vue?vue&type=script&lang=js&\"\nexport * from \"./Organisation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Organisation.vue?vue&type=style&index=0&id=591cd6b6&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 \"591cd6b6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"organisation\"},[_c('input',{attrs:{\"id\":\"organisation\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your organisation'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.organisation},on:{\"input\":_vm.onOrganisationChange}}),_vm._v(\" \"),_c('div',{staticClass:\"organisation__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"organisation\"\n\t\t\t:scope.sync=\"primaryOrganisation.scope\" />\n\n\t\t<Organisation :organisation.sync=\"primaryOrganisation.value\"\n\t\t\t:scope.sync=\"primaryOrganisation.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Organisation from './Organisation'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { organisationMap: { primaryOrganisation } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'OrganisationSection',\n\n\tcomponents: {\n\t\tOrganisation,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t\t\tprimaryOrganisation,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./OrganisationSection.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!./OrganisationSection.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!./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&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!./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./OrganisationSection.vue?vue&type=template&id=43146ff7&scoped=true&\"\nimport script from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&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 \"43146ff7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"organisation\",\"scope\":_vm.primaryOrganisation.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryOrganisation, \"scope\", $event)}}}),_vm._v(\" \"),_c('Organisation',{attrs:{\"organisation\":_vm.primaryOrganisation.value,\"scope\":_vm.primaryOrganisation.scope},on:{\"update:organisation\":function($event){return _vm.$set(_vm.primaryOrganisation, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryOrganisation, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"role\">\n\t\t<input id=\"role\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your role')\"\n\t\t\t:value=\"role\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onRoleChange\">\n\n\t\t<div class=\"role__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Role',\n\n\tprops: {\n\t\trole: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialRole: this.role,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonRoleChange(e) {\n\t\t\tthis.$emit('update:role', e.target.value)\n\t\t\tthis.debounceRoleChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceRoleChange: debounce(async function(role) {\n\t\t\tawait this.updatePrimaryRole(role)\n\t\t}, 500),\n\n\t\tasync updatePrimaryRole(role) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ROLE, role)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\trole,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update role'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ role, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialRole = role\n\t\t\t\temit('settings:role:updated', role)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.role {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.role__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Role.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!./Role.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!./Role.vue?vue&type=style&index=0&id=aac18396&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!./Role.vue?vue&type=style&index=0&id=aac18396&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Role.vue?vue&type=template&id=aac18396&scoped=true&\"\nimport script from \"./Role.vue?vue&type=script&lang=js&\"\nexport * from \"./Role.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Role.vue?vue&type=style&index=0&id=aac18396&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 \"aac18396\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"role\"},[_c('input',{attrs:{\"id\":\"role\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your role'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.role},on:{\"input\":_vm.onRoleChange}}),_vm._v(\" \"),_c('div',{staticClass:\"role__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"role\"\n\t\t\t:scope.sync=\"primaryRole.scope\" />\n\n\t\t<Role :role.sync=\"primaryRole.value\"\n\t\t\t:scope.sync=\"primaryRole.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Role from './Role'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { roleMap: { primaryRole } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'RoleSection',\n\n\tcomponents: {\n\t\tRole,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t\t\tprimaryRole,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./RoleSection.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!./RoleSection.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!./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&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!./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RoleSection.vue?vue&type=template&id=f3d959c2&scoped=true&\"\nimport script from \"./RoleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./RoleSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&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 \"f3d959c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"role\",\"scope\":_vm.primaryRole.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryRole, \"scope\", $event)}}}),_vm._v(\" \"),_c('Role',{attrs:{\"role\":_vm.primaryRole.value,\"scope\":_vm.primaryRole.scope},on:{\"update:role\":function($event){return _vm.$set(_vm.primaryRole, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryRole, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"headline\">\n\t\t<input id=\"headline\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your headline')\"\n\t\t\t:value=\"headline\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onHeadlineChange\">\n\n\t\t<div class=\"headline__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Headline',\n\n\tprops: {\n\t\theadline: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialHeadline: this.headline,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonHeadlineChange(e) {\n\t\t\tthis.$emit('update:headline', e.target.value)\n\t\t\tthis.debounceHeadlineChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceHeadlineChange: debounce(async function(headline) {\n\t\t\tawait this.updatePrimaryHeadline(headline)\n\t\t}, 500),\n\n\t\tasync updatePrimaryHeadline(headline) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.HEADLINE, headline)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\theadline,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update headline'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ headline, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialHeadline = headline\n\t\t\t\temit('settings:headline:updated', headline)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.headline {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.headline__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Headline.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!./Headline.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!./Headline.vue?vue&type=style&index=0&id=64e0e0bd&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!./Headline.vue?vue&type=style&index=0&id=64e0e0bd&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Headline.vue?vue&type=template&id=64e0e0bd&scoped=true&\"\nimport script from \"./Headline.vue?vue&type=script&lang=js&\"\nexport * from \"./Headline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Headline.vue?vue&type=style&index=0&id=64e0e0bd&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 \"64e0e0bd\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"headline\"},[_c('input',{attrs:{\"id\":\"headline\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your headline'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.headline},on:{\"input\":_vm.onHeadlineChange}}),_vm._v(\" \"),_c('div',{staticClass:\"headline__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"headline\"\n\t\t\t:scope.sync=\"primaryHeadline.scope\" />\n\n\t\t<Headline :headline.sync=\"primaryHeadline.value\"\n\t\t\t:scope.sync=\"primaryHeadline.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Headline from './Headline'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { headlineMap: { primaryHeadline } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'HeadlineSection',\n\n\tcomponents: {\n\t\tHeadline,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t\t\tprimaryHeadline,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./HeadlineSection.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!./HeadlineSection.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!./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&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!./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeadlineSection.vue?vue&type=template&id=187bb5da&scoped=true&\"\nimport script from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&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 \"187bb5da\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"headline\",\"scope\":_vm.primaryHeadline.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryHeadline, \"scope\", $event)}}}),_vm._v(\" \"),_c('Headline',{attrs:{\"headline\":_vm.primaryHeadline.value,\"scope\":_vm.primaryHeadline.scope},on:{\"update:headline\":function($event){return _vm.$set(_vm.primaryHeadline, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryHeadline, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"biography\">\n\t\t<textarea id=\"biography\"\n\t\t\t:placeholder=\"t('settings', 'Your biography')\"\n\t\t\t:value=\"biography\"\n\t\t\trows=\"8\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"off\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onBiographyChange\" />\n\n\t\t<div class=\"biography__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Biography',\n\n\tprops: {\n\t\tbiography: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialBiography: this.biography,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonBiographyChange(e) {\n\t\t\tthis.$emit('update:biography', e.target.value)\n\t\t\tthis.debounceBiographyChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceBiographyChange: debounce(async function(biography) {\n\t\t\tawait this.updatePrimaryBiography(biography)\n\t\t}, 500),\n\n\t\tasync updatePrimaryBiography(biography) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.BIOGRAPHY, biography)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tbiography,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update biography'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ biography, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialBiography = biography\n\t\t\t\temit('settings:biography:updated', biography)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.biography {\n\tdisplay: grid;\n\talign-items: center;\n\n\ttextarea {\n\t\tresize: vertical;\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: var(--color-primary-element) !important;\n\t\t\toutline: none !important;\n\t\t}\n\t}\n\n\t.biography__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\talign-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Biography.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!./Biography.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!./Biography.vue?vue&type=style&index=0&id=0fbf56a9&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!./Biography.vue?vue&type=style&index=0&id=0fbf56a9&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Biography.vue?vue&type=template&id=0fbf56a9&scoped=true&\"\nimport script from \"./Biography.vue?vue&type=script&lang=js&\"\nexport * from \"./Biography.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Biography.vue?vue&type=style&index=0&id=0fbf56a9&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 \"0fbf56a9\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"biography\"},[_c('textarea',{attrs:{\"id\":\"biography\",\"placeholder\":_vm.t('settings', 'Your biography'),\"rows\":\"8\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.biography},on:{\"input\":_vm.onBiographyChange}}),_vm._v(\" \"),_c('div',{staticClass:\"biography__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"biography\"\n\t\t\t:scope.sync=\"primaryBiography.scope\" />\n\n\t\t<Biography :biography.sync=\"primaryBiography.value\"\n\t\t\t:scope.sync=\"primaryBiography.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Biography from './Biography'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { biographyMap: { primaryBiography } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'BiographySection',\n\n\tcomponents: {\n\t\tBiography,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t\t\tprimaryBiography,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./BiographySection.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!./BiographySection.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!./BiographySection.vue?vue&type=style&index=0&id=cfa727da&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!./BiographySection.vue?vue&type=style&index=0&id=cfa727da&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BiographySection.vue?vue&type=template&id=cfa727da&scoped=true&\"\nimport script from \"./BiographySection.vue?vue&type=script&lang=js&\"\nexport * from \"./BiographySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BiographySection.vue?vue&type=style&index=0&id=cfa727da&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 \"cfa727da\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"biography\",\"scope\":_vm.primaryBiography.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryBiography, \"scope\", $event)}}}),_vm._v(\" \"),_c('Biography',{attrs:{\"biography\":_vm.primaryBiography.value,\"scope\":_vm.primaryBiography.scope},on:{\"update:biography\":function($event){return _vm.$set(_vm.primaryBiography, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryBiography, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `core/Db/ProfileConfig.php`\n */\n\n/** Enum of profile visibility constants */\nexport const VISIBILITY_ENUM = Object.freeze({\n\tSHOW: 'show',\n\tSHOW_USERS_ONLY: 'show_users_only',\n\tHIDE: 'hide',\n})\n\n/**\n * Enum of profile visibility constants to properties\n */\nexport const VISIBILITY_PROPERTY_ENUM = Object.freeze({\n\t[VISIBILITY_ENUM.SHOW]: {\n\t\tname: VISIBILITY_ENUM.SHOW,\n\t\tlabel: t('settings', 'Show to everyone'),\n\t},\n\t[VISIBILITY_ENUM.SHOW_USERS_ONLY]: {\n\t\tname: VISIBILITY_ENUM.SHOW_USERS_ONLY,\n\t\tlabel: t('settings', 'Show to logged in users only'),\n\t},\n\t[VISIBILITY_ENUM.HIDE]: {\n\t\tname: VISIBILITY_ENUM.HIDE,\n\t\tlabel: t('settings', 'Hide'),\n\t},\n})\n","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"visibility-container\"\n\t\t:class=\"{ disabled }\">\n\t\t<label :for=\"inputId\">\n\t\t\t{{ t('settings', '{displayId}', { displayId }) }}\n\t\t</label>\n\t\t<Multiselect :id=\"inputId\"\n\t\t\tclass=\"visibility-container__multiselect\"\n\t\t\t:options=\"visibilityOptions\"\n\t\t\ttrack-by=\"name\"\n\t\t\tlabel=\"label\"\n\t\t\t:value=\"visibilityObject\"\n\t\t\t@change=\"onVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport { saveProfileParameterVisibility } from '../../../service/ProfileService'\nimport { validateStringInput } from '../../../utils/validate'\nimport { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants'\n\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nexport default {\n\tname: 'VisibilityDropdown',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tprops: {\n\t\tparamId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialVisibility: this.visibility,\n\t\t\tprofileEnabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `profile-visibility-${this.paramId}`\n\t\t},\n\n\t\tvisibilityObject() {\n\t\t\treturn VISIBILITY_PROPERTY_ENUM[this.visibility]\n\t\t},\n\n\t\tvisibilityOptions() {\n\t\t\treturn Object.values(VISIBILITY_PROPERTY_ENUM)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\tasync onVisibilityChange(visibilityObject) {\n\t\t\t// This check is needed as the argument is null when selecting the same option\n\t\t\tif (visibilityObject !== null) {\n\t\t\t\tconst { name: visibility } = visibilityObject\n\t\t\t\tthis.$emit('update:visibility', visibility)\n\n\t\t\t\tif (validateStringInput(visibility)) {\n\t\t\t\t\tawait this.updateVisibility(visibility)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync updateVisibility(visibility) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileParameterVisibility(this.paramId, visibility)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvisibility,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update visibility of {displayId}', { displayId: this.displayId }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ visibility, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialVisibility = visibility\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__multiselect {\n\t\twidth: 260px;\n\t\tmax-width: 40vw;\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!./VisibilityDropdown.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!./VisibilityDropdown.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!./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&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!./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VisibilityDropdown.vue?vue&type=template&id=4643b0e2&scoped=true&\"\nimport script from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&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 \"4643b0e2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"visibility-container\",class:{ disabled: _vm.disabled }},[_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', '{displayId}', { displayId: _vm.displayId }))+\"\\n\\t\")]),_vm._v(\" \"),_c('Multiselect',{staticClass:\"visibility-container__multiselect\",attrs:{\"id\":_vm.inputId,\"options\":_vm.visibilityOptions,\"track-by\":\"name\",\"label\":\"label\",\"value\":_vm.visibilityObject},on:{\"change\":_vm.onVisibilityChange}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<!-- TODO remove this inline margin placeholder once the settings layout is updated -->\n\t<section id=\"profile-visibility\"\n\t\t:style=\"{ marginLeft }\">\n\t\t<HeaderBar :account-property=\"heading\" />\n\n\t\t<em :class=\"{ disabled }\">\n\t\t\t{{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.') }}\n\t\t</em>\n\n\t\t<div class=\"visibility-dropdowns\"\n\t\t\t:style=\"{\n\t\t\t\tgridTemplateRows: `repeat(${rows}, 44px)`,\n\t\t\t}\">\n\t\t\t<VisibilityDropdown v-for=\"param in visibilityParams\"\n\t\t\t\t:key=\"param.id\"\n\t\t\t\t:param-id=\"param.id\"\n\t\t\t\t:display-id=\"param.displayId\"\n\t\t\t\t:visibility.sync=\"param.visibility\" />\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport HeaderBar from '../shared/HeaderBar'\nimport VisibilityDropdown from './VisibilityDropdown'\nimport { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { profileConfig } = loadState('settings', 'profileParameters', {})\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nconst compareParams = (a, b) => {\n\tif (a.appId === b.appId || (a.appId !== 'core' && b.appId !== 'core')) {\n\t\treturn a.displayId.localeCompare(b.displayId)\n\t} else if (a.appId === 'core') {\n\t\treturn 1\n\t} else {\n\t\treturn -1\n\t}\n}\n\nexport default {\n\tname: 'ProfileVisibilitySection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tVisibilityDropdown,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theading: PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t\tprofileEnabled,\n\t\t\tvisibilityParams: Object.entries(profileConfig)\n\t\t\t\t.map(([paramId, { appId, displayId, visibility }]) => ({ id: paramId, appId, displayId, visibility }))\n\t\t\t\t.sort(compareParams),\n\t\t\t// TODO remove this when not used once the settings layout is updated\n\t\t\tmarginLeft: window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('personal-settings-avatar-container')).getPropertyValue('width').trim()\n\t\t\t\t: '0px',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\trows() {\n\t\t\treturn Math.ceil(this.visibilityParams.length / 2)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\t// TODO remove this when not used once the settings layout is updated\n\t\twindow.onresize = () => {\n\t\t\tthis.marginLeft = window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('personal-settings-avatar-container')).getPropertyValue('width').trim()\n\t\t\t\t: '0px'\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 30px;\n\tmax-width: 100vw;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\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!./ProfileVisibilitySection.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!./ProfileVisibilitySection.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!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&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!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileVisibilitySection.vue?vue&type=template&id=16df62f8&scoped=true&\"\nimport script from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&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 \"16df62f8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{style:({ marginLeft: _vm.marginLeft }),attrs:{\"id\":\"profile-visibility\"}},[_c('HeaderBar',{attrs:{\"account-property\":_vm.heading}}),_vm._v(\" \"),_c('em',{class:{ disabled: _vm.disabled }},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-dropdowns\",style:({\n\t\t\tgridTemplateRows: (\"repeat(\" + _vm.rows + \", 44px)\"),\n\t\t})},_vm._l((_vm.visibilityParams),function(param){return _c('VisibilityDropdown',{key:param.id,attrs:{\"param-id\":param.id,\"display-id\":param.displayId,\"visibility\":param.visibility},on:{\"update:visibility\":function($event){return _vm.$set(param, \"visibility\", $event)}}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nimport logger from './logger'\n\nimport DisplayNameSection from './components/PersonalInfo/DisplayNameSection/DisplayNameSection'\nimport EmailSection from './components/PersonalInfo/EmailSection/EmailSection'\nimport LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection'\nimport ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection'\nimport OrganisationSection from './components/PersonalInfo/OrganisationSection/OrganisationSection'\nimport RoleSection from './components/PersonalInfo/RoleSection/RoleSection'\nimport HeadlineSection from './components/PersonalInfo/HeadlineSection/HeadlineSection'\nimport BiographySection from './components/PersonalInfo/BiographySection/BiographySection'\nimport ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst DisplayNameView = Vue.extend(DisplayNameSection)\nconst EmailView = Vue.extend(EmailSection)\nconst LanguageView = Vue.extend(LanguageSection)\n\nnew DisplayNameView().$mount('#vue-displayname-section')\nnew EmailView().$mount('#vue-email-section')\nnew LanguageView().$mount('#vue-language-section')\n\nif (profileEnabledGlobally) {\n\tconst ProfileView = Vue.extend(ProfileSection)\n\tconst OrganisationView = Vue.extend(OrganisationSection)\n\tconst RoleView = Vue.extend(RoleSection)\n\tconst HeadlineView = Vue.extend(HeadlineSection)\n\tconst BiographyView = Vue.extend(BiographySection)\n\tconst ProfileVisibilityView = Vue.extend(ProfileVisibilitySection)\n\n\tnew ProfileView().$mount('#vue-profile-section')\n\tnew OrganisationView().$mount('#vue-organisation-section')\n\tnew RoleView().$mount('#vue-role-section')\n\tnew HeadlineView().$mount('#vue-headline-section')\n\tnew BiographyView().$mount('#vue-biography-section')\n\tnew ProfileVisibilityView().$mount('#vue-profile-visibility-section')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".biography[data-v-0fbf56a9]{display:grid;align-items:center}.biography textarea[data-v-0fbf56a9]{resize:vertical;grid-area:1/1;width:100%;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.biography textarea[data-v-0fbf56a9]:hover,.biography textarea[data-v-0fbf56a9]:focus,.biography textarea[data-v-0fbf56a9]:active{border-color:var(--color-primary-element) !important;outline:none !important}.biography .biography__actions-container[data-v-0fbf56a9]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}.biography .biography__actions-container .icon-checkmark[data-v-0fbf56a9],.biography .biography__actions-container .icon-error[data-v-0fbf56a9]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-0fbf56a9],.fade-leave-to[data-v-0fbf56a9]{opacity:0}.fade-enter-active[data-v-0fbf56a9]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-0fbf56a9]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue\"],\"names\":[],\"mappings\":\"AAyHA,4BACC,YAAA,CACA,kBAAA,CAEA,qCACC,eAAA,CACA,aAAA,CACA,UAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAEA,kIAGC,oDAAA,CACA,uBAAA,CAIF,0DACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAEA,gJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.biography {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\ttextarea {\\n\\t\\tresize: vertical;\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\tborder-color: var(--color-primary-element) !important;\\n\\t\\t\\toutline: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.biography__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\talign-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-cfa727da]{padding:10px 10px}section[data-v-cfa727da] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".displayname[data-v-3418897a]{display:grid;align-items:center}.displayname input[data-v-3418897a]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.displayname .displayname__actions-container[data-v-3418897a]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.displayname .displayname__actions-container .icon-checkmark[data-v-3418897a],.displayname .displayname__actions-container .icon-error[data-v-3418897a]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-3418897a],.fade-leave-to[data-v-3418897a]{opacity:0}.fade-enter-active[data-v-3418897a]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3418897a]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue\"],\"names\":[],\"mappings\":\"AA8HA,8BACC,YAAA,CACA,kBAAA,CAEA,oCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,8DACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,wJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.displayname {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.displayname__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-b8a748f4]{padding:10px 10px}section[data-v-b8a748f4] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue\"],\"names\":[],\"mappings\":\"AA8EA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".email[data-v-2c097054]{display:grid;align-items:center}.email input[data-v-2c097054]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.email .email__actions-container[data-v-2c097054]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-2c097054]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-2c097054]:hover,.email .email__actions-container .email__actions[data-v-2c097054]:focus,.email .email__actions-container .email__actions[data-v-2c097054]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-2c097054] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email .email__actions-container .icon-checkmark[data-v-2c097054],.email .email__actions-container .icon-error[data-v-2c097054]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-2c097054],.fade-leave-to[data-v-2c097054]{opacity:0}.fade-enter-active[data-v-2c097054]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-2c097054]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue\"],\"names\":[],\"mappings\":\"AAoWA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAIF,gIAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.email {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.email__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.email__actions {\\n\\t\\t\\topacity: 0.4 !important;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 0.8 !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::v-deep button {\\n\\t\\t\\t\\theight: 30px !important;\\n\\t\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\t\\twidth: 30px !important;\\n\\t\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-845b669e]{padding:10px 10px}section[data-v-845b669e] button:disabled{cursor:default}section .additional-emails-label[data-v-845b669e]{display:block;margin-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue\"],\"names\":[],\"mappings\":\"AA+LA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.additional-emails-label {\\n\\t\\tdisplay: block;\\n\\t\\tmargin-top: 16px;\\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, \".headline[data-v-64e0e0bd]{display:grid;align-items:center}.headline input[data-v-64e0e0bd]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.headline .headline__actions-container[data-v-64e0e0bd]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.headline .headline__actions-container .icon-checkmark[data-v-64e0e0bd],.headline .headline__actions-container .icon-error[data-v-64e0e0bd]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-64e0e0bd],.fade-leave-to[data-v-64e0e0bd]{opacity:0}.fade-enter-active[data-v-64e0e0bd]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-64e0e0bd]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue\"],\"names\":[],\"mappings\":\"AAyHA,2BACC,YAAA,CACA,kBAAA,CAEA,iCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,wDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4IAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.headline {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.headline__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-187bb5da]{padding:10px 10px}section[data-v-187bb5da] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".language[data-v-5396d706]{display:grid}.language select[data-v-5396d706]{width:100%;height:34px;margin:3px 3px 3px 0;padding:6px 16px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background:var(--icon-triangle-s-000) no-repeat right 4px center;font-family:var(--font-face);appearance:none;cursor:pointer}.language a[data-v-5396d706]{color:var(--color-main-text);text-decoration:none;width:max-content}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue\"],\"names\":[],\"mappings\":\"AA+IA,2BACC,YAAA,CAEA,kCACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,gBAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,gEAAA,CACA,4BAAA,CACA,eAAA,CACA,cAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.language {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 6px 16px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tappearance: none;\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\ttext-decoration: none;\\n\\t\\twidth: max-content;\\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, \"section[data-v-16883898]{padding:10px 10px}section[data-v-16883898] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue\"],\"names\":[],\"mappings\":\"AA2EA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".organisation[data-v-591cd6b6]{display:grid;align-items:center}.organisation input[data-v-591cd6b6]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.organisation .organisation__actions-container[data-v-591cd6b6]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.organisation .organisation__actions-container .icon-checkmark[data-v-591cd6b6],.organisation .organisation__actions-container .icon-error[data-v-591cd6b6]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-591cd6b6],.fade-leave-to[data-v-591cd6b6]{opacity:0}.fade-enter-active[data-v-591cd6b6]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-591cd6b6]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue\"],\"names\":[],\"mappings\":\"AAyHA,+BACC,YAAA,CACA,kBAAA,CAEA,qCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4JAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.organisation {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.organisation__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-43146ff7]{padding:10px 10px}section[data-v-43146ff7] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AA4DA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nhtml {\\n\\tscroll-behavior: smooth;\\n\\n\\t@media screen and (prefers-reduced-motion: reduce) {\\n\\t\\tscroll-behavior: auto;\\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, \"a[data-v-73817e9f]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-73817e9f]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-73817e9f]:hover,a[data-v-73817e9f]:focus,a[data-v-73817e9f]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-73817e9f]{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AAsEA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\na {\\n\\tdisplay: block;\\n\\theight: 44px;\\n\\twidth: 290px;\\n\\tline-height: 44px;\\n\\tpadding: 0 16px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-pill);\\n\\topacity: 0.4;\\n\\tbackground-color: transparent;\\n\\n\\t.anchor-icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-top: 6px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8;\\n\\t\\tbackground-color: rgba(127, 127, 127, .25);\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tpointer-events: none;\\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, \".preview-card[data-v-79bf7437]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:hover,.preview-card[data-v-79bf7437]:focus,.preview-card[data-v-79bf7437]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-79bf7437]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-79bf7437],.preview-card.disabled[data-v-79bf7437] *{cursor:default}.preview-card__avatar[data-v-79bf7437]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-79bf7437]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-79bf7437],.preview-card__footer[data-v-79bf7437]{position:relative;width:auto}.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-79bf7437]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0}.preview-card__header span[data-v-79bf7437]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-79bf7437]{height:46px}.preview-card__footer span[data-v-79bf7437]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue\"],\"names\":[],\"mappings\":\"AA6FA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.preview-card {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\twidth: 290px;\\n\\theight: 116px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-large);\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-weight: bold;\\n\\tbox-shadow: 0 2px 9px var(--color-box-shadow);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbox-shadow: 0 2px 12px var(--color-box-shadow);\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: var(--color-main-text) solid 1px;\\n\\t\\toutline-offset: 3px;\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tbox-shadow: 0 0 3px var(--color-box-shadow);\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t// Override Avatar component position to fix positioning on rerender\\n\\t\\tposition: absolute !important;\\n\\t\\ttop: 40px;\\n\\t\\tleft: 18px;\\n\\t\\tz-index: 1;\\n\\n\\t\\t&:not(.avatardiv--unknown) {\\n\\t\\t\\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 78px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tword-break: break-all;\\n\\n\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\theight: 70px;\\n\\t\\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\\n\\n\\t\\tspan {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: 0 4px 8px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\theight: 46px;\\n\\n\\t\\tspan {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 4px 4px 0 0;\\n\\t\\t\\tline-height: 1.3;\\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, \"section[data-v-252753e6]{padding:10px 10px}section[data-v-252753e6] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue\"],\"names\":[],\"mappings\":\"AAkGA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \"section[data-v-16df62f8]{padding:30px;max-width:100vw}section em[data-v-16df62f8]{display:block;margin:16px 0}section em.disabled[data-v-16df62f8]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-16df62f8],section em.disabled[data-v-16df62f8] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-16df62f8]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-16df62f8]{width:940px}section .visibility-dropdowns[data-v-16df62f8]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-16df62f8]{width:470px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue\"],\"names\":[],\"mappings\":\"AAyHA,yBACC,YAAA,CACA,eAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA3BD,yBA4BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BAnCD,yBAoCE,WAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 30px;\\n\\tmax-width: 100vw;\\n\\n\\tem {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 16px 0;\\n\\n\\t\\t&.disabled {\\n\\t\\t\\tfilter: grayscale(1);\\n\\t\\t\\topacity: 0.5;\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\t& *,\\n\\t\\t\\t&::v-deep * {\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.visibility-dropdowns {\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 10px 40px;\\n\\t}\\n\\n\\t@media (min-width: 1200px) {\\n\\t\\twidth: 940px;\\n\\n\\t\\t.visibility-dropdowns {\\n\\t\\t\\tgrid-auto-flow: column;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 1200px) {\\n\\t\\twidth: 470px;\\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, \".visibility-container[data-v-4643b0e2]{display:flex;width:max-content}.visibility-container.disabled[data-v-4643b0e2]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-4643b0e2],.visibility-container.disabled[data-v-4643b0e2] *{cursor:default;pointer-events:none}.visibility-container label[data-v-4643b0e2]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__multiselect[data-v-4643b0e2]{width:260px;max-width:40vw}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue\"],\"names\":[],\"mappings\":\"AAwJA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,oDACC,WAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.visibility-container {\\n\\tdisplay: flex;\\n\\twidth: max-content;\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\twidth: 150px;\\n\\t\\tline-height: 50px;\\n\\t}\\n\\n\\t&__multiselect {\\n\\t\\twidth: 260px;\\n\\t\\tmax-width: 40vw;\\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, \".role[data-v-aac18396]{display:grid;align-items:center}.role input[data-v-aac18396]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.role .role__actions-container[data-v-aac18396]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.role .role__actions-container .icon-checkmark[data-v-aac18396],.role .role__actions-container .icon-error[data-v-aac18396]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-aac18396],.fade-leave-to[data-v-aac18396]{opacity:0}.fade-enter-active[data-v-aac18396]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-aac18396]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue\"],\"names\":[],\"mappings\":\"AAyHA,uBACC,YAAA,CACA,kBAAA,CAEA,6BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4HAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.role {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.role__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-f3d959c2]{padding:10px 10px}section[data-v-f3d959c2] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".federation-actions[data-v-b51d8bee],.federation-actions--additional[data-v-b51d8bee]{opacity:.4 !important}.federation-actions[data-v-b51d8bee]:hover,.federation-actions[data-v-b51d8bee]:focus,.federation-actions[data-v-b51d8bee]:active,.federation-actions--additional[data-v-b51d8bee]:hover,.federation-actions--additional[data-v-b51d8bee]:focus,.federation-actions--additional[data-v-b51d8bee]:active{opacity:.8 !important}.federation-actions--additional[data-v-b51d8bee] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue\"],\"names\":[],\"mappings\":\"AAsLA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.federation-actions,\\n.federation-actions--additional {\\n\\topacity: 0.4 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8 !important;\\n\\t}\\n}\\n\\n.federation-actions--additional {\\n\\t&::v-deep button {\\n\\t\\t// TODO remove this hack\\n\\t\\tpadding-bottom: 7px;\\n\\t\\theight: 30px !important;\\n\\t\\tmin-height: 30px !important;\\n\\t\\twidth: 30px !important;\\n\\t\\tmin-width: 30px !important;\\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, \".federation-actions__btn[data-v-d2e8b360] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d2e8b360]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue\"],\"names\":[],\"mappings\":\"AA0FC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.federation-actions__btn {\\n\\t&::v-deep p {\\n\\t\\twidth: 150px !important;\\n\\t\\tpadding: 8px 0 !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\tfont-size: 12.8px !important;\\n\\t\\tline-height: 1.5em !important;\\n\\t}\\n}\\n\\n.federation-actions__btn--active {\\n\\tbackground-color: var(--color-primary-light) !important;\\n\\tbox-shadow: inset 2px 0 var(--color-primary) !important;\\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, \"h3[data-v-19038f0c]{display:inline-flex;width:100%;margin:12px 0 0 0;font-size:16px;color:var(--color-text-light)}h3.profile-property[data-v-19038f0c]{height:38px}h3.setting-property[data-v-19038f0c]{height:32px}h3 label[data-v-19038f0c]{cursor:pointer}.federation-control[data-v-19038f0c]{margin:-12px 0 0 8px}.button-vue[data-v-19038f0c]{margin:-6px 0 0 auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue\"],\"names\":[],\"mappings\":\"AA0HA,oBACC,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAEA,qCACC,WAAA,CAGD,qCACC,WAAA,CAGD,0BACC,cAAA,CAIF,qCACC,oBAAA,CAGD,6BACC,+BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nh3 {\\n\\tdisplay: inline-flex;\\n\\twidth: 100%;\\n\\tmargin: 12px 0 0 0;\\n\\tfont-size: 16px;\\n\\tcolor: var(--color-text-light);\\n\\n\\t&.profile-property {\\n\\t\\theight: 38px;\\n\\t}\\n\\n\\t&.setting-property {\\n\\t\\theight: 32px;\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n.federation-control {\\n\\tmargin: -12px 0 0 8px;\\n}\\n\\n.button-vue {\\n\\tmargin: -6px 0 0 auto !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4418;","__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\t4418: 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__(95979); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","PROFILE_READABLE_ENUM","PROFILE_VISIBILITY","PROPERTY_READABLE_KEYS_ENUM","ACCOUNT_SETTING_PROPERTY_ENUM","LANGUAGE","ACCOUNT_SETTING_PROPERTY_READABLE_ENUM","SCOPE_ENUM","PRIVATE","LOCAL","FEDERATED","PUBLISHED","PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM","UNPUBLISHED_READABLE_PROPERTIES","SCOPE_SUFFIX","SCOPE_PROPERTY_ENUM","name","displayName","tooltip","tooltipDisabled","iconClass","DEFAULT_ADDITIONAL_EMAIL_SCOPE","VERIFICATION_ENUM","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","VALIDATE_EMAIL_REGEX","savePrimaryAccountProperty","accountProperty","value","userId","getCurrentUser","uid","url","generateOcsUrl","confirmPassword","axios","key","res","data","savePrimaryAccountPropertyScope","scope","validateStringInput","input","validateEmail","test","slice","length","encodeURIComponent","replace","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","domProps","on","onDisplayNameChange","_v","_e","class","activeScope","isSupportedScope","$event","stopPropagation","preventDefault","updateScope","apply","arguments","_s","additional","ariaLabel","scopeIcon","disabled","_l","federationScope","changeScope","supportedScopes","includes","isSettingProperty","isProfileProperty","labelFor","localScope","onScopeChange","isEditable","isMultiValueSupported","isValidSection","onAddAdditional","scopedSlots","_u","fn","proxy","displayNameChangeSupported","primaryDisplayName","$set","savePrimaryEmail","email","saveAdditionalEmail","saveNotificationEmail","removeAdditionalEmail","collection","updateAdditionalEmail","prevEmail","newEmail","savePrimaryEmailScope","saveAdditionalEmailScope","collectionScope","ref","inputId","inputPlaceholder","onEmailChange","primary","federationDisabled","deleteDisabled","deleteEmailLabel","deleteEmail","isNotificationEmail","setNotificationMailLabel","setNotificationMailDisabled","setNotificationMail","primaryEmail","onAddAdditionalEmail","notificationEmail","onUpdateEmail","onUpdateNotificationEmail","additionalEmails","additionalEmail","index","parseInt","locallyVerified","onDeleteAdditionalEmail","code","undefined","onLanguageChange","commonLanguage","language","otherLanguage","commonLanguages","otherLanguages","_g","$listeners","profileEnabled","onEnableProfileChange","profilePageLink","organisation","onOrganisationChange","primaryOrganisation","role","onRoleChange","primaryRole","headline","onHeadlineChange","primaryHeadline","biography","onBiographyChange","primaryBiography","saveProfileParameterVisibility","paramId","visibility","VISIBILITY_ENUM","SHOW","SHOW_USERS_ONLY","HIDE","VISIBILITY_PROPERTY_ENUM","label","displayId","visibilityOptions","visibilityObject","onVisibilityChange","style","marginLeft","heading","gridTemplateRows","rows","param","id","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","loadState","Vue","props","logger","methods","DisplayNameView","DisplayNameSection","EmailView","EmailSection","LanguageView","LanguageSection","$mount","ProfileView","ProfileSection","OrganisationView","OrganisationSection","RoleView","RoleSection","HeadlineView","HeadlineSection","BiographyView","BiographySection","ProfileVisibilityView","ProfileVisibilitySection","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-personal-info.js?v=98ac8b07be7ed8292699","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/PersonalInfoService.js","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?d91e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?aebc","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=template&id=3418897a&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?ca95","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?90b5","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=template&id=d2e8b360&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?6304","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?e342","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=template&id=b51d8bee&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?6e55","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?feed","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=template&id=19038f0c&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?f577","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?f21f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=template&id=b8a748f4&scoped=true&","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/EmailService.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?3320","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?bd2c","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=template&id=49f8e937&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?dcf1","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?1258","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=template&id=32b8ad0a&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?1e5a","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?6358","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=template&id=5396d706&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?47a6","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?a350","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=template&id=16883898&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?a0a7","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?8473","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?7d4b","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=template&id=73817e9f&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?7612","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=template&id=b6898860&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?9ff5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?240c","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=template&id=79bf7437&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?6fa5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?c85f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=template&id=252753e6&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?e2cd","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?29db","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=template&id=591cd6b6&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?7527","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?647a","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=template&id=43146ff7&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?ce58","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?ec2b","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=template&id=aac18396&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?5af0","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?dc70","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=template&id=f3d959c2&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?1cf8","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?f7d1","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=template&id=64e0e0bd&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?d7b4","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?5bd2","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=template&id=187bb5da&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?8960","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?57fe","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=template&id=0fbf56a9&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?a1f3","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?e305","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=template&id=cfa727da&scoped=true&","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/ProfileConstants.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?6b1e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?c222","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=template&id=4643b0e2&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?d5ab","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?7729","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=template&id=16df62f8&scoped=true&","webpack:///nextcloud/apps/settings/src/main-personal-info.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=style&index=0&id=0fbf56a9&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=style&index=0&id=cfa727da&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=style&index=0&id=3418897a&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=style&index=0&id=49f8e937&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=style&index=0&id=32b8ad0a&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=style&index=0&id=64e0e0bd&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=style&index=0&id=5396d706&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=style&index=0&id=16883898&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=style&index=0&id=591cd6b6&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=style&index=0&id=252753e6&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=style&index=0&id=aac18396&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=style&index=0&id=f3d959c2&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=style&index=0&id=b51d8bee&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=style&index=0&id=19038f0c&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2020 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 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Address'),\n\tAVATAR: t('settings', 'Avatar'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport { SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants'\n\n/**\n * Save the primary account property value for the user\n *\n * @param {string} accountProperty the account property\n * @param {string|boolean} value the primary value\n * @return {object}\n */\nexport const savePrimaryAccountProperty = async (accountProperty, value) => {\n\t// TODO allow boolean values on backend route handler\n\t// Convert boolean to string for compatibility\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? '1' : '0'\n\t}\n\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: accountProperty,\n\t\tvalue,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope of the primary account property for the user\n *\n * @param {string} accountProperty the account property\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryAccountPropertyScope = async (accountProperty, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${accountProperty}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants'\n\n/**\n * Validate the string input\n *\n * Generic validator just to check that input is not an empty string*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateStringInput(input) {\n\treturn input !== ''\n}\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"displayname\">\n\t\t<input id=\"displayname\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your full name')\"\n\t\t\t:value=\"displayName\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onDisplayNameChange\">\n\n\t\t<div class=\"displayname__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateStringInput } from '../../../utils/validate'\n\n// TODO Global avatar updating on events (e.g. updating the displayname) is currently being handled by global js, investigate using https://github.com/nextcloud/nextcloud-event-bus for global avatar updating\n\nexport default {\n\tname: 'DisplayName',\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialDisplayName: this.displayName,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonDisplayNameChange(e) {\n\t\t\tthis.$emit('update:display-name', e.target.value)\n\t\t\tthis.debounceDisplayNameChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceDisplayNameChange: debounce(async function(displayName) {\n\t\t\tif (validateStringInput(displayName)) {\n\t\t\t\tawait this.updatePrimaryDisplayName(displayName)\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync updatePrimaryDisplayName(displayName) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.DISPLAYNAME, displayName)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tdisplayName,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update full name'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ displayName, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialDisplayName = displayName\n\t\t\t\temit('settings:display-name:updated', displayName)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.displayname {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.displayname__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayName.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!./DisplayName.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!./DisplayName.vue?vue&type=style&index=0&id=3418897a&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!./DisplayName.vue?vue&type=style&index=0&id=3418897a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DisplayName.vue?vue&type=template&id=3418897a&scoped=true&\"\nimport script from \"./DisplayName.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayName.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DisplayName.vue?vue&type=style&index=0&id=3418897a&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 \"3418897a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"displayname\"},[_c('input',{attrs:{\"id\":\"displayname\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your full name'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.displayName},on:{\"input\":_vm.onDisplayNameChange}}),_vm._v(\" \"),_c('div',{staticClass:\"displayname__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.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!./FederationControlAction.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<ActionButton :aria-label=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\tclass=\"federation-actions__btn\"\n\t\t:class=\"{ 'federation-actions__btn--active': activeScope === name }\"\n\t\t:close-after-click=\"true\"\n\t\t:disabled=\"!isSupportedScope\"\n\t\t:icon=\"iconClass\"\n\t\t:title=\"displayName\"\n\t\t@click.stop.prevent=\"updateScope\">\n\t\t{{ isSupportedScope ? tooltip : tooltipDisabled }}\n\t</ActionButton>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\n\nexport default {\n\tname: 'FederationControlAction',\n\n\tcomponents: {\n\t\tActionButton,\n\t},\n\n\tprops: {\n\t\tactiveScope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thandleScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisSupportedScope: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttooltipDisabled: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateScope() {\n\t\t\tthis.handleScopeChange(this.name)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions__btn {\n\t\t&::v-deep p {\n\t\t\twidth: 150px !important;\n\t\t\tpadding: 8px 0 !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t\tfont-size: 12.8px !important;\n\t\t\tline-height: 1.5em !important;\n\t\t}\n\t}\n\n\t.federation-actions__btn--active {\n\t\tbackground-color: var(--color-primary-light) !important;\n\t\tbox-shadow: inset 2px 0 var(--color-primary) !important;\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!./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&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!./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=d2e8b360&scoped=true&\"\nimport script from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&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 \"d2e8b360\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ActionButton',{staticClass:\"federation-actions__btn\",class:{ 'federation-actions__btn--active': _vm.activeScope === _vm.name },attrs:{\"aria-label\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled,\"close-after-click\":true,\"disabled\":!_vm.isSupportedScope,\"icon\":_vm.iconClass,\"title\":_vm.displayName},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.updateScope.apply(null, arguments)}}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<Actions :class=\"{ 'federation-actions': !additional, 'federation-actions--additional': additional }\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:default-icon=\"scopeIcon\"\n\t\t:disabled=\"disabled\">\n\t\t<FederationControlAction v-for=\"federationScope in federationScopes\"\n\t\t\t:key=\"federationScope.name\"\n\t\t\t:active-scope=\"scope\"\n\t\t\t:display-name=\"federationScope.displayName\"\n\t\t\t:handle-scope-change=\"changeScope\"\n\t\t\t:icon-class=\"federationScope.iconClass\"\n\t\t\t:is-supported-scope=\"supportedScopes.includes(federationScope.name)\"\n\t\t\t:name=\"federationScope.name\"\n\t\t\t:tooltip-disabled=\"federationScope.tooltipDisabled\"\n\t\t\t:tooltip=\"federationScope.tooltip\" />\n\t</Actions>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport FederationControlAction from './FederationControlAction'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tPROPERTY_READABLE_KEYS_ENUM,\n\tPROPERTY_READABLE_SUPPORTED_SCOPES_ENUM,\n\tSCOPE_ENUM, SCOPE_PROPERTY_ENUM,\n\tUNPUBLISHED_READABLE_PROPERTIES,\n} from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService'\n\nconst { lookupServerUploadEnabled } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'FederationControl',\n\n\tcomponents: {\n\t\tActions,\n\t\tFederationControlAction,\n\t},\n\n\tprops: {\n\t\taccountProperty: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value),\n\t\t},\n\t\tadditional: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tadditionalValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thandleAdditionalScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountPropertyLowerCase: this.accountProperty.toLocaleLowerCase(),\n\t\t\tinitialScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('settings', 'Change scope level of {accountProperty}', { accountProperty: this.accountPropertyLowerCase })\n\t\t},\n\n\t\tscopeIcon() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].iconClass\n\t\t},\n\n\t\tfederationScopes() {\n\t\t\treturn Object.values(SCOPE_PROPERTY_ENUM)\n\t\t},\n\n\t\tsupportedScopes() {\n\t\t\tif (lookupServerUploadEnabled && !UNPUBLISHED_READABLE_PROPERTIES.includes(this.accountProperty)) {\n\t\t\t\treturn [\n\t\t\t\t\t...PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty],\n\t\t\t\t\tSCOPE_ENUM.FEDERATED,\n\t\t\t\t\tSCOPE_ENUM.PUBLISHED,\n\t\t\t\t]\n\t\t\t}\n\n\t\t\treturn PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty]\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync changeScope(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\n\t\t\tif (!this.additional) {\n\t\t\t\tawait this.updatePrimaryScope(scope)\n\t\t\t} else {\n\t\t\t\tawait this.updateAdditionalScope(scope)\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.accountProperty], scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of the primary {accountProperty}', { accountProperty: this.accountPropertyLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync updateAdditionalScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await this.handleAdditionalScopeChange(this.additionalValue, scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of additional {accountProperty}', { accountProperty: this.accountPropertyLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ scope, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialScope = scope\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:scope', this.initialScope)\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions,\n\t.federation-actions--additional {\n\t\topacity: 0.4 !important;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: 0.8 !important;\n\t\t}\n\t}\n\n\t.federation-actions--additional {\n\t\t&::v-deep button {\n\t\t\t// TODO remove this hack\n\t\t\tpadding-bottom: 7px;\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\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!./FederationControl.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!./FederationControl.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!./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&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!./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=b51d8bee&scoped=true&\"\nimport script from \"./FederationControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&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 \"b51d8bee\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Actions',{class:{ 'federation-actions': !_vm.additional, 'federation-actions--additional': _vm.additional },attrs:{\"aria-label\":_vm.ariaLabel,\"default-icon\":_vm.scopeIcon,\"disabled\":_vm.disabled}},_vm._l((_vm.federationScopes),function(federationScope){return _c('FederationControlAction',{key:federationScope.name,attrs:{\"active-scope\":_vm.scope,\"display-name\":federationScope.displayName,\"handle-scope-change\":_vm.changeScope,\"icon-class\":federationScope.iconClass,\"is-supported-scope\":_vm.supportedScopes.includes(federationScope.name),\"name\":federationScope.name,\"tooltip-disabled\":federationScope.tooltipDisabled,\"tooltip\":federationScope.tooltip}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.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!./HeaderBar.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<h3 :class=\"{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }\">\n\t\t<label :for=\"labelFor\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ accountProperty }}\n\t\t</label>\n\n\t\t<template v-if=\"scope\">\n\t\t\t<FederationControl class=\"federation-control\"\n\t\t\t\t:account-property=\"accountProperty\"\n\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t</template>\n\n\t\t<template v-if=\"isEditable && isMultiValueSupported\">\n\t\t\t<Button type=\"tertiary\"\n\t\t\t\t:disabled=\"!isValidSection\"\n\t\t\t\t:aria-label=\"t('settings', 'Add additional email')\"\n\t\t\t\t@click.stop.prevent=\"onAddAdditional\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</Button>\n\t\t</template>\n\t</h3>\n</template>\n\n<script>\nimport FederationControl from './FederationControl'\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport Plus from 'vue-material-design-icons/Plus'\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM, PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nexport default {\n\tname: 'HeaderBar',\n\n\tcomponents: {\n\t\tFederationControl,\n\t\tButton,\n\t\tPlus,\n\t},\n\n\tprops: {\n\t\taccountProperty: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisMultiValueSupported: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisValidSection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tlabelFor: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProfileProperty() {\n\t\t\treturn this.accountProperty === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED\n\t\t},\n\n\t\tisSettingProperty() {\n\t\t\treturn Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(this.accountProperty)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditional() {\n\t\t\tthis.$emit('add-additional')\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\th3 {\n\t\tdisplay: inline-flex;\n\t\twidth: 100%;\n\t\tmargin: 12px 0 0 0;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text-light);\n\n\t\t&.profile-property {\n\t\t\theight: 38px;\n\t\t}\n\n\t\t&.setting-property {\n\t\t\theight: 32px;\n\t\t}\n\n\t\tlabel {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.federation-control {\n\t\tmargin: -12px 0 0 8px;\n\t}\n\n\t.button-vue {\n\t\tmargin: -6px 0 0 auto !important;\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!./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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!./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=19038f0c&scoped=true&\"\nimport script from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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 \"19038f0c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{class:{ 'setting-property': _vm.isSettingProperty, 'profile-property': _vm.isProfileProperty }},[_c('label',{attrs:{\"for\":_vm.labelFor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.accountProperty)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"account-property\":_vm.accountProperty,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('Button',{attrs:{\"type\":\"tertiary\",\"disabled\":!_vm.isValidSection,\"aria-label\":_vm.t('settings', 'Add additional email')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddAdditional.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}],null,false,32235154)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"displayname\"\n\t\t\t:is-editable=\"displayNameChangeSupported\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryDisplayName.scope\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<DisplayName :display-name.sync=\"primaryDisplayName.value\"\n\t\t\t\t:scope.sync=\"primaryDisplayName.scope\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryDisplayName.value || t('settings', 'No full name set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport DisplayName from './DisplayName'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { validateStringInput } from '../../../utils/validate'\n\nconst { displayNameMap: { primaryDisplayName } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'DisplayNameSection',\n\n\tcomponents: {\n\t\tDisplayName,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryDisplayName,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisValidSection() {\n\t\t\treturn validateStringInput(this.primaryDisplayName.value)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./DisplayNameSection.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!./DisplayNameSection.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!./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&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!./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DisplayNameSection.vue?vue&type=template&id=b8a748f4&scoped=true&\"\nimport script from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&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 \"b8a748f4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"displayname\",\"is-editable\":_vm.displayNameChangeSupported,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryDisplayName.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryDisplayName, \"scope\", $event)}}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('DisplayName',{attrs:{\"display-name\":_vm.primaryDisplayName.value,\"scope\":_vm.primaryDisplayName.scope},on:{\"update:displayName\":function($event){return _vm.$set(_vm.primaryDisplayName, \"value\", $event)},\"update:display-name\":function($event){return _vm.$set(_vm.primaryDisplayName, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryDisplayName, \"scope\", $event)}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryDisplayName.value || _vm.t('settings', 'No full name set'))+\"\\n\\t\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport { ACCOUNT_PROPERTY_ENUM, SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants'\n\n/**\n * Save the primary email of the user\n *\n * @param {string} email the primary email\n * @return {object}\n */\nexport const savePrimaryEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save an additional email of the user\n *\n * Will be appended to the user's additional emails*\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const saveAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the notification email of the user\n *\n * @param {string} email the notification email\n * @return {object}\n */\nexport const saveNotificationEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.NOTIFICATION_EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Remove an additional email of the user\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const removeAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: '',\n\t})\n\n\treturn res.data\n}\n\n/**\n * Update an additional email of the user\n *\n * @param {string} prevEmail the additional email to be updated\n * @param {string} newEmail the new additional email\n * @return {object}\n */\nexport const updateAdditionalEmail = async (prevEmail, newEmail) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: prevEmail,\n\t\tvalue: newEmail,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the primary email of the user\n *\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryEmailScope = async (scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${ACCOUNT_PROPERTY_ENUM.EMAIL}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the additional email of the user\n *\n * @param {string} email the additional email\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const saveAdditionalEmailScope = async (email, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collectionScope}', { userId, collectionScope: `${ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION}${SCOPE_SUFFIX}` })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div>\n\t\t<div class=\"email\">\n\t\t\t<input :id=\"inputId\"\n\t\t\t\tref=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t\t:value=\"email\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"on\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onEmailChange\">\n\n\t\t\t<div class=\"email__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t\t</transition>\n\n\t\t\t\t<template v-if=\"!primary\">\n\t\t\t\t\t<FederationControl :account-property=\"accountProperty\"\n\t\t\t\t\t\t:additional=\"true\"\n\t\t\t\t\t\t:additional-value=\"email\"\n\t\t\t\t\t\t:disabled=\"federationDisabled\"\n\t\t\t\t\t\t:handle-additional-scope-change=\"saveAdditionalEmailScope\"\n\t\t\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t\t\t</template>\n\n\t\t\t\t<Actions class=\"email__actions\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Email options')\"\n\t\t\t\t\t:force-menu=\"true\">\n\t\t\t\t\t<ActionButton :aria-label=\"deleteEmailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click.stop.prevent=\"deleteEmail\">\n\t\t\t\t\t\t{{ deleteEmailLabel }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t\t<ActionButton v-if=\"!primary || !isNotificationEmail\"\n\t\t\t\t\t\t:aria-label=\"setNotificationMailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"setNotificationMailDisabled\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t@click.stop.prevent=\"setNotificationMail\">\n\t\t\t\t\t\t{{ setNotificationMailLabel }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</Actions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<em v-if=\"isNotificationEmail\">\n\t\t\t{{ t('settings', 'Primary email for password reset and notifications') }}\n\t\t</em>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport { showError } from '@nextcloud/dialogs'\nimport debounce from 'debounce'\n\nimport FederationControl from '../shared/FederationControl'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants'\nimport {\n\tremoveAdditionalEmail,\n\tsaveAdditionalEmail,\n\tsaveAdditionalEmailScope,\n\tsaveNotificationEmail,\n\tsavePrimaryEmail,\n\tupdateAdditionalEmail,\n} from '../../../service/PersonalInfo/EmailService'\nimport { validateEmail } from '../../../utils/validate'\n\nexport default {\n\tname: 'Email',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tFederationControl,\n\t},\n\n\tprops: {\n\t\temail: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactiveNotificationEmail: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tlocalVerificationState: {\n\t\t\ttype: Number,\n\t\t\tdefault: VERIFICATION_ENUM.NOT_VERIFIED,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tinitialEmail: this.email,\n\t\t\tlocalScope: this.scope,\n\t\t\tsaveAdditionalEmailScope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdeleteDisabled() {\n\t\t\tif (this.primary) {\n\t\t\t\t// Disable for empty primary email as there is nothing to delete\n\t\t\t\t// OR when initialEmail (reflects server state) and email (current input) are not the same\n\t\t\t\treturn this.email === '' || this.initialEmail !== this.email\n\t\t\t} else if (this.initialEmail !== '') {\n\t\t\t\treturn this.initialEmail !== this.email\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tdeleteEmailLabel() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Remove primary email')\n\t\t\t}\n\t\t\treturn t('settings', 'Delete email')\n\t\t},\n\n\t setNotificationMailDisabled() {\n\t\t\treturn !this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED\n\t\t},\n\n\t setNotificationMailLabel() {\n\t\t\tif (this.isNotificationEmail) {\n\t\t\t\treturn t('settings', 'Unset as primary email')\n\t\t\t} else if (!this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED) {\n\t\t\t\treturn t('settings', 'This address is not confirmed')\n\t\t\t}\n\t\t\treturn t('settings', 'Set as primary email')\n\t\t},\n\n\t\tfederationDisabled() {\n\t\t\treturn !this.initialEmail\n\t\t},\n\n\t\tinputId() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn 'email'\n\t\t\t}\n\t\t\treturn `email-${this.index}`\n\t\t},\n\n\t\tinputPlaceholder() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Your email address')\n\t\t\t}\n\t\t\treturn t('settings', 'Additional email address {index}', { index: this.index + 1 })\n\t\t},\n\n\t\tisNotificationEmail() {\n\t\t\treturn (this.email && this.email === this.activeNotificationEmail)\n\t\t\t\t|| (this.primary && this.activeNotificationEmail === '')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.primary && this.initialEmail === '') {\n\t\t\t// $nextTick is needed here, otherwise it may not always work https://stackoverflow.com/questions/51922767/autofocus-input-on-mount-vue-ios/63485725#63485725\n\t\t\tthis.$nextTick(() => this.$refs.email?.focus())\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEmailChange(e) {\n\t\t\tthis.$emit('update:email', e.target.value)\n\t\t\tthis.debounceEmailChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceEmailChange: debounce(async function(email) {\n\t\t\tif (validateEmail(email) || email === '') {\n\t\t\t\tif (this.primary) {\n\t\t\t\t\tawait this.updatePrimaryEmail(email)\n\t\t\t\t} else {\n\t\t\t\t\tif (email) {\n\t\t\t\t\t\tif (this.initialEmail === '') {\n\t\t\t\t\t\t\tawait this.addAdditionalEmail(email)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait this.updateAdditionalEmail(email)\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}, 500),\n\n\t\tasync deleteEmail() {\n\t\t\tif (this.primary) {\n\t\t\t\tthis.$emit('update:email', '')\n\t\t\t\tawait this.updatePrimaryEmail('')\n\t\t\t} else {\n\t\t\t\tawait this.deleteAdditionalEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (email === '') {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to delete primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to update primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync addAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveAdditionalEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to add additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync setNotificationMail() {\n\t\t try {\n\t\t\t const newNotificationMailValue = (this.primary || this.isNotificationEmail) ? '' : this.initialEmail\n\t\t\t const responseData = await saveNotificationEmail(newNotificationMailValue)\n\t\t\t this.handleResponse({\n\t\t\t\t notificationEmail: newNotificationMailValue,\n\t\t\t\t status: responseData.ocs?.meta?.status,\n\t\t\t })\n\t\t } catch (e) {\n\t\t\t this.handleResponse({\n\t\t\t\t errorMessage: 'Unable to choose this email for notifications',\n\t\t\t\t error: e,\n\t\t\t })\n\t\t }\n\t\t},\n\n\t\tasync updateAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await updateAdditionalEmail(this.initialEmail, email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync deleteAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.initialEmail)\n\t\t\t\tthis.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$emit('delete-additional-email')\n\t\t\t} else {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ email, notificationEmail, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tif (email) {\n\t\t\t\t\tthis.initialEmail = email\n\t\t\t\t} else if (notificationEmail !== undefined) {\n\t\t\t\t\tthis.$emit('update:notification-email', notificationEmail)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.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!./Email.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!./Email.vue?vue&type=style&index=0&id=49f8e937&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!./Email.vue?vue&type=style&index=0&id=49f8e937&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=49f8e937&scoped=true&\"\nimport script from \"./Email.vue?vue&type=script&lang=js&\"\nexport * from \"./Email.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Email.vue?vue&type=style&index=0&id=49f8e937&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 \"49f8e937\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"email\"},[_c('input',{ref:\"email\",attrs:{\"id\":_vm.inputId,\"type\":\"email\",\"placeholder\":_vm.inputPlaceholder,\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.email},on:{\"input\":_vm.onEmailChange}}),_vm._v(\" \"),_c('div',{staticClass:\"email__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()]),_vm._v(\" \"),(!_vm.primary)?[_c('FederationControl',{attrs:{\"account-property\":_vm.accountProperty,\"additional\":true,\"additional-value\":_vm.email,\"disabled\":_vm.federationDisabled,\"handle-additional-scope-change\":_vm.saveAdditionalEmailScope,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),_c('Actions',{staticClass:\"email__actions\",attrs:{\"aria-label\":_vm.t('settings', 'Email options'),\"force-menu\":true}},[_c('ActionButton',{attrs:{\"aria-label\":_vm.deleteEmailLabel,\"close-after-click\":true,\"disabled\":_vm.deleteDisabled,\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteEmail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.deleteEmailLabel)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.primary || !_vm.isNotificationEmail)?_c('ActionButton',{attrs:{\"aria-label\":_vm.setNotificationMailLabel,\"close-after-click\":true,\"disabled\":_vm.setNotificationMailDisabled,\"icon\":\"icon-favorite\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setNotificationMail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setNotificationMailLabel)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)],2)]),_vm._v(\" \"),(_vm.isNotificationEmail)?_c('em',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Primary email for password reset and notifications'))+\"\\n\\t\")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"email\"\n\t\t\t:handle-scope-change=\"savePrimaryEmailScope\"\n\t\t\t:is-editable=\"true\"\n\t\t\t:is-multi-value-supported=\"true\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t@add-additional=\"onAddAdditionalEmail\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<Email :primary=\"true\"\n\t\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t\t:email.sync=\"primaryEmail.value\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryEmail.value || t('settings', 'No email address set') }}\n\t\t</span>\n\n\t\t<template v-if=\"additionalEmails.length\">\n\t\t\t<em class=\"additional-emails-label\">{{ t('settings', 'Additional emails') }}</em>\n\t\t\t<!-- TODO use unique key for additional email when uniqueness can be guaranteed, see https://github.com/nextcloud/server/issues/26866 -->\n\t\t\t<Email v-for=\"(additionalEmail, index) in additionalEmails\"\n\t\t\t\t:key=\"additionalEmail.key\"\n\t\t\t\t:index=\"index\"\n\t\t\t\t:scope.sync=\"additionalEmail.scope\"\n\t\t\t\t:email.sync=\"additionalEmail.value\"\n\t\t\t\t:local-verification-state=\"parseInt(additionalEmail.locallyVerified, 10)\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\"\n\t\t\t\t@delete-additional-email=\"onDeleteAdditionalEmail(index)\" />\n\t\t</template>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport Email from './Email'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService'\nimport { validateEmail } from '../../../utils/validate'\n\nconst { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'EmailSection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tEmail,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tadditionalEmails: additionalEmails.map(properties => ({ ...properties, key: this.generateUniqueKey() })),\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryEmail,\n\t\t\tsavePrimaryEmailScope,\n\t\t\tnotificationEmail,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfirstAdditionalEmail() {\n\t\t\tif (this.additionalEmails.length) {\n\t\t\t\treturn this.additionalEmails[0].value\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tisValidSection() {\n\t\t\treturn validateEmail(this.primaryEmail.value)\n\t\t\t\t&& this.additionalEmails.map(({ value }) => value).every(validateEmail)\n\t\t},\n\n\t\tprimaryEmailValue: {\n\t\t\tget() {\n\t\t\t\treturn this.primaryEmail.value\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.primaryEmail.value = value\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditionalEmail() {\n\t\t\tif (this.isValidSection) {\n\t\t\t\tthis.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE, key: this.generateUniqueKey() })\n\t\t\t}\n\t\t},\n\n\t\tonDeleteAdditionalEmail(index) {\n\t\t\tthis.$delete(this.additionalEmails, index)\n\t\t},\n\n\t\tasync onUpdateEmail() {\n\t\t\tif (this.primaryEmailValue === '' && this.firstAdditionalEmail) {\n\t\t\t\tconst deletedEmail = this.firstAdditionalEmail\n\t\t\t\tawait this.deleteFirstAdditionalEmail()\n\t\t\t\tthis.primaryEmailValue = deletedEmail\n\t\t\t\tawait this.updatePrimaryEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync onUpdateNotificationEmail(email) {\n\t\t\tthis.notificationEmail = email\n\t\t},\n\n\t\tasync updatePrimaryEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(this.primaryEmailValue)\n\t\t\t\tthis.handleResponse(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to update primary email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\tasync deleteFirstAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.firstAdditionalEmail)\n\t\t\t\tthis.handleDeleteFirstAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteFirstAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$delete(this.additionalEmails, 0)\n\t\t\t} else {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleResponse(status, errorMessage, error) {\n\t\t\tif (status !== 'ok') {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\tgenerateUniqueKey() {\n\t\t\treturn Math.random().toString(36).substring(2)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\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!./EmailSection.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!./EmailSection.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!./EmailSection.vue?vue&type=style&index=0&id=32b8ad0a&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!./EmailSection.vue?vue&type=style&index=0&id=32b8ad0a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmailSection.vue?vue&type=template&id=32b8ad0a&scoped=true&\"\nimport script from \"./EmailSection.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmailSection.vue?vue&type=style&index=0&id=32b8ad0a&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 \"32b8ad0a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"email\",\"handle-scope-change\":_vm.savePrimaryEmailScope,\"is-editable\":true,\"is-multi-value-supported\":true,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryEmail.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"add-additional\":_vm.onAddAdditionalEmail}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('Email',{attrs:{\"primary\":true,\"scope\":_vm.primaryEmail.scope,\"email\":_vm.primaryEmail.value,\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(_vm.primaryEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryEmail.value || _vm.t('settings', 'No email address set'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.additionalEmails.length)?[_c('em',{staticClass:\"additional-emails-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Additional emails')))]),_vm._v(\" \"),_vm._l((_vm.additionalEmails),function(additionalEmail,index){return _c('Email',{key:additionalEmail.key,attrs:{\"index\":index,\"scope\":additionalEmail.scope,\"email\":additionalEmail.value,\"local-verification-state\":parseInt(additionalEmail.locallyVerified, 10),\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(additionalEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(additionalEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail,\"delete-additional-email\":function($event){return _vm.onDeleteAdditionalEmail(index)}}})})]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"language\">\n\t\t<select id=\"language\"\n\t\t\t:placeholder=\"t('settings', 'Language')\"\n\t\t\t@change=\"onLanguageChange\">\n\t\t\t<option v-for=\"commonLanguage in commonLanguages\"\n\t\t\t\t:key=\"commonLanguage.code\"\n\t\t\t\t:selected=\"language.code === commonLanguage.code\"\n\t\t\t\t:value=\"commonLanguage.code\">\n\t\t\t\t{{ commonLanguage.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"otherLanguage in otherLanguages\"\n\t\t\t\t:key=\"otherLanguage.code\"\n\t\t\t\t:selected=\"language.code === otherLanguage.code\"\n\t\t\t\t:value=\"otherLanguage.code\">\n\t\t\t\t{{ otherLanguage.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<a href=\"https://www.transifex.com/nextcloud/nextcloud/\"\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noreferrer noopener\">\n\t\t\t<em>{{ t('settings', 'Help translate') }}</em>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateLanguage } from '../../../utils/validate'\n\nexport default {\n\tname: 'Language',\n\n\tprops: {\n\t\tcommonLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguage: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLanguage: this.language,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLanguages() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.commonLanguages, ...this.otherLanguages]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync onLanguageChange(e) {\n\t\t\tconst language = this.constructLanguage(e.target.value)\n\t\t\tthis.$emit('update:language', language)\n\n\t\t\tif (validateLanguage(language)) {\n\t\t\t\tawait this.updateLanguage(language)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLanguage(language) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE, language.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlanguage,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update language'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLanguage(languageCode) {\n\t\t\treturn {\n\t\t\t\tcode: languageCode,\n\t\t\t\tname: this.allLanguages[languageCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ language, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialLanguage = language\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 6px 16px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\n\t\tfont-family: var(--font-face);\n\t\tappearance: none;\n\t\tcursor: pointer;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\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!./Language.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!./Language.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!./Language.vue?vue&type=style&index=0&id=5396d706&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!./Language.vue?vue&type=style&index=0&id=5396d706&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Language.vue?vue&type=template&id=5396d706&scoped=true&\"\nimport script from \"./Language.vue?vue&type=script&lang=js&\"\nexport * from \"./Language.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Language.vue?vue&type=style&index=0&id=5396d706&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 \"5396d706\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"language\"},[_c('select',{attrs:{\"id\":\"language\",\"placeholder\":_vm.t('settings', 'Language')},on:{\"change\":_vm.onLanguageChange}},[_vm._l((_vm.commonLanguages),function(commonLanguage){return _c('option',{key:commonLanguage.code,domProps:{\"selected\":_vm.language.code === commonLanguage.code,\"value\":commonLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(commonLanguage.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLanguages),function(otherLanguage){return _c('option',{key:otherLanguage.code,domProps:{\"selected\":_vm.language.code === otherLanguage.code,\"value\":otherLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(otherLanguage.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.transifex.com/nextcloud/nextcloud/\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Help translate')))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"language\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Language :common-languages=\"commonLanguages\"\n\t\t\t\t:other-languages=\"otherLanguages\"\n\t\t\t\t:language.sync=\"language\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No language set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Language from './Language'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LanguageSection',\n\n\tcomponents: {\n\t\tLanguage,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE,\n\t\t\tcommonLanguages,\n\t\t\totherLanguages,\n\t\t\tlanguage: activeLanguage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisEditable() {\n\t\t\treturn Boolean(this.language)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./LanguageSection.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!./LanguageSection.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!./LanguageSection.vue?vue&type=style&index=0&id=16883898&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!./LanguageSection.vue?vue&type=style&index=0&id=16883898&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LanguageSection.vue?vue&type=template&id=16883898&scoped=true&\"\nimport script from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSection.vue?vue&type=style&index=0&id=16883898&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 \"16883898\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"language\"}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Language',{attrs:{\"common-languages\":_vm.commonLanguages,\"other-languages\":_vm.otherLanguages,\"language\":_vm.language},on:{\"update:language\":function($event){_vm.language=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No language set'))+\"\\n\\t\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.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!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a :class=\"{ disabled }\"\n\t\thref=\"#profile-visibility\"\n\t\tv-on=\"$listeners\">\n\t\t<ChevronDownIcon class=\"anchor-icon\"\n\t\t\tdecorative\n\t\t\ttitle=\"\"\n\t\t\t:size=\"22\" />\n\t\t{{ t('settings', 'Edit your Profile visibility') }}\n\t</a>\n</template>\n\n<script>\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown'\n\nexport default {\n\tname: 'EditProfileAnchorLink',\n\n\tcomponents: {\n\t\tChevronDownIcon,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n</style>\n\n<style lang=\"scss\" scoped>\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\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!./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&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!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditProfileAnchorLink.vue?vue&type=template&id=73817e9f&scoped=true&\"\nimport script from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&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 \"73817e9f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',_vm._g({class:{ disabled: _vm.disabled },attrs:{\"href\":\"#profile-visibility\"}},_vm.$listeners),[_c('ChevronDownIcon',{staticClass:\"anchor-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":22}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Edit your Profile visibility'))+\"\\n\")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"checkbox-container\">\n\t\t<input id=\"enable-profile\"\n\t\t\tclass=\"checkbox\"\n\t\t\ttype=\"checkbox\"\n\t\t\t:checked=\"profileEnabled\"\n\t\t\t@change=\"onEnableProfileChange\">\n\t\t<label for=\"enable-profile\">\n\t\t\t{{ t('settings', 'Enable Profile') }}\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateBoolean } from '../../../utils/validate'\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\n\nexport default {\n\tname: 'ProfileCheckbox',\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialProfileEnabled: this.profileEnabled,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync onEnableProfileChange(e) {\n\t\t\tconst isEnabled = e.target.checked\n\t\t\tthis.$emit('update:profile-enabled', isEnabled)\n\n\t\t\tif (validateBoolean(isEnabled)) {\n\t\t\t\tawait this.updateEnableProfile(isEnabled)\n\t\t\t}\n\t\t},\n\n\t\tasync updateEnableProfile(isEnabled) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, isEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile enabled state'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialProfileEnabled = isEnabled\n\t\t\t\temit('settings:profile-enabled:updated', isEnabled)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.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!./ProfileCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileCheckbox.vue?vue&type=template&id=b6898860&scoped=true&\"\nimport script from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileCheckbox.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 \"b6898860\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"checkbox-container\"},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":\"enable-profile\",\"type\":\"checkbox\"},domProps:{\"checked\":_vm.profileEnabled},on:{\"change\":_vm.onEnableProfileChange}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"enable-profile\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable Profile'))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.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!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"preview-card\"\n\t\t:class=\"{ disabled }\"\n\t\t:href=\"profilePageLink\">\n\t\t<Avatar class=\"preview-card__avatar\"\n\t\t\t:user=\"userId\"\n\t\t\t:size=\"48\"\n\t\t\t:show-user-status=\"true\"\n\t\t\t:show-user-status-compact=\"false\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\" />\n\t\t<div class=\"preview-card__header\">\n\t\t\t<span>{{ displayName }}</span>\n\t\t</div>\n\t\t<div class=\"preview-card__footer\">\n\t\t\t<span>{{ organisation }}</span>\n\t\t</div>\n\t</a>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\n\nexport default {\n\tname: 'ProfilePreviewCard',\n\n\tcomponents: {\n\t\tAvatar,\n\t},\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button for better UX,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event (which disabling pointer-events wouldn't allow) for styling\n\t\t\treturn null\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tword-break: break-all;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\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!./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&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!./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfilePreviewCard.vue?vue&type=template&id=79bf7437&scoped=true&\"\nimport script from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&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 \"79bf7437\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"preview-card\",class:{ disabled: _vm.disabled },attrs:{\"href\":_vm.profilePageLink}},[_c('Avatar',{staticClass:\"preview-card__avatar\",attrs:{\"user\":_vm.userId,\"size\":48,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__header\"},[_c('span',[_vm._v(_vm._s(_vm.displayName))])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__footer\"},[_c('span',[_vm._v(_vm._s(_vm.organisation))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\" />\n\n\t\t<ProfileCheckbox :profile-enabled.sync=\"profileEnabled\" />\n\n\t\t<ProfilePreviewCard :organisation=\"organisation\"\n\t\t\t:display-name=\"displayName\"\n\t\t\t:profile-enabled=\"profileEnabled\"\n\t\t\t:user-id=\"userId\" />\n\n\t\t<EditProfileAnchorLink :profile-enabled=\"profileEnabled\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport EditProfileAnchorLink from './EditProfileAnchorLink'\nimport HeaderBar from '../shared/HeaderBar'\nimport ProfileCheckbox from './ProfileCheckbox'\nimport ProfilePreviewCard from './ProfilePreviewCard'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst {\n\torganisationMap: { primaryOrganisation: { value: organisation } },\n\tdisplayNameMap: { primaryDisplayName: { value: displayName } },\n\tprofileEnabled,\n\tuserId,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'ProfileSection',\n\n\tcomponents: {\n\t\tEditProfileAnchorLink,\n\t\tHeaderBar,\n\t\tProfileCheckbox,\n\t\tProfilePreviewCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t\t\torganisation,\n\t\t\tdisplayName,\n\t\t\tprofileEnabled,\n\t\t\tuserId,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleOrganisationUpdate(organisation) {\n\t\t\tthis.organisation = organisation\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./ProfileSection.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!./ProfileSection.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!./ProfileSection.vue?vue&type=style&index=0&id=252753e6&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!./ProfileSection.vue?vue&type=style&index=0&id=252753e6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileSection.vue?vue&type=template&id=252753e6&scoped=true&\"\nimport script from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileSection.vue?vue&type=style&index=0&id=252753e6&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 \"252753e6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty}}),_vm._v(\" \"),_c('ProfileCheckbox',{attrs:{\"profile-enabled\":_vm.profileEnabled},on:{\"update:profileEnabled\":function($event){_vm.profileEnabled=$event},\"update:profile-enabled\":function($event){_vm.profileEnabled=$event}}}),_vm._v(\" \"),_c('ProfilePreviewCard',{attrs:{\"organisation\":_vm.organisation,\"display-name\":_vm.displayName,\"profile-enabled\":_vm.profileEnabled,\"user-id\":_vm.userId}}),_vm._v(\" \"),_c('EditProfileAnchorLink',{attrs:{\"profile-enabled\":_vm.profileEnabled}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"organisation\">\n\t\t<input id=\"organisation\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your organisation')\"\n\t\t\t:value=\"organisation\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onOrganisationChange\">\n\n\t\t<div class=\"organisation__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Organisation',\n\n\tprops: {\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialOrganisation: this.organisation,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonOrganisationChange(e) {\n\t\t\tthis.$emit('update:organisation', e.target.value)\n\t\t\tthis.debounceOrganisationChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceOrganisationChange: debounce(async function(organisation) {\n\t\t\tawait this.updatePrimaryOrganisation(organisation)\n\t\t}, 500),\n\n\t\tasync updatePrimaryOrganisation(organisation) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ORGANISATION, organisation)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\torganisation,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update organisation'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ organisation, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialOrganisation = organisation\n\t\t\t\temit('settings:organisation:updated', organisation)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.organisation {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.organisation__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Organisation.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!./Organisation.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!./Organisation.vue?vue&type=style&index=0&id=591cd6b6&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!./Organisation.vue?vue&type=style&index=0&id=591cd6b6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Organisation.vue?vue&type=template&id=591cd6b6&scoped=true&\"\nimport script from \"./Organisation.vue?vue&type=script&lang=js&\"\nexport * from \"./Organisation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Organisation.vue?vue&type=style&index=0&id=591cd6b6&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 \"591cd6b6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"organisation\"},[_c('input',{attrs:{\"id\":\"organisation\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your organisation'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.organisation},on:{\"input\":_vm.onOrganisationChange}}),_vm._v(\" \"),_c('div',{staticClass:\"organisation__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"organisation\"\n\t\t\t:scope.sync=\"primaryOrganisation.scope\" />\n\n\t\t<Organisation :organisation.sync=\"primaryOrganisation.value\"\n\t\t\t:scope.sync=\"primaryOrganisation.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Organisation from './Organisation'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { organisationMap: { primaryOrganisation } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'OrganisationSection',\n\n\tcomponents: {\n\t\tOrganisation,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t\t\tprimaryOrganisation,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./OrganisationSection.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!./OrganisationSection.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!./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&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!./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./OrganisationSection.vue?vue&type=template&id=43146ff7&scoped=true&\"\nimport script from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&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 \"43146ff7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"organisation\",\"scope\":_vm.primaryOrganisation.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryOrganisation, \"scope\", $event)}}}),_vm._v(\" \"),_c('Organisation',{attrs:{\"organisation\":_vm.primaryOrganisation.value,\"scope\":_vm.primaryOrganisation.scope},on:{\"update:organisation\":function($event){return _vm.$set(_vm.primaryOrganisation, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryOrganisation, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"role\">\n\t\t<input id=\"role\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your role')\"\n\t\t\t:value=\"role\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onRoleChange\">\n\n\t\t<div class=\"role__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Role',\n\n\tprops: {\n\t\trole: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialRole: this.role,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonRoleChange(e) {\n\t\t\tthis.$emit('update:role', e.target.value)\n\t\t\tthis.debounceRoleChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceRoleChange: debounce(async function(role) {\n\t\t\tawait this.updatePrimaryRole(role)\n\t\t}, 500),\n\n\t\tasync updatePrimaryRole(role) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ROLE, role)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\trole,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update role'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ role, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialRole = role\n\t\t\t\temit('settings:role:updated', role)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.role {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.role__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Role.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!./Role.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!./Role.vue?vue&type=style&index=0&id=aac18396&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!./Role.vue?vue&type=style&index=0&id=aac18396&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Role.vue?vue&type=template&id=aac18396&scoped=true&\"\nimport script from \"./Role.vue?vue&type=script&lang=js&\"\nexport * from \"./Role.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Role.vue?vue&type=style&index=0&id=aac18396&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 \"aac18396\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"role\"},[_c('input',{attrs:{\"id\":\"role\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your role'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.role},on:{\"input\":_vm.onRoleChange}}),_vm._v(\" \"),_c('div',{staticClass:\"role__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"role\"\n\t\t\t:scope.sync=\"primaryRole.scope\" />\n\n\t\t<Role :role.sync=\"primaryRole.value\"\n\t\t\t:scope.sync=\"primaryRole.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Role from './Role'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { roleMap: { primaryRole } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'RoleSection',\n\n\tcomponents: {\n\t\tRole,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t\t\tprimaryRole,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./RoleSection.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!./RoleSection.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!./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&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!./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RoleSection.vue?vue&type=template&id=f3d959c2&scoped=true&\"\nimport script from \"./RoleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./RoleSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&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 \"f3d959c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"role\",\"scope\":_vm.primaryRole.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryRole, \"scope\", $event)}}}),_vm._v(\" \"),_c('Role',{attrs:{\"role\":_vm.primaryRole.value,\"scope\":_vm.primaryRole.scope},on:{\"update:role\":function($event){return _vm.$set(_vm.primaryRole, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryRole, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"headline\">\n\t\t<input id=\"headline\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your headline')\"\n\t\t\t:value=\"headline\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onHeadlineChange\">\n\n\t\t<div class=\"headline__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Headline',\n\n\tprops: {\n\t\theadline: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialHeadline: this.headline,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonHeadlineChange(e) {\n\t\t\tthis.$emit('update:headline', e.target.value)\n\t\t\tthis.debounceHeadlineChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceHeadlineChange: debounce(async function(headline) {\n\t\t\tawait this.updatePrimaryHeadline(headline)\n\t\t}, 500),\n\n\t\tasync updatePrimaryHeadline(headline) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.HEADLINE, headline)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\theadline,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update headline'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ headline, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialHeadline = headline\n\t\t\t\temit('settings:headline:updated', headline)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.headline {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.headline__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Headline.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!./Headline.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!./Headline.vue?vue&type=style&index=0&id=64e0e0bd&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!./Headline.vue?vue&type=style&index=0&id=64e0e0bd&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Headline.vue?vue&type=template&id=64e0e0bd&scoped=true&\"\nimport script from \"./Headline.vue?vue&type=script&lang=js&\"\nexport * from \"./Headline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Headline.vue?vue&type=style&index=0&id=64e0e0bd&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 \"64e0e0bd\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"headline\"},[_c('input',{attrs:{\"id\":\"headline\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your headline'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.headline},on:{\"input\":_vm.onHeadlineChange}}),_vm._v(\" \"),_c('div',{staticClass:\"headline__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"headline\"\n\t\t\t:scope.sync=\"primaryHeadline.scope\" />\n\n\t\t<Headline :headline.sync=\"primaryHeadline.value\"\n\t\t\t:scope.sync=\"primaryHeadline.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Headline from './Headline'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { headlineMap: { primaryHeadline } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'HeadlineSection',\n\n\tcomponents: {\n\t\tHeadline,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t\t\tprimaryHeadline,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./HeadlineSection.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!./HeadlineSection.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!./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&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!./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeadlineSection.vue?vue&type=template&id=187bb5da&scoped=true&\"\nimport script from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&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 \"187bb5da\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"headline\",\"scope\":_vm.primaryHeadline.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryHeadline, \"scope\", $event)}}}),_vm._v(\" \"),_c('Headline',{attrs:{\"headline\":_vm.primaryHeadline.value,\"scope\":_vm.primaryHeadline.scope},on:{\"update:headline\":function($event){return _vm.$set(_vm.primaryHeadline, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryHeadline, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"biography\">\n\t\t<textarea id=\"biography\"\n\t\t\t:placeholder=\"t('settings', 'Your biography')\"\n\t\t\t:value=\"biography\"\n\t\t\trows=\"8\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"off\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onBiographyChange\" />\n\n\t\t<div class=\"biography__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Biography',\n\n\tprops: {\n\t\tbiography: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialBiography: this.biography,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonBiographyChange(e) {\n\t\t\tthis.$emit('update:biography', e.target.value)\n\t\t\tthis.debounceBiographyChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceBiographyChange: debounce(async function(biography) {\n\t\t\tawait this.updatePrimaryBiography(biography)\n\t\t}, 500),\n\n\t\tasync updatePrimaryBiography(biography) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.BIOGRAPHY, biography)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tbiography,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update biography'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ biography, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialBiography = biography\n\t\t\t\temit('settings:biography:updated', biography)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.biography {\n\tdisplay: grid;\n\talign-items: center;\n\n\ttextarea {\n\t\tresize: vertical;\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: var(--color-primary-element) !important;\n\t\t\toutline: none !important;\n\t\t}\n\t}\n\n\t.biography__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\talign-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Biography.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!./Biography.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!./Biography.vue?vue&type=style&index=0&id=0fbf56a9&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!./Biography.vue?vue&type=style&index=0&id=0fbf56a9&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Biography.vue?vue&type=template&id=0fbf56a9&scoped=true&\"\nimport script from \"./Biography.vue?vue&type=script&lang=js&\"\nexport * from \"./Biography.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Biography.vue?vue&type=style&index=0&id=0fbf56a9&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 \"0fbf56a9\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"biography\"},[_c('textarea',{attrs:{\"id\":\"biography\",\"placeholder\":_vm.t('settings', 'Your biography'),\"rows\":\"8\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.biography},on:{\"input\":_vm.onBiographyChange}}),_vm._v(\" \"),_c('div',{staticClass:\"biography__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"biography\"\n\t\t\t:scope.sync=\"primaryBiography.scope\" />\n\n\t\t<Biography :biography.sync=\"primaryBiography.value\"\n\t\t\t:scope.sync=\"primaryBiography.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Biography from './Biography'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { biographyMap: { primaryBiography } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'BiographySection',\n\n\tcomponents: {\n\t\tBiography,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t\t\tprimaryBiography,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\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!./BiographySection.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!./BiographySection.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!./BiographySection.vue?vue&type=style&index=0&id=cfa727da&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!./BiographySection.vue?vue&type=style&index=0&id=cfa727da&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BiographySection.vue?vue&type=template&id=cfa727da&scoped=true&\"\nimport script from \"./BiographySection.vue?vue&type=script&lang=js&\"\nexport * from \"./BiographySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BiographySection.vue?vue&type=style&index=0&id=cfa727da&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 \"cfa727da\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"biography\",\"scope\":_vm.primaryBiography.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryBiography, \"scope\", $event)}}}),_vm._v(\" \"),_c('Biography',{attrs:{\"biography\":_vm.primaryBiography.value,\"scope\":_vm.primaryBiography.scope},on:{\"update:biography\":function($event){return _vm.$set(_vm.primaryBiography, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryBiography, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `core/Db/ProfileConfig.php`\n */\n\n/** Enum of profile visibility constants */\nexport const VISIBILITY_ENUM = Object.freeze({\n\tSHOW: 'show',\n\tSHOW_USERS_ONLY: 'show_users_only',\n\tHIDE: 'hide',\n})\n\n/**\n * Enum of profile visibility constants to properties\n */\nexport const VISIBILITY_PROPERTY_ENUM = Object.freeze({\n\t[VISIBILITY_ENUM.SHOW]: {\n\t\tname: VISIBILITY_ENUM.SHOW,\n\t\tlabel: t('settings', 'Show to everyone'),\n\t},\n\t[VISIBILITY_ENUM.SHOW_USERS_ONLY]: {\n\t\tname: VISIBILITY_ENUM.SHOW_USERS_ONLY,\n\t\tlabel: t('settings', 'Show to logged in users only'),\n\t},\n\t[VISIBILITY_ENUM.HIDE]: {\n\t\tname: VISIBILITY_ENUM.HIDE,\n\t\tlabel: t('settings', 'Hide'),\n\t},\n})\n","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"visibility-container\"\n\t\t:class=\"{ disabled }\">\n\t\t<label :for=\"inputId\">\n\t\t\t{{ t('settings', '{displayId}', { displayId }) }}\n\t\t</label>\n\t\t<Multiselect :id=\"inputId\"\n\t\t\tclass=\"visibility-container__multiselect\"\n\t\t\t:options=\"visibilityOptions\"\n\t\t\ttrack-by=\"name\"\n\t\t\tlabel=\"label\"\n\t\t\t:value=\"visibilityObject\"\n\t\t\t@change=\"onVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport { saveProfileParameterVisibility } from '../../../service/ProfileService'\nimport { validateStringInput } from '../../../utils/validate'\nimport { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants'\n\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nexport default {\n\tname: 'VisibilityDropdown',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tprops: {\n\t\tparamId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialVisibility: this.visibility,\n\t\t\tprofileEnabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `profile-visibility-${this.paramId}`\n\t\t},\n\n\t\tvisibilityObject() {\n\t\t\treturn VISIBILITY_PROPERTY_ENUM[this.visibility]\n\t\t},\n\n\t\tvisibilityOptions() {\n\t\t\treturn Object.values(VISIBILITY_PROPERTY_ENUM)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\tasync onVisibilityChange(visibilityObject) {\n\t\t\t// This check is needed as the argument is null when selecting the same option\n\t\t\tif (visibilityObject !== null) {\n\t\t\t\tconst { name: visibility } = visibilityObject\n\t\t\t\tthis.$emit('update:visibility', visibility)\n\n\t\t\t\tif (validateStringInput(visibility)) {\n\t\t\t\t\tawait this.updateVisibility(visibility)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync updateVisibility(visibility) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileParameterVisibility(this.paramId, visibility)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvisibility,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update visibility of {displayId}', { displayId: this.displayId }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ visibility, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialVisibility = visibility\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__multiselect {\n\t\twidth: 260px;\n\t\tmax-width: 40vw;\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!./VisibilityDropdown.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!./VisibilityDropdown.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!./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&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!./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VisibilityDropdown.vue?vue&type=template&id=4643b0e2&scoped=true&\"\nimport script from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&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 \"4643b0e2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"visibility-container\",class:{ disabled: _vm.disabled }},[_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', '{displayId}', { displayId: _vm.displayId }))+\"\\n\\t\")]),_vm._v(\" \"),_c('Multiselect',{staticClass:\"visibility-container__multiselect\",attrs:{\"id\":_vm.inputId,\"options\":_vm.visibilityOptions,\"track-by\":\"name\",\"label\":\"label\",\"value\":_vm.visibilityObject},on:{\"change\":_vm.onVisibilityChange}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<!-- TODO remove this inline margin placeholder once the settings layout is updated -->\n\t<section id=\"profile-visibility\"\n\t\t:style=\"{ marginLeft }\">\n\t\t<HeaderBar :account-property=\"heading\" />\n\n\t\t<em :class=\"{ disabled }\">\n\t\t\t{{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.') }}\n\t\t</em>\n\n\t\t<div class=\"visibility-dropdowns\"\n\t\t\t:style=\"{\n\t\t\t\tgridTemplateRows: `repeat(${rows}, 44px)`,\n\t\t\t}\">\n\t\t\t<VisibilityDropdown v-for=\"param in visibilityParams\"\n\t\t\t\t:key=\"param.id\"\n\t\t\t\t:param-id=\"param.id\"\n\t\t\t\t:display-id=\"param.displayId\"\n\t\t\t\t:visibility.sync=\"param.visibility\" />\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport HeaderBar from '../shared/HeaderBar'\nimport VisibilityDropdown from './VisibilityDropdown'\nimport { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { profileConfig } = loadState('settings', 'profileParameters', {})\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nconst compareParams = (a, b) => {\n\tif (a.appId === b.appId || (a.appId !== 'core' && b.appId !== 'core')) {\n\t\treturn a.displayId.localeCompare(b.displayId)\n\t} else if (a.appId === 'core') {\n\t\treturn 1\n\t} else {\n\t\treturn -1\n\t}\n}\n\nexport default {\n\tname: 'ProfileVisibilitySection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tVisibilityDropdown,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theading: PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t\tprofileEnabled,\n\t\t\tvisibilityParams: Object.entries(profileConfig)\n\t\t\t\t.map(([paramId, { appId, displayId, visibility }]) => ({ id: paramId, appId, displayId, visibility }))\n\t\t\t\t.sort(compareParams),\n\t\t\t// TODO remove this when not used once the settings layout is updated\n\t\t\tmarginLeft: window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('personal-settings-avatar-container')).getPropertyValue('width').trim()\n\t\t\t\t: '0px',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\trows() {\n\t\t\treturn Math.ceil(this.visibilityParams.length / 2)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\t// TODO remove this when not used once the settings layout is updated\n\t\twindow.onresize = () => {\n\t\t\tthis.marginLeft = window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('personal-settings-avatar-container')).getPropertyValue('width').trim()\n\t\t\t\t: '0px'\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 30px;\n\tmax-width: 100vw;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\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!./ProfileVisibilitySection.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!./ProfileVisibilitySection.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!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&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!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileVisibilitySection.vue?vue&type=template&id=16df62f8&scoped=true&\"\nimport script from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&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 \"16df62f8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{style:({ marginLeft: _vm.marginLeft }),attrs:{\"id\":\"profile-visibility\"}},[_c('HeaderBar',{attrs:{\"account-property\":_vm.heading}}),_vm._v(\" \"),_c('em',{class:{ disabled: _vm.disabled }},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-dropdowns\",style:({\n\t\t\tgridTemplateRows: (\"repeat(\" + _vm.rows + \", 44px)\"),\n\t\t})},_vm._l((_vm.visibilityParams),function(param){return _c('VisibilityDropdown',{key:param.id,attrs:{\"param-id\":param.id,\"display-id\":param.displayId,\"visibility\":param.visibility},on:{\"update:visibility\":function($event){return _vm.$set(param, \"visibility\", $event)}}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nimport logger from './logger'\n\nimport DisplayNameSection from './components/PersonalInfo/DisplayNameSection/DisplayNameSection'\nimport EmailSection from './components/PersonalInfo/EmailSection/EmailSection'\nimport LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection'\nimport ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection'\nimport OrganisationSection from './components/PersonalInfo/OrganisationSection/OrganisationSection'\nimport RoleSection from './components/PersonalInfo/RoleSection/RoleSection'\nimport HeadlineSection from './components/PersonalInfo/HeadlineSection/HeadlineSection'\nimport BiographySection from './components/PersonalInfo/BiographySection/BiographySection'\nimport ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst DisplayNameView = Vue.extend(DisplayNameSection)\nconst EmailView = Vue.extend(EmailSection)\nconst LanguageView = Vue.extend(LanguageSection)\n\nnew DisplayNameView().$mount('#vue-displayname-section')\nnew EmailView().$mount('#vue-email-section')\nnew LanguageView().$mount('#vue-language-section')\n\nif (profileEnabledGlobally) {\n\tconst ProfileView = Vue.extend(ProfileSection)\n\tconst OrganisationView = Vue.extend(OrganisationSection)\n\tconst RoleView = Vue.extend(RoleSection)\n\tconst HeadlineView = Vue.extend(HeadlineSection)\n\tconst BiographyView = Vue.extend(BiographySection)\n\tconst ProfileVisibilityView = Vue.extend(ProfileVisibilitySection)\n\n\tnew ProfileView().$mount('#vue-profile-section')\n\tnew OrganisationView().$mount('#vue-organisation-section')\n\tnew RoleView().$mount('#vue-role-section')\n\tnew HeadlineView().$mount('#vue-headline-section')\n\tnew BiographyView().$mount('#vue-biography-section')\n\tnew ProfileVisibilityView().$mount('#vue-profile-visibility-section')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".biography[data-v-0fbf56a9]{display:grid;align-items:center}.biography textarea[data-v-0fbf56a9]{resize:vertical;grid-area:1/1;width:100%;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.biography textarea[data-v-0fbf56a9]:hover,.biography textarea[data-v-0fbf56a9]:focus,.biography textarea[data-v-0fbf56a9]:active{border-color:var(--color-primary-element) !important;outline:none !important}.biography .biography__actions-container[data-v-0fbf56a9]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}.biography .biography__actions-container .icon-checkmark[data-v-0fbf56a9],.biography .biography__actions-container .icon-error[data-v-0fbf56a9]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-0fbf56a9],.fade-leave-to[data-v-0fbf56a9]{opacity:0}.fade-enter-active[data-v-0fbf56a9]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-0fbf56a9]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue\"],\"names\":[],\"mappings\":\"AAyHA,4BACC,YAAA,CACA,kBAAA,CAEA,qCACC,eAAA,CACA,aAAA,CACA,UAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAEA,kIAGC,oDAAA,CACA,uBAAA,CAIF,0DACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAEA,gJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.biography {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\ttextarea {\\n\\t\\tresize: vertical;\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\tborder-color: var(--color-primary-element) !important;\\n\\t\\t\\toutline: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.biography__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\talign-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-cfa727da]{padding:10px 10px}section[data-v-cfa727da] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".displayname[data-v-3418897a]{display:grid;align-items:center}.displayname input[data-v-3418897a]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.displayname .displayname__actions-container[data-v-3418897a]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.displayname .displayname__actions-container .icon-checkmark[data-v-3418897a],.displayname .displayname__actions-container .icon-error[data-v-3418897a]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-3418897a],.fade-leave-to[data-v-3418897a]{opacity:0}.fade-enter-active[data-v-3418897a]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3418897a]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue\"],\"names\":[],\"mappings\":\"AA8HA,8BACC,YAAA,CACA,kBAAA,CAEA,oCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,8DACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,wJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.displayname {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.displayname__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-b8a748f4]{padding:10px 10px}section[data-v-b8a748f4] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue\"],\"names\":[],\"mappings\":\"AA8EA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".email[data-v-49f8e937]{display:grid;align-items:center}.email input[data-v-49f8e937]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.email .email__actions-container[data-v-49f8e937]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-49f8e937]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-49f8e937]:hover,.email .email__actions-container .email__actions[data-v-49f8e937]:focus,.email .email__actions-container .email__actions[data-v-49f8e937]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-49f8e937] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email .email__actions-container .icon-checkmark[data-v-49f8e937],.email .email__actions-container .icon-error[data-v-49f8e937]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-49f8e937],.fade-leave-to[data-v-49f8e937]{opacity:0}.fade-enter-active[data-v-49f8e937]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-49f8e937]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue\"],\"names\":[],\"mappings\":\"AAmWA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAIF,gIAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.email {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.email__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.email__actions {\\n\\t\\t\\topacity: 0.4 !important;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 0.8 !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::v-deep button {\\n\\t\\t\\t\\theight: 30px !important;\\n\\t\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\t\\twidth: 30px !important;\\n\\t\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-32b8ad0a]{padding:10px 10px}section[data-v-32b8ad0a] button:disabled{cursor:default}section .additional-emails-label[data-v-32b8ad0a]{display:block;margin-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue\"],\"names\":[],\"mappings\":\"AAoMA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.additional-emails-label {\\n\\t\\tdisplay: block;\\n\\t\\tmargin-top: 16px;\\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, \".headline[data-v-64e0e0bd]{display:grid;align-items:center}.headline input[data-v-64e0e0bd]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.headline .headline__actions-container[data-v-64e0e0bd]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.headline .headline__actions-container .icon-checkmark[data-v-64e0e0bd],.headline .headline__actions-container .icon-error[data-v-64e0e0bd]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-64e0e0bd],.fade-leave-to[data-v-64e0e0bd]{opacity:0}.fade-enter-active[data-v-64e0e0bd]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-64e0e0bd]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue\"],\"names\":[],\"mappings\":\"AAyHA,2BACC,YAAA,CACA,kBAAA,CAEA,iCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,wDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4IAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.headline {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.headline__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-187bb5da]{padding:10px 10px}section[data-v-187bb5da] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".language[data-v-5396d706]{display:grid}.language select[data-v-5396d706]{width:100%;height:34px;margin:3px 3px 3px 0;padding:6px 16px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background:var(--icon-triangle-s-000) no-repeat right 4px center;font-family:var(--font-face);appearance:none;cursor:pointer}.language a[data-v-5396d706]{color:var(--color-main-text);text-decoration:none;width:max-content}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue\"],\"names\":[],\"mappings\":\"AA+IA,2BACC,YAAA,CAEA,kCACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,gBAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,gEAAA,CACA,4BAAA,CACA,eAAA,CACA,cAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.language {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 6px 16px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tappearance: none;\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\ttext-decoration: none;\\n\\t\\twidth: max-content;\\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, \"section[data-v-16883898]{padding:10px 10px}section[data-v-16883898] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue\"],\"names\":[],\"mappings\":\"AA2EA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".organisation[data-v-591cd6b6]{display:grid;align-items:center}.organisation input[data-v-591cd6b6]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.organisation .organisation__actions-container[data-v-591cd6b6]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.organisation .organisation__actions-container .icon-checkmark[data-v-591cd6b6],.organisation .organisation__actions-container .icon-error[data-v-591cd6b6]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-591cd6b6],.fade-leave-to[data-v-591cd6b6]{opacity:0}.fade-enter-active[data-v-591cd6b6]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-591cd6b6]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue\"],\"names\":[],\"mappings\":\"AAyHA,+BACC,YAAA,CACA,kBAAA,CAEA,qCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4JAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.organisation {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.organisation__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-43146ff7]{padding:10px 10px}section[data-v-43146ff7] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AA4DA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nhtml {\\n\\tscroll-behavior: smooth;\\n\\n\\t@media screen and (prefers-reduced-motion: reduce) {\\n\\t\\tscroll-behavior: auto;\\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, \"a[data-v-73817e9f]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-73817e9f]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-73817e9f]:hover,a[data-v-73817e9f]:focus,a[data-v-73817e9f]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-73817e9f]{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AAsEA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\na {\\n\\tdisplay: block;\\n\\theight: 44px;\\n\\twidth: 290px;\\n\\tline-height: 44px;\\n\\tpadding: 0 16px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-pill);\\n\\topacity: 0.4;\\n\\tbackground-color: transparent;\\n\\n\\t.anchor-icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-top: 6px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8;\\n\\t\\tbackground-color: rgba(127, 127, 127, .25);\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tpointer-events: none;\\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, \".preview-card[data-v-79bf7437]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:hover,.preview-card[data-v-79bf7437]:focus,.preview-card[data-v-79bf7437]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-79bf7437]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-79bf7437],.preview-card.disabled[data-v-79bf7437] *{cursor:default}.preview-card__avatar[data-v-79bf7437]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-79bf7437]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-79bf7437],.preview-card__footer[data-v-79bf7437]{position:relative;width:auto}.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-79bf7437]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0}.preview-card__header span[data-v-79bf7437]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-79bf7437]{height:46px}.preview-card__footer span[data-v-79bf7437]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue\"],\"names\":[],\"mappings\":\"AA6FA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.preview-card {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\twidth: 290px;\\n\\theight: 116px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-large);\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-weight: bold;\\n\\tbox-shadow: 0 2px 9px var(--color-box-shadow);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbox-shadow: 0 2px 12px var(--color-box-shadow);\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: var(--color-main-text) solid 1px;\\n\\t\\toutline-offset: 3px;\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tbox-shadow: 0 0 3px var(--color-box-shadow);\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t// Override Avatar component position to fix positioning on rerender\\n\\t\\tposition: absolute !important;\\n\\t\\ttop: 40px;\\n\\t\\tleft: 18px;\\n\\t\\tz-index: 1;\\n\\n\\t\\t&:not(.avatardiv--unknown) {\\n\\t\\t\\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 78px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tword-break: break-all;\\n\\n\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\theight: 70px;\\n\\t\\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\\n\\n\\t\\tspan {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: 0 4px 8px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\theight: 46px;\\n\\n\\t\\tspan {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 4px 4px 0 0;\\n\\t\\t\\tline-height: 1.3;\\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, \"section[data-v-252753e6]{padding:10px 10px}section[data-v-252753e6] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue\"],\"names\":[],\"mappings\":\"AAkGA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \"section[data-v-16df62f8]{padding:30px;max-width:100vw}section em[data-v-16df62f8]{display:block;margin:16px 0}section em.disabled[data-v-16df62f8]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-16df62f8],section em.disabled[data-v-16df62f8] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-16df62f8]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-16df62f8]{width:940px}section .visibility-dropdowns[data-v-16df62f8]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-16df62f8]{width:470px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue\"],\"names\":[],\"mappings\":\"AAyHA,yBACC,YAAA,CACA,eAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA3BD,yBA4BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BAnCD,yBAoCE,WAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 30px;\\n\\tmax-width: 100vw;\\n\\n\\tem {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 16px 0;\\n\\n\\t\\t&.disabled {\\n\\t\\t\\tfilter: grayscale(1);\\n\\t\\t\\topacity: 0.5;\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\t& *,\\n\\t\\t\\t&::v-deep * {\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.visibility-dropdowns {\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 10px 40px;\\n\\t}\\n\\n\\t@media (min-width: 1200px) {\\n\\t\\twidth: 940px;\\n\\n\\t\\t.visibility-dropdowns {\\n\\t\\t\\tgrid-auto-flow: column;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 1200px) {\\n\\t\\twidth: 470px;\\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, \".visibility-container[data-v-4643b0e2]{display:flex;width:max-content}.visibility-container.disabled[data-v-4643b0e2]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-4643b0e2],.visibility-container.disabled[data-v-4643b0e2] *{cursor:default;pointer-events:none}.visibility-container label[data-v-4643b0e2]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__multiselect[data-v-4643b0e2]{width:260px;max-width:40vw}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue\"],\"names\":[],\"mappings\":\"AAwJA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,oDACC,WAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.visibility-container {\\n\\tdisplay: flex;\\n\\twidth: max-content;\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\twidth: 150px;\\n\\t\\tline-height: 50px;\\n\\t}\\n\\n\\t&__multiselect {\\n\\t\\twidth: 260px;\\n\\t\\tmax-width: 40vw;\\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, \".role[data-v-aac18396]{display:grid;align-items:center}.role input[data-v-aac18396]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.role .role__actions-container[data-v-aac18396]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.role .role__actions-container .icon-checkmark[data-v-aac18396],.role .role__actions-container .icon-error[data-v-aac18396]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-aac18396],.fade-leave-to[data-v-aac18396]{opacity:0}.fade-enter-active[data-v-aac18396]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-aac18396]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue\"],\"names\":[],\"mappings\":\"AAyHA,uBACC,YAAA,CACA,kBAAA,CAEA,6BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4HAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.role {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.role__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\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, \"section[data-v-f3d959c2]{padding:10px 10px}section[data-v-f3d959c2] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\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, \".federation-actions[data-v-b51d8bee],.federation-actions--additional[data-v-b51d8bee]{opacity:.4 !important}.federation-actions[data-v-b51d8bee]:hover,.federation-actions[data-v-b51d8bee]:focus,.federation-actions[data-v-b51d8bee]:active,.federation-actions--additional[data-v-b51d8bee]:hover,.federation-actions--additional[data-v-b51d8bee]:focus,.federation-actions--additional[data-v-b51d8bee]:active{opacity:.8 !important}.federation-actions--additional[data-v-b51d8bee] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue\"],\"names\":[],\"mappings\":\"AAsLA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.federation-actions,\\n.federation-actions--additional {\\n\\topacity: 0.4 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8 !important;\\n\\t}\\n}\\n\\n.federation-actions--additional {\\n\\t&::v-deep button {\\n\\t\\t// TODO remove this hack\\n\\t\\tpadding-bottom: 7px;\\n\\t\\theight: 30px !important;\\n\\t\\tmin-height: 30px !important;\\n\\t\\twidth: 30px !important;\\n\\t\\tmin-width: 30px !important;\\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, \".federation-actions__btn[data-v-d2e8b360] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d2e8b360]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue\"],\"names\":[],\"mappings\":\"AA0FC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.federation-actions__btn {\\n\\t&::v-deep p {\\n\\t\\twidth: 150px !important;\\n\\t\\tpadding: 8px 0 !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\tfont-size: 12.8px !important;\\n\\t\\tline-height: 1.5em !important;\\n\\t}\\n}\\n\\n.federation-actions__btn--active {\\n\\tbackground-color: var(--color-primary-light) !important;\\n\\tbox-shadow: inset 2px 0 var(--color-primary) !important;\\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, \"h3[data-v-19038f0c]{display:inline-flex;width:100%;margin:12px 0 0 0;font-size:16px;color:var(--color-text-light)}h3.profile-property[data-v-19038f0c]{height:38px}h3.setting-property[data-v-19038f0c]{height:32px}h3 label[data-v-19038f0c]{cursor:pointer}.federation-control[data-v-19038f0c]{margin:-12px 0 0 8px}.button-vue[data-v-19038f0c]{margin:-6px 0 0 auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue\"],\"names\":[],\"mappings\":\"AA0HA,oBACC,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAEA,qCACC,WAAA,CAGD,qCACC,WAAA,CAGD,0BACC,cAAA,CAIF,qCACC,oBAAA,CAGD,6BACC,+BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nh3 {\\n\\tdisplay: inline-flex;\\n\\twidth: 100%;\\n\\tmargin: 12px 0 0 0;\\n\\tfont-size: 16px;\\n\\tcolor: var(--color-text-light);\\n\\n\\t&.profile-property {\\n\\t\\theight: 38px;\\n\\t}\\n\\n\\t&.setting-property {\\n\\t\\theight: 32px;\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n.federation-control {\\n\\tmargin: -12px 0 0 8px;\\n}\\n\\n.button-vue {\\n\\tmargin: -6px 0 0 auto !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4418;","__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\t4418: 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__(29875); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","PROFILE_READABLE_ENUM","PROFILE_VISIBILITY","PROPERTY_READABLE_KEYS_ENUM","ACCOUNT_SETTING_PROPERTY_ENUM","LANGUAGE","ACCOUNT_SETTING_PROPERTY_READABLE_ENUM","SCOPE_ENUM","PRIVATE","LOCAL","FEDERATED","PUBLISHED","PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM","UNPUBLISHED_READABLE_PROPERTIES","SCOPE_SUFFIX","SCOPE_PROPERTY_ENUM","name","displayName","tooltip","tooltipDisabled","iconClass","DEFAULT_ADDITIONAL_EMAIL_SCOPE","VERIFICATION_ENUM","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","VALIDATE_EMAIL_REGEX","savePrimaryAccountProperty","accountProperty","value","userId","getCurrentUser","uid","url","generateOcsUrl","confirmPassword","axios","key","res","data","savePrimaryAccountPropertyScope","scope","validateStringInput","input","validateEmail","test","slice","length","encodeURIComponent","replace","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","domProps","on","onDisplayNameChange","_v","_e","class","activeScope","isSupportedScope","$event","stopPropagation","preventDefault","updateScope","apply","arguments","_s","additional","ariaLabel","scopeIcon","disabled","_l","federationScope","changeScope","supportedScopes","includes","isSettingProperty","isProfileProperty","labelFor","localScope","onScopeChange","isEditable","isMultiValueSupported","isValidSection","onAddAdditional","scopedSlots","_u","fn","proxy","displayNameChangeSupported","primaryDisplayName","$set","savePrimaryEmail","email","saveAdditionalEmail","saveNotificationEmail","removeAdditionalEmail","collection","updateAdditionalEmail","prevEmail","newEmail","savePrimaryEmailScope","saveAdditionalEmailScope","collectionScope","ref","inputId","inputPlaceholder","onEmailChange","primary","federationDisabled","deleteEmailLabel","deleteDisabled","deleteEmail","isNotificationEmail","setNotificationMailLabel","setNotificationMailDisabled","setNotificationMail","primaryEmail","onAddAdditionalEmail","notificationEmail","onUpdateEmail","onUpdateNotificationEmail","additionalEmails","additionalEmail","index","parseInt","locallyVerified","onDeleteAdditionalEmail","code","undefined","onLanguageChange","commonLanguage","language","otherLanguage","commonLanguages","otherLanguages","_g","$listeners","profileEnabled","onEnableProfileChange","profilePageLink","organisation","onOrganisationChange","primaryOrganisation","role","onRoleChange","primaryRole","headline","onHeadlineChange","primaryHeadline","biography","onBiographyChange","primaryBiography","saveProfileParameterVisibility","paramId","visibility","VISIBILITY_ENUM","SHOW","SHOW_USERS_ONLY","HIDE","VISIBILITY_PROPERTY_ENUM","label","displayId","visibilityOptions","visibilityObject","onVisibilityChange","style","marginLeft","heading","gridTemplateRows","rows","param","id","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","loadState","Vue","props","logger","methods","DisplayNameView","DisplayNameSection","EmailView","EmailSection","LanguageView","LanguageSection","$mount","ProfileView","ProfileSection","OrganisationView","OrganisationSection","RoleView","RoleSection","HeadlineView","HeadlineSection","BiographyView","BiographySection","ProfileVisibilityView","ProfileVisibilitySection","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index 2d2cbdb1d8f..1e098d080f2 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -220,7 +220,7 @@ OC.L10N.register(
"Cannot create \"data\" directory." : "Невозможно создать каталог «data».",
"This can usually be fixed by giving the web server write access to the root directory. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в корневой каталог. Обратитесь к %s",
"Permissions can usually be fixed by giving the web server write access to the root directory. See %s." : "Разрешения обычно можно исправить, предоставив веб-серверу право на запись в корневой каталог. Обратитесь к %s.",
- "Your data directory is not writable." : "Каталог данных не доступен для записи.",
+ "Your data directory is not writable." : "Каталог данных недоступен для записи.",
"Setting locale to %s failed." : "Не удалось настроить локаль %s.",
"Please install one of these locales on your system and restart your web server." : "Установите один из этих языковых пакетов и перезапустите веб-сервер.",
"PHP module %s not installed." : "Не установлен PHP-модуль %s.",
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index 9e6fdb6538e..62223ba0d45 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -218,7 +218,7 @@
"Cannot create \"data\" directory." : "Невозможно создать каталог «data».",
"This can usually be fixed by giving the web server write access to the root directory. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в корневой каталог. Обратитесь к %s",
"Permissions can usually be fixed by giving the web server write access to the root directory. See %s." : "Разрешения обычно можно исправить, предоставив веб-серверу право на запись в корневой каталог. Обратитесь к %s.",
- "Your data directory is not writable." : "Каталог данных не доступен для записи.",
+ "Your data directory is not writable." : "Каталог данных недоступен для записи.",
"Setting locale to %s failed." : "Не удалось настроить локаль %s.",
"Please install one of these locales on your system and restart your web server." : "Установите один из этих языковых пакетов и перезапустите веб-сервер.",
"PHP module %s not installed." : "Не установлен PHP-модуль %s.",
diff --git a/lib/private/AppFramework/Bootstrap/Coordinator.php b/lib/private/AppFramework/Bootstrap/Coordinator.php
index b6378830732..3ab6ac4c8b0 100644
--- a/lib/private/AppFramework/Bootstrap/Coordinator.php
+++ b/lib/private/AppFramework/Bootstrap/Coordinator.php
@@ -151,7 +151,7 @@ class Coordinator {
*/
$this->registrationContext->delegateCapabilityRegistrations($apps);
$this->registrationContext->delegateCrashReporterRegistrations($apps, $this->registry);
- $this->registrationContext->delegateDashboardPanelRegistrations($apps, $this->dashboardManager);
+ $this->registrationContext->delegateDashboardPanelRegistrations($this->dashboardManager);
$this->registrationContext->delegateEventListenerRegistrations($this->eventDispatcher);
$this->registrationContext->delegateContainerRegistrations($apps);
$this->registrationContext->delegateMiddlewareRegistrations($apps);
diff --git a/lib/private/AppFramework/Bootstrap/RegistrationContext.php b/lib/private/AppFramework/Bootstrap/RegistrationContext.php
index 7b4d24036e8..8f6aff228e1 100644
--- a/lib/private/AppFramework/Bootstrap/RegistrationContext.php
+++ b/lib/private/AppFramework/Bootstrap/RegistrationContext.php
@@ -475,10 +475,10 @@ class RegistrationContext {
/**
* @param App[] $apps
*/
- public function delegateDashboardPanelRegistrations(array $apps, IManager $dashboardManager): void {
+ public function delegateDashboardPanelRegistrations(IManager $dashboardManager): void {
while (($panel = array_shift($this->dashboardPanels)) !== null) {
try {
- $dashboardManager->lazyRegisterWidget($panel->getService());
+ $dashboardManager->lazyRegisterWidget($panel->getService(), $panel->getAppId());
} catch (Throwable $e) {
$appId = $panel->getAppId();
$this->logger->error("Error during dashboard registration of $appId: " . $e->getMessage(), [
diff --git a/lib/private/Dashboard/Manager.php b/lib/private/Dashboard/Manager.php
index a77c389cdeb..6a8348ff88f 100644
--- a/lib/private/Dashboard/Manager.php
+++ b/lib/private/Dashboard/Manager.php
@@ -27,11 +27,12 @@ declare(strict_types=1);
namespace OC\Dashboard;
use InvalidArgumentException;
-use OCP\AppFramework\QueryException;
+use OCP\App\IAppManager;
use OCP\Dashboard\IManager;
use OCP\Dashboard\IWidget;
use OCP\ILogger;
-use OCP\IServerContainer;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\ContainerInterface;
use Throwable;
class Manager implements IManager {
@@ -42,10 +43,10 @@ class Manager implements IManager {
/** @var IWidget[] */
private $widgets = [];
- /** @var IServerContainer */
- private $serverContainer;
+ private ContainerInterface $serverContainer;
+ private ?IAppManager $appManager = null;
- public function __construct(IServerContainer $serverContainer) {
+ public function __construct(ContainerInterface $serverContainer) {
$this->serverContainer = $serverContainer;
}
@@ -57,17 +58,25 @@ class Manager implements IManager {
$this->widgets[$widget->getId()] = $widget;
}
- public function lazyRegisterWidget(string $widgetClass): void {
- $this->lazyWidgets[] = $widgetClass;
+ public function lazyRegisterWidget(string $widgetClass, string $appId): void {
+ $this->lazyWidgets[] = ['class' => $widgetClass, 'appId' => $appId];
}
public function loadLazyPanels(): void {
- $classes = $this->lazyWidgets;
- foreach ($classes as $class) {
+ if ($this->appManager === null) {
+ $this->appManager = $this->serverContainer->get(IAppManager::class);
+ }
+ $services = $this->lazyWidgets;
+ foreach ($services as $service) {
+ /** @psalm-suppress InvalidCatch */
try {
+ if (!$this->appManager->isEnabledForUser($service['appId'])) {
+ // all apps are registered, but some may not be enabled for the user
+ continue;
+ }
/** @var IWidget $widget */
- $widget = $this->serverContainer->query($class);
- } catch (QueryException $e) {
+ $widget = $this->serverContainer->get($service['class']);
+ } catch (ContainerExceptionInterface $e) {
/*
* There is a circular dependency between the logger and the registry, so
* we can not inject it. Thus the static call.
diff --git a/lib/private/Encryption/HookManager.php b/lib/private/Encryption/HookManager.php
index a2d6b990a88..5081bcccf94 100644
--- a/lib/private/Encryption/HookManager.php
+++ b/lib/private/Encryption/HookManager.php
@@ -25,39 +25,51 @@ namespace OC\Encryption;
use OC\Files\Filesystem;
use OC\Files\View;
+use OC\Files\SetupManager;
use Psr\Log\LoggerInterface;
class HookManager {
- /**
- * @var Update
- */
- private static $updater;
+ private static ?Update $updater = null;
- public static function postShared($params) {
+ public static function postShared($params): void {
self::getUpdate()->postShared($params);
}
- public static function postUnshared($params) {
- self::getUpdate()->postUnshared($params);
+ public static function postUnshared($params): void {
+ // In case the unsharing happens in a background job, we don't have
+ // a session and we load instead the user from the UserManager
+ $path = Filesystem::getPath($params['fileSource']);
+ $owner = Filesystem::getOwner($path);
+ self::getUpdate($owner)->postUnshared($params);
}
- public static function postRename($params) {
+ public static function postRename($params): void {
self::getUpdate()->postRename($params);
}
- public static function postRestore($params) {
+ public static function postRestore($params): void {
self::getUpdate()->postRestore($params);
}
- /**
- * @return Update
- */
- private static function getUpdate() {
+ private static function getUpdate(?string $owner = null): Update {
if (is_null(self::$updater)) {
$user = \OC::$server->getUserSession()->getUser();
+ if (!$user && $owner) {
+ $user = \OC::$server->getUserManager()->get($owner);
+ }
+ if (!$user) {
+ throw new \Exception("Inconsistent data, File unshared, but owner not found. Should not happen");
+ }
+
$uid = '';
if ($user) {
$uid = $user->getUID();
}
+
+ $setupManager = \OC::$server->get(SetupManager::class);
+ if (!$setupManager->isSetupComplete($user)) {
+ $setupManager->setupForUser($user);
+ }
+
self::$updater = new Update(
new View(),
new Util(
diff --git a/lib/private/Log.php b/lib/private/Log.php
index 0415967f0f0..95e0a833b66 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -15,6 +15,7 @@ declare(strict_types=1);
* @author Olivier Paroz <github@oparoz.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Victor Dubiniuk <dubiniuk@owncloud.com>
*
@@ -207,11 +208,11 @@ class Log implements ILogger, IDataLogger {
array_walk($context, [$this->normalizer, 'format']);
$app = $context['app'] ?? 'no app in context';
- $message = $this->interpolateMessage($context, $message);
+ $entry = $this->interpolateMessage($context, $message);
try {
if ($level >= $minLevel) {
- $this->writeLog($app, $message, $level);
+ $this->writeLog($app, $entry, $level);
if ($this->crashReporters !== null) {
$messageContext = array_merge(
@@ -220,11 +221,11 @@ class Log implements ILogger, IDataLogger {
'level' => $level
]
);
- $this->crashReporters->delegateMessage($message, $messageContext);
+ $this->crashReporters->delegateMessage($entry['message'], $messageContext);
}
} else {
if ($this->crashReporters !== null) {
- $this->crashReporters->delegateBreadcrumb($message, 'log', $context);
+ $this->crashReporters->delegateBreadcrumb($entry['message'], 'log', $context);
}
}
} catch (\Throwable $e) {
@@ -315,8 +316,11 @@ class Log implements ILogger, IDataLogger {
$this->error("Failed to load ExceptionSerializer serializer while trying to log " . $exception->getMessage());
return;
}
- $data = $serializer->serializeException($exception);
- $data['CustomMessage'] = $this->interpolateMessage($context, $context['message'] ?? '--');
+ $data = $context;
+ unset($data['app']);
+ unset($data['level']);
+ $data = array_merge($serializer->serializeException($exception), $data);
+ $data = $this->interpolateMessage($data, $context['message'] ?? '--', 'CustomMessage');
$minLevel = $this->getLogLevel($context);
@@ -381,16 +385,20 @@ class Log implements ILogger, IDataLogger {
/**
* Interpolate $message as defined in PSR-3
*
- * @param array $context
- * @param string $message
- *
- * @return string
+ * Returns an array containing the context without the interpolated
+ * parameters placeholders and the message as the 'message' - or
+ * user-defined - key.
*/
- private function interpolateMessage(array $context, string $message): string {
+ private function interpolateMessage(array $context, string $message, string $messageKey = 'message'): array {
$replace = [];
+ $usedContextKeys = [];
foreach ($context as $key => $val) {
- $replace['{' . $key . '}'] = $val;
+ $fullKey = '{' . $key . '}';
+ $replace[$fullKey] = $val;
+ if (strpos($message, $fullKey) !== false) {
+ $usedContextKeys[$key] = true;
+ }
}
- return strtr($message, $replace);
+ return array_merge(array_diff_key($context, $usedContextKeys), [$messageKey => strtr($message, $replace)]);
}
}
diff --git a/lib/private/Log/LogDetails.php b/lib/private/Log/LogDetails.php
index 3353ea3f4cc..b3544572708 100644
--- a/lib/private/Log/LogDetails.php
+++ b/lib/private/Log/LogDetails.php
@@ -5,6 +5,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license GNU AGPL version 3 or any later version
*
@@ -90,8 +91,9 @@ abstract class LogDetails {
$entry['exception'] = $message;
$entry['message'] = $message['CustomMessage'] !== '--' ? $message['CustomMessage'] : $message['Message'];
} else {
- $entry['data'] = $message;
$entry['message'] = $message['message'] ?? '(no message provided)';
+ unset($message['message']);
+ $entry['data'] = $message;
}
}
diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php
index f9985bc299d..2edea868ed0 100644
--- a/lib/private/Preview/Generator.php
+++ b/lib/private/Preview/Generator.php
@@ -263,7 +263,7 @@ class Generator {
continue;
}
- $preview = $this->helper->getThumbnail($provider, $file, 256, 256, true);
+ $preview = $this->helper->getThumbnail($provider, $file, 256, 256, $crop);
if (!($preview instanceof IImage)) {
continue;
diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php
index a9464c27085..1470409c862 100644
--- a/lib/private/User/Database.php
+++ b/lib/private/User/Database.php
@@ -215,6 +215,10 @@ class Database extends ABackend implements
* Change the display name of a user
*/
public function setDisplayName(string $uid, string $displayName): bool {
+ if (mb_strlen($displayName) > 64) {
+ return false;
+ }
+
$this->fixDI();
if ($this->userExists($uid)) {
diff --git a/lib/public/Dashboard/IManager.php b/lib/public/Dashboard/IManager.php
index 396624876ef..d9e73c89eb9 100644
--- a/lib/public/Dashboard/IManager.php
+++ b/lib/public/Dashboard/IManager.php
@@ -36,7 +36,7 @@ interface IManager {
* @param string $widgetClass
* @since 20.0.0
*/
- public function lazyRegisterWidget(string $widgetClass): void;
+ public function lazyRegisterWidget(string $widgetClass, string $appId): void;
/**
* @since 20.0.0
diff --git a/tests/acceptance/run-local.sh b/tests/acceptance/run-local.sh
index 4da31e35e6c..36932851e7c 100755
--- a/tests/acceptance/run-local.sh
+++ b/tests/acceptance/run-local.sh
@@ -64,7 +64,7 @@ if [ "$1" = "--acceptance-tests-dir" ]; then
fi
ACCEPTANCE_TESTS_CONFIG_DIR="../../$ACCEPTANCE_TESTS_DIR/config"
-DEV_BRANCH="master"
+DEV_BRANCH="stable24"
# "--timeout-multiplier N" option can be provided to set the timeout multiplier
# to be used in ActorContext.
diff --git a/tests/lib/Log/FileTest.php b/tests/lib/Log/FileTest.php
index 937b3c75448..703c4280f24 100644
--- a/tests/lib/Log/FileTest.php
+++ b/tests/lib/Log/FileTest.php
@@ -1,6 +1,8 @@
<?php
/**
*
+ * @author Thomas Citharel <nextcloud@tcit.fr>
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
@@ -18,6 +20,7 @@
namespace Test\Log;
use OC\Log\File;
+use OCP\IConfig;
use OCP\ILogger;
use Test\TestCase;
@@ -36,7 +39,7 @@ class FileTest extends TestCase {
$config = \OC::$server->getSystemConfig();
$this->restore_logfile = $config->getValue("logfile");
$this->restore_logdateformat = $config->getValue('logdateformat');
-
+
$config->setValue("logfile", $config->getValue('datadirectory') . "/logtest.log");
$this->logFile = new File($config->getValue('datadirectory') . '/logtest.log', '', $config);
}
@@ -55,7 +58,28 @@ class FileTest extends TestCase {
$this->logFile = new File($this->restore_logfile, '', $config);
parent::tearDown();
}
-
+
+ public function testLogging() {
+ $config = \OC::$server->get(IConfig::class);
+ # delete old logfile
+ unlink($config->getSystemValue('logfile'));
+
+ # set format & write log line
+ $config->setSystemValue('logdateformat', 'u');
+ $this->logFile->write('code', ['something' => 'extra', 'message' => 'Testing logging'], ILogger::ERROR);
+
+ # read log line
+ $handle = @fopen($config->getSystemValue('logfile'), 'r');
+ $line = fread($handle, 1000);
+ fclose($handle);
+
+ # check log has data content
+ $values = (array) json_decode($line, true);
+ $this->assertArrayNotHasKey('message', $values['data']);
+ $this->assertEquals('extra', $values['data']['something']);
+ $this->assertEquals('Testing logging', $values['message']);
+ }
+
public function testMicrosecondsLogTimestamp() {
$config = \OC::$server->getConfig();
# delete old logfile
@@ -69,7 +93,7 @@ class FileTest extends TestCase {
$handle = @fopen($config->getSystemValue('logfile'), 'r');
$line = fread($handle, 1000);
fclose($handle);
-
+
# check timestamp has microseconds part
$values = (array) json_decode($line);
$microseconds = $values['time'];
diff --git a/tests/lib/LoggerTest.php b/tests/lib/LoggerTest.php
index 9b44fe198e2..bec2119a8ad 100644
--- a/tests/lib/LoggerTest.php
+++ b/tests/lib/LoggerTest.php
@@ -1,6 +1,9 @@
<?php
/**
* Copyright (c) 2014 Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @author Thomas Citharel <nextcloud@tcit.fr>
+ *
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
@@ -9,29 +12,32 @@
namespace Test;
use OC\Log;
+use OC\SystemConfig;
use OCP\ILogger;
use OCP\Log\IWriter;
+use OCP\Support\CrashReport\IRegistry;
+use PHPUnit\Framework\MockObject\MockObject;
class LoggerTest extends TestCase implements IWriter {
- /** @var \OC\SystemConfig|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var SystemConfig|MockObject */
private $config;
- /** @var \OCP\Support\CrashReport\IRegistry|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IRegistry|MockObject */
private $registry;
- /** @var \OCP\ILogger */
+ /** @var ILogger */
private $logger;
/** @var array */
- private $logs = [];
+ private array $logs = [];
protected function setUp(): void {
parent::setUp();
$this->logs = [];
- $this->config = $this->createMock(\OC\SystemConfig::class);
- $this->registry = $this->createMock(\OCP\Support\CrashReport\IRegistry::class);
+ $this->config = $this->createMock(SystemConfig::class);
+ $this->registry = $this->createMock(IRegistry::class);
$this->logger = new Log($this, $this->config, null, $this->registry);
}
@@ -63,12 +69,23 @@ class LoggerTest extends TestCase implements IWriter {
$this->assertEquals($expected, $this->getLogs());
}
- private function getLogs() {
+ public function testLoggingWithDataArray(): void {
+ $writerMock = $this->createMock(IWriter::class);
+ $logFile = new Log($writerMock, $this->config);
+ $writerMock->expects($this->once())->method('write')->with('no app in context', ['something' => 'extra', 'message' => 'Testing logging with john']);
+ $logFile->error('Testing logging with {user}', ['something' => 'extra', 'user' => 'john']);
+ }
+
+ private function getLogs(): array {
return $this->logs;
}
public function write(string $app, $message, int $level) {
- $this->logs[] = "$level $message";
+ $textMessage = $message;
+ if (is_array($message)) {
+ $textMessage = $message['message'];
+ }
+ $this->logs[] = $level . " " . $textMessage;
}
public function userAndPasswordData(): array {